[블루투스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
'아두이노' 카테고리의 다른 글
BMP180 : 고도센서, 기압센서, 온도센서 아두이노 실습코드 (0) | 2019.03.27 |
---|---|
안드로이드 스튜디오 3.1 Configuration~ 경고 제거법-compile, implementation, api (0) | 2019.03.04 |
Build errors after Android Studio 3.2.1 upgrade 에러- com.android.tools.build:aapt2:3.2.1-4818971 (0) | 2019.03.03 |
HM-10 BLE 모듈 사용 스마트폰으로 데이터 주기적으로 송신하기 (0) | 2019.02.26 |
아두이노 나노 스마트폰과 HM-10 연동하기 1 - 초기 설정 (2) | 2019.02.25 |