본문 바로가기

아두이노

블루투스4.0 BLE 모듈 HM-10 Module 사용법(AT 커맨드 포함)

반응형


[블루투스4.0 BLE]HM-10 Module 사용법(AT 커맨드 포함)


HM-10 데이터 시트의 내용 중 일부를 발췌한 것입니다. 보다 자세한 내용은 데이터 시트를 참고하세요.


1. HM-10 사양



● 버전 : Bluetooth V4.0 BLE

● 대역폭 : 2.4GHz ISM band

● 신호 세기 : -23dbm, -6dbm, 0dbm, 6dbm

● 전송 속도 : 6K Bytes

● 서비스 : Central & Peripheral UUID FFE0,FFE1

● 동작 사양 : +3.3VDC 50mA   (Active mode : 8.5mA) (Sleep mode : 400uA~1.5mA)

● 전송거리 : 최대 약 100m (기기에 따라서 상이함)


2. 모듈 주요 핀



Pin. 1 : UART_TX

Pin. 2 : UART_RX

Pin. 12 : Vcc(3.3V)

Pin. 13,14,21,22 : Ground

Pin. 23 : System Key

Pin. 24 : System LED

Pin. 25 ~ 32 : 입출력(I/O)포트


3. 시스템기능


- Sleep 모드에서 Active모드로 전환(Wake up)하는 방법

① 80단어 이상의 메시지 전송

② System Key 버튼을 1초이상 누르기

- System Key (Pin.23) : 버튼을 1초이상 누를 때

①Sleep 모드인 경우 Active모드로 전환(Wake up)

   (AT+NOTI1로 설정되어있을 때)

②원격장비와 연결되었을 때 연결 해지

③모듈이 Standby mode일 때 default 상태로 리셋 후 재시작

- System LED (Pin.24) : AT+PIO10 명령어 실행 후

① Unconnected status : 0.5s 간격으로 점등

② Connected status : 점등

-시스템 동작 모드

① Mode 0 (Transmission mode)

: UART통신으로 데이터 전송, AT 커맨드 사용 가능

 단, 블루투스로 연결된 외부장비와의 AT 커맨드는 사용 불가(데이터 전송만 가능)

② Mode 1 (PIO acquisition mode)

: UART통신으로 데이터 전송, AT 커맨드 사용 가능

+ 블루투스로 연결된 외부장비로부터 AT 커맨드 사용가능

+ 2개의 Output state핀, 8개의 Input state핀 사용가능

③ Mode 2 (Remote control mode)

: UART통신으로 데이터 전송, AT 커맨드 사용 가능

+ 블루투스로 연결된 외부장비로부터 AT 커맨드 사용가능

+ 10개의 Output state핀 사용가능


-  HM-10 초기 세팅 값(default setting)

●Name : HMSoft

●Baud rate : 9600

●패리티 비트 : 0

●전송 비트 : 8

●Stop 비트 : 1

●비밀번호(Pin code) : 000000


4. AT 커맨드


- AT 명령어 사용 방법.

AT 명령어(AT Command)는 Serial 통신으로 사용되며 일반적으로 컴퓨터에서는 Hyperterminal, ComPortMaster와 같은 통신 프로그램, 마이크로 컨트롤러(MCU)에서는 UART통신 등으로 사용이 가능합니다.

 HM-10의 경우 제조사에서 제공하는 HMComAssistant.exe 프로그램으로 사용가능하며 제조사 홈페이지(www.jnhuamao.cn)에서 다운받을 수 있습니다.(게시글에 .exe파일을 첨부하였습니다.)

입력방법 : 'AT+[명령어]' 를 수신

수신 완료 후, 수신 명령어에 해당하는 응답을 모듈로부터 송신받음


예시) 

AT 보내면 응답 OK 문자 날라 옴

⇒OK


- 기본 모듈 값, 기능 확인/설정과 관련된 명령어 모음

(설정 완료 후 AT+RESET 시행후에 기능사용)

①모듈 주소 확인

- AT+ ADDR?

⇒OK+ADDR:[Mac Address]


②화이트리스트(whitelist) MAC address 확인/설정

- AT+AD[para1]??

⇒OK+AD[Para1]?:[Para2]

- AT+AD[Para1][Para2]

⇒OK+AD[Para1][Para2]

[Para1]: 1, 2, 3

[Para2]: MAC address

Example)

1. 화이트리스트 MAC address 1 확인하기

Send: AT+AD1??

Receive: OK+AD1001122334455 (001122334455 is MAC address)

