본문 바로가기
Programming/Arduino

Bluetooth Low Energy 모듈 (iBeacon)

by 개Foot/Dog발?! 2014. 12. 7.

URL : http://www.hardcopyworld.com/ngine/aduino/index.php/archives/1090


.....


3. iBeacon 설정 방법

아두이노는 PC와 연결된 상태에서(USB serial 로) D2, D3 핀을 이용해서 블루투스 모듈과 연결합니다. 그리고 블루투스 모듈과의 통신은 SoftwareSerial을 사용합니다.

연결방법 : (아두이노 -> BLE 모듈D2 -> TX,  D3 -> RX,  5V -> VCC,  GND -> GND

그리고 아두이노에 아래 소스코드를 올립니다.

#include <SoftwareSerial.h>


SoftwareSerial mySerial(2, 3); // RX, TX


void setup()  

{

  // Open serial communications and wait for port to open:

  Serial.begin(9600);

  Serial.println("Goodnight moon!");


  // set the data rate for the SoftwareSerial port

  mySerial.begin(9600);

}


void loop() // run over and over

{

  // Receive from bluetooth and send it to PC

  if (mySerial.available())

    Serial.write(mySerial.read());


  // Receive from PC and send it to bluetooth

  if (Serial.available())

    mySerial.write(Serial.read());

}


소스를 보시면 아시겠지만 간단한 에코 시스템 만드는겁니다. USB를 통해 PC에서 받은 데이터를 BLE 모듈로 보내주고, BLE에서 받은 데이터는 PC로 보내주는 코드입니다. 이 코드를 컴파일해서 올리고 [아두이노 IDE -> 도구 -> 시리얼 모니터] 를 실행하면 시리얼 모니터에 입력하는 값이 BLE로 전송되고 BLE에서 전송받은 데이터가 아래에 표시됩니다. 시리얼 모니터를 이용해서 AT Command를 전송하면 BLE 모듈을 설정할 수 있습니다.

비컨이 정상적으로 설정되었는지 테스트 하기 위해서는 iBeacon 스캐너 앱이 필요합니다. 하드카피월드에서 제작한 아래 앱 다운로드 받고 사용하시면 됩니다.

Auto Beacon 매뉴얼앱 다운로드 

준비가 되었으면 아래 순서대로 비컨 설정해보세요.

  1. BLE와 아두이노를 위 설명대로 연결.
  2. 소스코드를 컴파일 및 업로드
  3. 업로드 완료되면 시리얼 모니터 실행 (아두이노 IDE -> 도구 -> 시리얼 모니터)
  4. 아래 붉은 글씨로 적힌 AT command 를 순서대로 입력합니다. 커맨드가 제대로 설정된 경우 OK… 와 같은 응답이 시리얼모니터에 표시됩니다.
  5. 시리얼 모니터에 AT+RENEW 입력 (공장초기화)
  6. AT+RESET (BLE 모듈을 리셋)
  7. AT (OK 응답이 오는지 확인)
  8. AT+MARJ0x1234 (iBeacon의 Major 값을 0×1234 로 설정, 16진수, 원하는 값 넣으셔도 되고 이 과정 생략해도 됨)
  9. AT+MINO0xFA01 (iBeacon의 Minor 값을 oxFA01로 설정, 16진수,원하는 값 넣으셔도 되고 이 과정 생략해도 됨)
  10. AT+ADVI5 (신호송출 간견을 5로 설정. 약 546.25 milliseconds)
  11. AT+NAMEDOPEY (BLE 모듈의 이름을 DOPEY 로 설정, 원하는 값으로 변경하세요)
  12. AT+ADTY3 (non-connectable 상태로 만듬. 절전효과)
  13. AT+IBEA1 (iBeacon 모드로 변경)
  14. AT+DELO2 (iBeacon broadcast 전용 모드로 만듬. 절전효과)
  15. AT+PWRM0 (Auto sleep 활성화. 소비전력이 8 -> 0.18 mAh 로 감소)
  16. AT+RESET (재부팅)
  17. iBeacon scanner 앱을 이용해서 비컨 검색
  18. 고유 UUID (74278BDA-B644-4520-8F0C-720EAF059935) 를 가진 비컨이 검색되는지 확인
  19. 만약 검색되지 않으면 5~16 과정을 다시 실행하고 OK… 응답이 정상적으로 오는지 확인 해보세요.
  20. 중간에 응답에  문제가 있다면 펌웨어 버전 문제일 수도 있습니다. [링크]에 있는 문서 참고하셔서 펌웨어 업데이트를 최신으로 해보세요.

iBeacon 정상적으로 설정되면 Auto Beacon 앱으로 검색했을 때 아래와 같이 default UUID를 가진 비컨이 보입니다.

UUID(16byte), Major code(2byte), Minor code(2byte)를 이용해서 비컨들 각각을 구분할 수 있습니다. 위에서 HM-10 모듈의 default UUID 값이 74278BDA-B644-4520-8F0C-720EAF059935 로 설정되어 있다고 했는데 이는 iOS AirLocate 를 사용하는 앱과의 호환성을 위해서입니다. 아래 UUID 들이 AirLocate 와 호환성을 가지는 UUID 입니다. 이경우 각각의 비컨의 구분은 Major(카테고리), Minor(기기 고유번호) 코드를 변경하시면 됩니다.


.....