HM-10 모듈을 이용해 BLE/iBeacon 구현해보기

by 김민정 | 2017-01-23 11:26
arduino BLE bluetooth bt05-a hm-10 ibeacon iot iot 구현 사물인터넷 아두이노 아이비콘

재료

  • USB 케이블 1개
  • 핸드폰 1개
  • 점프와이어 4개
  • 아두이노 우노 1개
  • HM-10 1개

첨부파일

    지난번 프로젝트를 통해서 ThingSpeak을 이용하여 온도센서의 값을 보내고 받아와서 스스로 동작하게 하는 간단한 사물 인터넷(IoT)를 구현해보았습니다. 이제까지의 프로젝트는 모두 ESP8266을 사용하여 Wi-Fi를 이용해 무선 통신을 진행하였는데, 이번 프로젝트에서는 조금 다르게 HM-10 모듈을 사용하여 BLE/iBeacon을 구현해볼까 합니다.

                                            

    HM-10 모듈은 ESP8266과 마찬가지로 만원도 안되는 저렴한 가격과 작은 크기로 BLE(Bluetooth Low Energy)를 구현할 수 있게 해줍니다. BLE는 매우 적은 연결과 전력을 사용하면서 iBeacon이라는 주기적인 브로드캐스팅도 가능하게 해줍니다. iBeacon은 근거리 무선통신 장치로, 최대 70m 이내의 장치들과 통신할 수 있게 해줍니다. 5~10cm의 작은 단위의 구별도 가능해서 정확도도 높고 전력 소모도 적어서 모든 기기가 항상 연결되어 있어야 하는 사물 인터넷(IoT) 구현에 적합합니다. 10cm 미만의 거리에서만 적용되는 NFC(근접무선통신)보다 가용 거리도 길고, GPS로는 불가능했던 실내 위치 정보 제공도 가능해서 iBeacon은 IoT 시대를 이끌어갈 주역이라고 봐도 무방하겠네요.

    iBeacon을 사용한 사례를 들어보면, 파리바게트나 던킨 도너츠같은 가게가 근처에 있으면 제 핸드폰으로 할인 쿠폰이나 이벤트 등의 데이터를 전송해주는 것 등이 있습니다. 이렇게 예를 들어보니 생각보다 친숙한 기술이죠? 이번 프로젝트에서는 HM-10 모듈을 이용하여 이러한 것들을 구현해보도록 하겠습니다.




STEP1. 준비물

아두이노 보드, USB 케이블, HM-10, 점프 와이어(F-M 타입) 4개, 핸드폰




여기서 핸드폰은 정보를 전달하고 받는 것을 확인하기 위해 사용할 예정입니다.


STEP2. 회로도


    기본적인 연결방법은 HC-05와 같습니다. 회로도에서 보이는 모듈은 HM-10이 없어서 가장 비슷한 HC-05를 사용해서 대체한 것입니다. 하실 때에는 HM-10 모듈을 사용해서 연결해주시면 됩니다. 연결하신 뒤에 시리얼 모니터를 켜서 ESP8266과 같이 AT Command를 입력하면 OK 사인을 받으실 수 있습니다. 그러면 제대로 연결이 되었음을 확인할 수 있습니다.



이제 코드를 업로드하여 실행해보기 위해서 위와 같이 회로도를 바꾸어서 연결해주세요. 이때 TX와 RX선이 서로 교차가 되도록 연결해주시는 것이 중요합니다.


STEP3. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <SoftwareSerial.h>
 
SoftwareSerial hm10(2,3); //RX, TX 연결
 
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  hm10.begin(9600);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  while(hm10.available()){
    byte data=hm10.read();
    Serial.write(data);
  }
  while(Serial.available()){

    byte data=Serial.read();
    hm10.write(data);
  }
}
cs


STEP4. 연결

    위의 코드를 업로드하신 후에 시리얼 모니터를 열어주세요. 시리얼 모니터에 AT를 입력하시면 OK 응답을 받으셔야 제대로 연결되신 겁니다.



반응이 없으면 여러 번 반복해서 수행해주세요. 이제 AT+RENEW 명령어와 AT+RESET 명령어를 입력해서 공장 초기화 상태로 만들어줍시다.