2. 화이트리스트 MAC address 2 설정하기

Send: AT+AD2001122334455 (001122334455 is MAC address)

Receive: OK+AD2001122334455

③블루투스 기기 필터링 검색 확인/설정

- AT+FILT?

⇒ OK+ Get:[Para]

- AT+FILT[Para]

⇒ OK+ Set:[Para]

[Para]: 0, 1

0: Will find all BLE modules

1: Only find HM Modules

Default: 1

④모듈 이름 확인/설정

- AT+NAME?

⇒ OK+NAME[Para]

- AT+NAME[Para]

⇒ OK+Set[Para]

[Para]: module name, Max length is 12.

Default: HMSoft


⑤비밀번호(pin code) 확인/설정

- AT+PASS?

⇒ OK+Get:[Para]

- AT+PASS[Para]

⇒ OK+Set:[Para]

[Para] is Pin Code, 000000~999999

Default: 000000

⑥모듈 신호세기 확인/설정

- AT+POWE?

⇒OK+Get:[Para]

- AT+ POWE[Para]

⇒OK+Set:[Para]

[Para]: 0 ~ 3

0: -23dbm

1: -6dbm

2: 0dbm

3: 6dbm

Default: 2


⑦Sleep모드 설정(Peripheral 역할에서 사용)

- AT+SLEEP

⇒OK+SLEEP


⑧모듈 Sleep time 확인/설정(Peripheral 역할에서 사용)

- AT+PWRM?

⇒OK+Get:[Para]

- AT+PWRM[Para]

⇒OK+Set:[Para]

[Para]: 0~1

0:Auto sleep

1:don’t auto sleep

Default: 1


⑨모듈 재시작

- AT+RESET

⇒ OK+RESET

⑩공장초기화 상태로 모듈값 복구

- AT+RENEW

⇒ OK+RENEW

⑪System  LED 점등 관련 확인/설정

- AT+PIO1?

⇒ OK+Get:[Para]

- AT+ PIO1 [Para]

⇒ OK+Set:[Para]


Para1: 0, 1

0 : Unconnected Output 500ms High 500ms Low, Connected output High.

1 : Unconnected output Low, Connected output High.

Default: 0

⑫베터리 측정 스위치 확인/설정

- AT+BATC?

⇒OK+ Get:[para]

- AT+BATC[para]

⇒OK+ Set:[para]

[para]: 0 ~ 1

0: Off

1: On

Default: 0


⑬베터리 정보 확인

- AT+BATT?

⇒OK+BATT:[para]

[para]: 000~100

모듈이 베터리를 사용할 때 사용한다. 100% = 3V, 0% = 2V.

베터리 정보를 얻는 3가지 방법

A. 블루투스 연결 전, “AT+BATT?”  송신한다.

B. 블루투스 연결 후, Mode1 또는 Mode2 로 변경 후 원격으로 “AT+BATT?” 송신한다.

C. 베터리 정보는 Scan response 데이터 패키지에 포함된다.

⑭모듈 온도(IC 온도) 확인

- AT+TEMP?

⇒OK+Get:[para]

[para]: 000.000


-  통신 관련 데이터 확인/설정과 관련된 명령어 모음


① 모듈 동작 모드 설정

- AT+MODE?

⇒OK+Get:[Para]

- AT+MODE[Para]

⇒OK+Set:[Para]

[Para]: 0, 1, 2

0: Transmission Mode

1: PIO collection Mode + Mode 0

2: Remote Control Mode + Mode 0

Default: 0

②모듈 Master(≒ Central), Slave(≒ Peripheral) 역할 확인/설정

- AT+ROLE?

⇒ OK+Get:[Para]

- AT+ROLE[Para]

⇒ OK+Set:[Para]

[Para]: 0, 1

0: Peripheral

1: Central

Default: 0


③'Advertising' 유형 확인/설정

- AT+ADTY?

⇒OK+Get:[Para]

- AT+ADTY[Para]

⇒OK+Set:[Para]

[Para]: 0 ~ 3

0: Advertising ScanResponse, Connectable (블루투스 페어링 모드)

1: Only allow last device connect in 1.28 seconds (블루투스 페어링 모드)

2: Only allow Advertising and ScanResponse. (비콘 모드 + 스캔응답)

3: Only allow Advertising (비콘 모드)

Default: 0

④Baud Rate 확인/설정

- AT+BAUD?

⇒ OK+Get:[Para]

- AT+BAUD[Para]

