고급 예제

다양한 도구들을 가지고 마음껏 응용해보세요.

BLE 모듈-비콘 구현하기

2014-11-18 16:59:26

개요 

 

비콘(Beacon) 어떠한 신호를 알리기 위해 주기적으로 전송하는 모든 것을 의미합니다.

 

바닷가에서 선박에게 주변의 위치에 대하여 알려주는 등대나, 전쟁등의 위급한 상황을 알리는 수단으로 사용된 봉화 등도 비콘이라 할 수 있습니다.


IT 환경에서 신호를 전송하는데는 사운드 기반의 저주파, 와이파이, 블루투스, 심지어 빛을 이용한 라이팅 데이터 전송등 다양한 통신 기술을 비콘으로 사용할 수 있다. 

 



2013년 6월 애플에서 아이비콘을 공개한 이후로 BLE를 기반으로한 비콘의 활용에 많은 관심이 높아졌습니다. 



밑의 영상은 Estimote에서 만든 Estimote Beacon을 소개하는 영상입니다.

 

아이비콘을 지원하는 이 장치는 매장에서 소비자들에게 다양한 정보(상품 정보와 할인 정보 등)를 알려줍니다. (이러한점은 솔직히 사업자 입장에선 유용하지만 사용자 입장에선 좋다고만은 할수 없지만요..) 


출처 : Youtube - Estimote



실제로 MLB에서 뉴욕 Citi Field 야구장에서 아이비콘을 설치하여 소개하는 영상입니다.



출처 : Youtube - CNET
 

이번 컨텐츠에서는 HM-10 모듈을 비콘으로 세팅해보고 안드로이드를 통해 세팅한 비콘의 정보를 받아보겠습니다.

 

IOS 7.0이상 / 안드로이드 4.3버전 이상부터 가능합니다. 아이폰 사용자는 아이폰으로 사용하시면 더 좋습니다.



여러대의 안드로이드에서 하나의 비콘을 받아 올수도 있습니다.

 

미리보기 동영상



비콘 단말에서 주변에 자신의 신호 도달 거리 내로 스마트폰이 오면 자신이 갖고 있는 ID를 스마트폰으로 보냅니다.

 

스마트폰에서는 어플리케이션이 ID를 인식하여 서버로 보내면, 서버에서는 ID에 설정된 이벤트나 서비스 정보를 스마트 폰으로 전송하게 됩니다. 

 

하드웨어 Making

회로도

 

 

브레드보드 레이아웃



출처 : blueluminance

 

 

 

 

연결 사진

 

 

Beacon 설정하기

HM-10 beacon 설정 하기

HM-10을 연결 하셧으면 스케치에서 시리얼 모니터를 실행 합니다.(시리얼 포트만 맞게 열어주시면 됩니다. 따로 코딩할 필요 없이)
(밑에 설명은 간단하게 스케치에서 시리얼 포트를 열어서 하지만, hercules와 같은 시리얼 통신 프로그램을 써서 하셔도 됩니다.)


AT설정 

1. AT+RENEW 
2. AT+RESET 
3. AT Wait 
4. AT+MARJ0x1234
5. AT+MINO0xFA01
6. AT+ADVI5 
7. AT+NAMEKOCOA
8. AT+ADTY3
9. AT+IBEA1 
10.AT+DELO2
11.AT+PWRM0
12.AT+RESET

AT+PWR0과 AT+RESET 커맨드를 입력하셧으면 HM-10모듈이 auto-sleep모드로 들어갑니다. auto-sleep모드에 들어가면 AT command에 응답하지 않는 상태가 되는데, 이를 깨우기 위해서는 아무문자나 80자 이상 입력하면 됩니다. 입력하면 OK+WAKE라는 응답이 오고, AT+PWRM1 커맨드를 보내면 auto-sleep모드가 꺼집니다.
다시 auto-sleep모드 활성화 하실거면 AT+PWRM0 커맨드를 보내시면 됩니다.

위에 AT설정을 다 하셧으면 어플에서 beacon이 잡히게 됩니다.(이때는 배터리 연결을 제외한 모든 선을 빼셔도 됩니다.)
 

위 사진에서 사용한 어플은 iBeacon Scanner 어플입니다. 어플을 받아서 설치를 하면, 주변에 있는 Beacon을 검색하여 Beacon에 대한 정보를 보여줍니다.
(HM-10은 UUID가 74278bda-b644-4520-8f0c-720eaf059935 입니다. 여러개가 잡힐경우 uuid를 확인하셔서 구분해 주세요.)

AT설정 설명



1. AT+RENEW(모듈 공장 초기화합니다.) - 결과 : OK+RENEW