이제는 블루투스를 연결해보도록 하겠습니다. 연결을 하기 위해서는 블루투스 컨트롤러를 다운받으셔야 합니다. 저는 아이폰을 사용하고 있어서 LightBlue 라는 어플을 사용해서 연결을 할겁니다. 만약 안드로이드를 사용하고 계시다면 아래의 링크로 가서 다운받으시면 됩니다.


            https://play.google.com/store/apps/details?id=com.makewith.mwcontroller


다운받으시고 핸드폰의 블루투스를 켜주시면 아래와 같은 화면이 뜨는 것을 확인할 수 있습니다. 여기에서 BT05-A를 연결해주시면 됩니다. 연결이 되면 깜빡거리던 빨간불이 깜빡거리지 않고 계속 켜져있습니다.



연결이 완료되면 설정을 바꿔주도록 합시다. 먼저 스크롤을 아래로 내려서 TX & RX 을 눌러주세요. 그런후에 오른쪽 상단의 Hex를 눌러주세요.



표기형식을 UTF-8로 바꾼 후에,




데이터를 받아보기위해 Listen for notification을 선택해주시면 됩니다. 그런 후에 아래와 같이 시리얼 모니터에 Hello라고 입력해봅시다.


                                                 


핸드폰으로 Hello라는 문자가 들어온 것을 확인할 수 있습니다.




                                                  


그럼 이제 핸드폰에서 블루투스로 전송해볼까요? 아래의 Write new value를 클릭해서 Hi라고 써봅시다. 그러면 시리얼 모니터로 제대로 전송된 것을 확인할 수 있습니다.


                                                



이제 제대로 연결되었음을 확인했으므로 iBeacon을 활성화시켜보도록 하겠습니다. 이제까지 사용하던 Light blue(블루투스 컨트롤러 앱)를 꺼주시면 pairing이 취소되면서 HM-10 모듈이 깜빡깜빡 거리게 됩니다. 그러면 다시 시리얼 모니터에 아래의 명령어를 차례대로 입력시켜주세요.


    AT+RENEW //공장 초기화

    AT //OK 사인이 오는지 확인

    AT+MARJ0x1234 //iBeacon의 Major Number 설정

    AT+MINO0xFA01 //iBeacon의 Minor Number설정

    AT+ADVI5 //신호 송출 주기를 5로 설정

    AT+NAMEMIN// BLE모듈 이름을 MIN으로 설정(원하는 이름으로 하세요)

    AT+ADTY3 //non-connectable 상태로 만듦

    AT+IBEA1 //iBeacon 활성화

    AT+DELO2 // iBeacon 브로드캐스트 전용 모드로 설정

    AT+PWRM0 //최소 절전 모드 설정

    AT+RESET //Rebutting


저렇게 입력해주신 후에 HM-10 모듈을 봤을 때 빨간불이 꺼져있는 것을 확인할 수 있어야 합니다. iBeacon이 활성화되면 빨간불이 꺼지게 됩니다.  만약 저 명령어들을 수행하는 데에 OK 응답을 받지 못한 것이 있다면 위의 과정을 다시 수행해주세요. 그래도 되지 않는다면 펌웨어 버전의 문제일 수 있으므로 펌웨어 업데이트를 하셔야 합니다. 첨부파일을 다운받으시고,

  

    1. 시리얼 모니터에 AT+SBLUP을 입력합니다.

    2. 시리얼 모니터를 종료하고, 펌웨어 업데이트 프로그램을 실행시킵니다.

    3. Image File에 HMSoft.bin 파일을 넣으시고 port 번호를 수정해주세요.

    4. Download completed successfully 메세지가 나오면 성공적으로 끝난겁니다.




위의 과정을 다 수행하시고 나서 다시 시리얼 모니터를 켜신 후 위의 명령어를 순서대로 입력해주세요. 만약 auto-sleep 모드라면 80자 이상 아무 문자나 입력하시면 해제가 됩니다. 그 후에 다시 진행하시면 됩니다.


STEP5. 결과 확인

    위의 명령어를 모두 수행하시고 난 후에 핸드폰으로 iBeacon locator나 iBeacon scanner 어플을 다운받으신 뒤에 탐색을 하시면 여러분이 설정하신 iBeacon이 뜨는 것을 확인할 수 있습니다.


                                     


댓글 0

사물 인터넷(IoT)

HM-10 모듈을 이용해 BLE/iBeacon 구현해보기

by 김민정

MADE BY

김민정

사물인터넷, 아두이노