⇒ OK+Set:[Para]

[Para]: Baud rate No.

0---------9600

1---------19200

2---------38400

3---------57600

4---------115200

5---------4800

6---------2400

7---------1200

8---------230400

Default: 0(9600)

(baud rate를 1200으로 설정하면 AT 명령어 사용불가→ System key를 통하여 default 상태로 변경 후 재사용)

⑤장치 이름 스캔 여부 확인/설정 (AT+FILT0 실행후 사용)

- AT+SHOW?

⇒OK+Get:[Para]

-AT+SHOW[Para]

⇒OK+Set:[Para]

Para1: 0~1

0 : Don’t show name

1 : Show name

Default: 0

(AT+SHOW1 설정시 AT+DISC? 명령어 사용하면 이름에 대한 정보가 보여진다.)


⑥'Advertising' 간격 확인/설정

- AT+ ADVI?

⇒OK+Get:[Para]

- AT+ ADVI[Para]

⇒OK+Set:[Para]

[Para]: 0 ~ F

0: 100ms

1: 152.5 ms

2: 211.25 ms

3: 318.75 ms

4: 417.5 ms

5: 546.25 ms

6: 760 ms

7: 852.5 ms

8: 1022.5 ms

9: 1285 ms

A: 2000ms

B: 3000ms

C: 4000ms

D: 5000ms

E: 6000ms

F: 7000ms

Default: 9

HMSoft Default: 0

HMSensor Default: 9

⑦모듈 동작 타입 설정(Central 역할에서 사용)

- AT+IMME?

⇒OK+ Get:[Para]

- AT+IMME[Para]

⇒OK+ Set:[Para]

[Para]: 0, 1

1: When module is powered on, only respond the AT Command, don’t do anything until AT + START is received,

or can use AT+CON, AT+CONNL

0: When power on, work immediately

Default: 0


⑧동작 명령(AT+IMME1이 설정되었을 때)

- AT+START

⇒OK+START


⑨모듈의 RSSI 값 확인(장치와 연결된 후)

- AT+RSSI?

⇒ OK+RSSI:[Para]


⑩모듈 UUID 확인/설정

-AT+UUID?

⇒OK+Get:[Para]

- AT+UUID[Para]

⇒OK+Set:[Para]

 [Para]: 0x0001~0xFFFE

Default : 0xFFE0


⑪ 모듈 Bond 모드 확인/설정 : 등록거절 메세지가 떠서 찾아보니 "HM-10 모듈에 시리얼로 연결해서 AT+TYPE3 라고 입력해서 세팅하면 연결 가능해 집니다."


- AT+TYPE?

⇒OK+Get:[para] None

- AT+TYPE[para]

⇒OK+Set:[para]

[para]: 0~3

0: Not need PIN Code

1: Pair not need PIN

2: Pair with PIN

3: Pair and bond

Default: 0


- 블루투스 연결(페어링) 기능과 관련된 명령어 모음


①장치 스캔 시작(AT+ROLE1 와 AT+IMME1 명령어 실행 후)

- AT+DISC?

⇒OK+DISC[Para]

[Para]: S, E, Address string

S: Start discovery

E: End discovery

최대 6개의 장치 주소가 검색된다.

Example)

Send: AT+DISC?

Recv: OK+DISCS

Recv: OK+DISC:123456789012 (discovered device address information)

(만약 AT+SHOW1 명령어가 실행되었다면 , 이름에 대한 정보가 추가로 송신된다.)

Recv: OK+NAME: xxx

After send Name value, will send two extra “\r\n” value ASCII byte

Recv: OK+DISC:234567890123

Recv: OK+NAME: xxx

After send Name value, will send two extra “\r\n” value ASCII byte

…..(Max results is 6, use array 0~5)

Recv: OK+DISCE

→ 명령어 실행 후 발견된 장치와 연결하는 방법 : AT+CONN0, AT+CONN1……AT+CONN5 명령어 실행

②스캔 후 발견한 장비와 연결 (AT+DISC? 실행후 사용가능)

- AT+CONN[Para1]

⇒OK+CONN[Para2]


[Para1]: 0~5

[Para2]: E, F, 0~5

E: Link error

F: Link failed

0~5: Try to connect

③주소를 통하여 장치 연결시도(Central 역할에서 사용)

- AT+CON[Address]

⇒OK+CONN[Para]

[Address] : like "0017EA090909"

[Para]: A, E, F

A: Connecting

E: Connect error

F: Connect Fail

OK+CONNA ========= Accept request, connecting