2. AT+RESET(BLE모듈을 리셋합니다.) - 결과 : OK+RESET 

3. AT(AT모드 응답 확인) - 결과 : OK

4. AT+MARJ0x1234(iBeacon의 Major 값을 16진수 1234로 설정합니다. 원하는 값을 넣으시면됩니다.) - 결과 : OK+Set:0x1234)

5. AT+MINO0xFA01(iBeacon의 Minor 값을 16진수 FA01로 설정합니다.원하는 값을 넣으시면 됩니다.) - 결과 : OK+Set:0xFA01

6. AT+ADVI5(신호를 5초마다 송출합니다.) - 결과 : OK+Set:5

7. AT+NAMEKOCOA(HM-10의 이름을 KOCOA로 설정합니다. 원하는 이름을 넣으시면 됩니다.) - 결과 : OK+Set:KOCOA

8. AT+ADTY3(non-connectable 상태로 만들어줍니다. 절전효과가 있습니다.) - 결과 : OK+Set:3

9.AT+IBEA1(HM-10을 iBeacon모드로 변경합니다.) - 결과 : OK+Set:1

10. AT+DELO2(iBeacon을 broadcast 전용 모드로 세팅합니다. 절전효과가 있습니다.) - 결과 : OK+DELO2

11. AT+PWRM0(모듈을 Auto-sleep모드로 세팅합니다. 절전효과가 있습니다.) - 결과 : OK+Set:0

12. AT+RESET(모듈을 재부팅합니다.) - 결과 : OK+RESET



여기까지 세팅 하셧으면 iBeacon Scanner 어플을 이용하여 Beacon을 검색하시면 됩니다. 혹시 안될 경우 AT세팅을 다시 확인해주세요. 위에 세팅을 다 하셧을 경우 auto-sleep모드가 들어가므로 AT명령어에 응답을 안하시면 밑의 방법으로 모드를 해제하신후 AT세팅을 다시 해주세요.

* 세팅이 안될 경우 펌웨어 업그레이드를 하신 후 다시 해보시길 바랍니다.
 1. 시리얼 모니터에 AT+SBLUP을 입력합니다.
 2. 시리얼 모니터를 끄고, 펌웨어 업데이트 프로그램을 실행 시켜 줍니다.(HMSoft.exe)
 3. Image File에는 압축 폴더 내에 있는 HMSoft.bin 파일을 COM Port는 모듈과 연결된 포트번호를 입력하시고 Load Image 버튼을 눌러줍니다.

 

 * 펌웨어 업데이트 도중에 절대 다른 작업을 하지 마세요!!
 4. Download completed successfully 메세지가 나오면서 펌웨어 업데이트가 완료됩니다.
 5. 다시 시리얼 모니터를 열어서 위에 과정을 하시면 됩니다.

* auto-sleep모드 해제(아무문자나 80자 이상 입력하시면 됩니다.) : 결과 OK-WAKE

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

비콘, BLE, 기타

ChoA 2017-05-08 15:12:56

글에 소개된 HM-10 블루투스 모듈이 아닌 블루이노나 다른 블루투스모듈을 이용하여도 글과 같은 방식으로 아이비콘 제자기 가능할까요??

더블빌드소프트 2017-06-04 18:50:29

여기서 BLE 기능 (저젼력 블루트스) 기능이 있는 HM-10을 이용하였는데 일바 HC-05같은 모듈은 안되고 HM-10 또는 BLE 기능이 있는 모듈을 써야합니다. iBeacon 이 BLE 의 일종이라서...

정다훈 2017-06-04 23:15:53

혹시 hm-10 블루투스 모듈에 코인배터리를 연결하려고 하는데 위와 똑같이 +단자에 vcc -단자에 gnd를 연결하면 되나요?

아이언키드 2018-05-08 17:30:10

major 값과 minor값에 따라 뭐가 달라니는지 알려주실 수 있나요?
되도록이면 자세히 부탁드립니다.

LLLLLLLEE 2018-11-06 00:23:41

HM-10을 이용하여 비콘을 제작해서 스마트폰에 이미지를 보낼 수 있나요?? 보낼 수 있다면 관련 정보 보내주실 수 있을까요??
이메일 gus0574@naver.com 입니다.

hunam 2019-03-23 18:11:17

esp32 모듈로 beacon을 제작하고 싶은데 AT커맨드 말고 BLE 라이브러리를 이용해서 만드는 방법은 따로 없나요? 있다면 AT커맨드로 제작하는 것과 무슨 차이가 있는지 알고 싶습니다 알려주세요 부탁드립니다.

돼지의왕 2019-04-23 11:26:27

HM-10은 그냥 쇼핑몰에 흔히 파는 모델을 구매해서 사용하면 되는건가요??