OK+CONNE ========= Connect error

OK+CONN ========= Connected, if AT+NOTI1 is setup

OK+CONNF ========= Connect Failed, After 10 seconds



④연결후 연결된 장치의 주소 저장방법 확인/설정

- AT+SAVE?

⇒OK+Get:[Para]

- AT+SAVE[Para]

⇒OK+Set:[Para]

[Para]: 0~1

0 : Save when connected

1 : Don’t Save

Default: 0

⑤마지막으로 연결했던 장치와 재연결(Central 역할에서 사용)

- AT+CONNL

⇒OK+CONN[Para]

[Para]: L, E, F, N

L: Connecting

E: Connect error

F: Connect Fail

N: No Address

(이미 다른 장치와 연결되었거나 연결해지된 경우 약 10초동안 OK+CONNN 응답)


⑥마지막으로 연결했던 장치주소 확인

- AT+RADD?

⇒ OK+RADD : [MAC Address]

⑦Mac address로 연결 시도(Central 역할에서 사용, AT+IMM1 와 AT+ROLE1 명령어 실행 후)

- AT+CO[Para1][para2][para3]

⇒OK+CONN[para1][para2][para3]

[para1]: N, 1

N: Normal address

1: Dual module address

[para2]: MAC address

Like: 0017EA090909

[para3]: A , E, F

A: Connecting

E: Connect error

F: Connect Fail

If remote device has already connected to other device or shut down, “OK+CONNF” will received after about 10 Seconds.


 ⑧Notify 모드 확인/설정

- AT+NOTP?

⇒OK+Get:[para]

- AT+NOTP[para]

⇒OK+Set:[para]

[para]:0, 1

0: Without address

1: With address

Default: 0

AT+NOTP1 실행시, 모듈이 원격 장치와 연결되었을 때, UART통신으로 “OK+CONN:001122334455”와 같은 응답을 전송한다.

여기서 “001122334455” is Central 역할장치의 Mac address이다.


 

⑨모듈 연결 원격 장치 Timeout 값 확인/설정(Central 역할에서 사용)

- AT+TCON?

⇒OK+TCON:[para]

- AT+TCON[para]

⇒OK+Set:[para]

[para]: 000000~009999

Unit: ms

모듈이 마지막으로 연결된 주소 정보를 가지고 있으면, 전원 인가 후 이 주소로 자동으로 연결을 시도한다. 설정한 시간 값을 넘었을 때, 모듈은 장치 스캔을 시작한다. '000000' 값은 연결을 시도하는것을 유지하도록 한다.



- iBeacon 기능(advertising)과 관련된 명령어 모음


①블루투스 모듈 iBeacon 모드 스위치(Peripheral 역할에서 사용)

- AT+IBEA?

⇒OK+Get:[Para]

- AT+IBEA[Para]

⇒OK+Set:[Para]

[Para]: 0, 1

0: Turn off iBeacon

1: Turn on iBeacon

Default: 0

초기 iBeacon UUID는 74278BDA-B644-4520-8F0C-720EAF059935로 주어지며 이후에 수정가능하다.

②iBeacon 전개 모드 설정

- AT+DELO[Para]

⇒OK+DELO[Para]

[Para]: 1, 2

1: Allowed to broadcast and scanning

2: Only allow broadcast

OK+DELO[Para] 응답 이후 500ms가 지나면 reset된다.

명령어 사용 후 모듈은 non-connectable status로 변경되며 다음 전원 인가시까지 지속된다.

③iBeacon 장치 검색 시작(AT+IMM1 와 AT+ROLE1 명령어 실행 후)

- AT+DISI?

⇒OK+DISCS

⇒OK+DISC: [para1]:[para2]:[para3]:[para4]:[para5]

⇒OK+DISCE

[para1]:Factory ID

[para2]:iBeacon ID

[para3] : Major 값, Minor 값, 측정 세기

[para4] : MAC

[para5] : RSSI

para1 길이 : 8

para2 길이 : 32

para3 길이 : 10

→Major 값(4), Minor 값(4), 측정 세기(2).

→장치가 비콘기능을 Enable하지 않는다면, para1, para2, para3 값은 ‘0’으로 나타난다

para4 길이 : 12

para5 길이 : 4

④iBeacon UUID 값 확인/설정

- AT+IBE0?

- AT+IBE1?

- AT+IBE2?

- AT+IBE3?

⇒OK+Get:[Para]

- AT+IBE0[Para1]

- AT+IBE1[Para2]

- AT+IBE2[Para3]

- AT+IBE3[Para4]

⇒OK+Set:[Para]

[Para1]: 00000001~FFFFFFFE

Default: 74278BDA

[Para2]: 00000001~FFFFFFFE

Default: B6444520

[Para3]: 00000001~FFFFFFFE

Default: 8F0C720E

[Para4]: 00000001~FFFFFFFE

Default: AF059935

⑤iBeacon MARJ(major) 값 확인/설정

- AT+MARJ?

⇒OK+Get:[Para]

- AT+MARJ[Para]

⇒OK+Set:[Para]

[Para]: 0x0001, 0xFFFE

Default: 0xFFE0


⑥iBeacon MINO(minor) 값 확인/설정

- AT+MINO?

⇒OK+Get:[Para]

- AT+MINO[Para]

⇒OK+Set:[Para]

[Para]: 0x0001, 0xFFFE

Default: 0xFFE1

⑦iBeacon 측정 세기 확인/설정 

- AT+MEA??

⇒OK+Get:[Para]

- AT+MEA[Para]

⇒OK+Set:[Para]


[Para]: 0x00~0xFF

Default: 0xC5



- HM-10 입출력 포트와 관련된 명령어 모음


①입출력(I/O) 상태 확인( 'High'일 때 ‘1’, 'Low'일 때 ‘0’)

- AT+COL??

⇒OK+Col:[Para]

[Para]: 0x00~0xFF

(Para1 is a byte, has 8 bits, bit 7 ~ bit 0 is map to the PIO4 ~ PIO11.)

②입출력(I/O)  입출력 값 레벨 변화 감지(수집 비율 확인/설정)

- AT+CYC??

⇒OK+ Get:[Para]

- AT+CYC[Para]

⇒OK+ Set:[Para]

[Para]: 00~99

Unit: seconds

Default: 10

Mode 1 (PIO acquisition mode)일 때 PIO 상태 변화 시 OK+Col:[xx]로 메시지 응답


③PIO 핀 출력값 확인/설정

- AT+PIO[Para1]?

⇒ OK+PIO:[Para1][Para2] 

- AT+PIO[Para1][Para2]

⇒ OK+PIO:[Para1][Para2]

Para1: 2~B

Para2: 0, 1

Para1 is which PIO pin you want to Query/Set

Value: 2,3,4,5,6,7,8,9,A,B.

Para2 is Query or setup value. 0 is low and 1 is high

④전원 인가 후 모듈의 PIO핀 출력 값 확인/설정

- AT+BEFC?

⇒OK+ Get:[para]

- AT+BEFC[para]

⇒OK+ Set:[para]

[para]: 000 ~ 3FF

Default: 000

3FF == 00111111111 (이때 MSB : PIO0, LSB : PIOB)

PIO2~PIOB 값만 설정 가능.


Example)

Set PIO2~PIOB all output high level after power supplied

Send: AT+BEFC3FF

Receive: OK+Set:3FF

When powered module next time, PIO2~PIOB will output high level

"AT+PIO??" 명령어를 통하여 PIO pins state 확인 가능. AT+MODE1 명령어 실행 후에는 사용 불가.

⑤블루투스 연결 후 모듈의 PIO핀 출력 값 확인/설정

- AT+AFTC?

⇒OK+ Get:[para]

- AT+AFTC[para]

⇒OK+ Set:[para]

[para]: 000 ~ 3FF

Default: 000

example)

Set PIO2~PIOB all output high level after connection is established

Send: AT+ATFC3FF

Receive: OK+Set:3FF

When connection is established PIO2~PIOB will output high level

"AT+PIO??" 명령어를 통하여 PIO pins state 확인 가능. AT+MODE1 명령어 실행 후에는 사용 불가.


글 참고 사이트


1. 아두이노 블루투스 4.0 BLE HM-10 모듈 / Arduino Bluetooth 4.0 BLE Module https://m.blog.naver.com/eduino/220903237343


2. HM-10 블루투스 테스트(2) https://hnydiy.tistory.com/4

3. [블루투스 4.0 Hm-10 cc2541] 아두이노 우노 R3 연결 http://blog.whoborn.net/%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4-4-0-hm-10-cc2541-%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-%EC%9A%B0%EB%85%B8-r3-%EC%97%B0%EA%B2%B0/


4. [블루투스4.0BLE]HM-10 Module 사용법(AT 커맨드 포함) http://blog.naver.com/xisaturn/220712028679



반응형