비컨 관련된 기술이, 그 중 특히 iBeacon이 근래들어 주목을 받긴 했지만 아직 일반에 보급되진 못하고 있습니다. 대기업을 포함한 여러 IT 업체들이 사전 작업을 하고 있지만 가시적인 움직임은 아직 지지부진 합니다. 주변에 깔린 비컨 기기도 거의 없구요. 그래서 더욱 메이커가 도전해 볼만한 분야가 아닌가 합니다.

비컨은 굉장히 간단한 기술이라 비교적 쉽게 활용할 수 있는 기술입니다. Bluetooth Low Energy를 활용해서 UUID, Major, Minor 등등 비컨 기기의 고유 ID와 카테고리 전송파워와 같은 정보를 주변에 broadcast 해줄 뿐입니다. 이걸 휴대폰 앱에서 받아서 원하는 처리를 하면 됩니다. 비컨을 활용해서 어떤 서비스를 만들 것인가에 대한 아이디어가 중요합니다.

여기서는 비컨 기기를 직접 만들고 활용하는 방법에 대해서 적어보려고 합니다. iBeacon을 지원하는 BLE(Bluetooth Low Energy) 모듈을 이용해서 비컨을 만들고 만든 비컨을 목걸이 형태로 제작해서 ‘미아방지 목걸이’로 활용하는 방법입니다.

1. 비컨 만들기 준비물

# BLE 모듈

Ebay, Aliexpress 등에서 ‘ibeacon module’로 검색하면 각종 iBeacon 모듈들을 보실 수 있습니다. 제가 사용한 BLE 모듈은 아래와 같습니다.

ble_12

TI-CC2540 칩을 사용하고 HM-10 모듈로 판매되는 제품과 호환됩니다. 원래 목적은 BLE 통신용이지만 최신 펌웨어에서 iBeacon 모드를 지원하기 때문에 비컨으로 활용하실 수 있습니다. [링크]로 가시면 제품에 대한 상세 스펙과 가격을 확인하실 수 있습니다. 아직 제품이 많이 사용되지는 않아서인지 가격이 15$ 내외에 형성되어 있습니다.(HM-10으로 검색하시면 훨씬 저렴한 모듈들도 많습니다.)

위 사진에서 보시다시피 모듈이 인터페이스 보드에 붙어있는 제품을 사시는 것이 처음에 테스트 할 때는 편하실겁니다. 충분히 테스트를 마치고나면 인터페이스 보드 제거하고 사용하시면 됩니다. (대신 3.3v 전원을 사용해야하고 납땜이 굉장히 어렵습니다)

• BT Version: Bluetooth Specification V4.0 BLE
• Send and receive no bytes limit
• Working frequency: 2.4GHz ISM band
• Modulation method: GFSK(Gaussian Frequency Shift Keying)
• RF Power: 0.01mw-5mw, can modify through AT Command
• Speed: Asynchronous: 6K Bytes, Synchronous: 6K Bytes
• Security: Authentication and encryption
• Service: Central & Peripheral UUID FFE0,FFE1
• Power: +3.3VDC 50mA
• Open space have 100 Meters with iphone4s
• Power: In sleep mode 400uA~1.5mA, Active mode 8.5mA.
• Working temperature:–5 ~ +65 Centigrade
• Dimension: 26.9mm x 13mm x 2.2mm

hm_10

# 코인 배터리

BLE 자체가 저전력 블루투스 이므로 코인 배터리로도 1~2년의 동작시간을 확보할 수 있도록 설계되어 있습니다. 제가 사용한 BLE 모듈은 auto sleep 모드에서 평균 0.18mA의 전력을 소비합니다. 알카라인 전지 3개가 1800mAh 라고 가정하면 약 10,000 시간을 버틸 수 있고, 1년이 넘게 사용 가능합니다. 크기를 위해 240mAh CR2032 코인 전지를 사용하면 약 55일을 사용할 수 있습니다. 아래 가이드대로  iBeacon 전용 모드로 설정할 경우 소비전력이 좀 더 줄어서 더 오래갈 것으로 예상합니다.

# 코일 배터리 홀더

코인배터리를 적당히 고정시킬 수 있는 홀더를 구매하거나 만듭니다.

2. 비컨 만들기

BLE 모듈을 구하시면 먼저 비컨 기기로 바꾸는 과정을 거쳐야 합니다. AT command 라고 부르는 명령어를 serial 통신으로 전송하면 블루투스 모듈 내부 설정을 변경할 수 있습니다.

주의!! : BLE 모듈을 iBeacon으로 바꿔주는 AT command 는 최신 펌웨어에서 제공합니다. 따라서 모듈을 구매하실 때 iBeacon 모드를 지원하는지 seller 에게 문의해 보는 것이 좋습니다. 2014년 9월 최신 펌웨어 버전은 v531 입니다. 문서상으로 볼 때 v529 (14년 6월) 이상이 되어야 할 듯 합니다.

AT command를 보내는 방법은 여러가지가 있는데.. FTDI(USB to UART) 모듈을 통해서 PC와 연결한 뒤 PC에서 전용 프로그램으로 할 수 있고, 블루투스로 휴대폰 앱과 연결해서 앱에서도 가능합니다. 여기서는 아두이노를 이용해서 AT command를 전송하고 설정을 변경해 보겠습니다.

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

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

만약 인터페이스 보드 없는 HM-10 모듈을 사용하신다면 아래 이미지를 참고하셔서 연결하세요.

hm_10_conn

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

#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 값을 0x1234 로 설정, 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 (default: 74278BDAB644-45208F0C-720EAF059935) 를 가진 비컨이 검색되는지 확인
  19. 만약 검색되지 않으면 5~16 과정을 다시 실행하고 OK… 응답이 정상적으로 오는지 확인 해보세요.
  20. 중간에 응답에  문제가 있다면 펌웨어 버전 문제일 수도 있습니다. [링크]에 있는 문서 참고하셔서 펌웨어 업데이트를 최신으로 해보세요.

주의!! : BLE(HM-10) 모듈이 auto-sleep 모드로 들어가면 (AT+PWRM0 커맨드와 AT+RESET 커맨드 이후) AT command 에 응답하지 않는 상태가 됩니다. 모듈을 깨우기 위해서는 아무 문자나 80자 이상 입력해서 전송하면 됩니다. 그러면 OK+WAKE 응답이 올겁니다. 그리고 AT+PWRM1 커맨드를 보내서 auto sleep 모드르 끄고 작업하세요. 작업이 끝나면 다시 AT+PWRM0 커맨드로 auto sleep 모드를 활성화 하면 됩니다.

iBeacon 정상적으로 설정되면 Auto Beacon 앱으로 검색했을 때 아래와 같이 default UUID를 가진 비컨이 보입니다. (그림에서 2번째)

photo_2014-10-10_18-19-03

그럼 이제 iBeacon이 만들어진 겁니다!!

photo_2014-10-10_22-11-17

다음 순서는 간단합니다. 모듈과 아두이노 연결을 해제하고 모듈에 코인배터리로 적당한 전원을 공급해서 들고다닐 수 있도록 해주면 됩니다.

3. 비컨 활용 (미아방지 목걸이)

이제 위에서 사용한 Auto Beacon 앱을 이용해서 iBeacon을 미아방지 목걸이로 활용해 보겠습니다.

Auto Beacon 앱에서는 사용자가 설정한 스캔 주기로 주변의 iBeacon을 검색합니다. 그리고 사용자가 비컨을 이용한 자동화 작업(Macro)을 생성할 수 있습니다.

howto_ibeacon

  • 먼저 주변 비컨을 스캔해서 우리가 만든 iBeacon이 검색되는지 확인합니다. 검색되면 클릭.
  • 팝업되는 메뉴 중 ‘선태한 비컨으로 매크로 생성’ 클릭합니다.
  • 매크로 생성창이 뜹니다. 여기에 거리조건을 ‘검색되지 않음’ 으로 선택하고, 예약할 작업을 ‘경고음 재생’ 으로 선택합니다. 아래쪽에 적당한 매크로 이름을 입력해줍니다.
  • 설정 탭에서 적당한 스캔 주기를 입력해주고 Background service로 동작하도록 설정해줍니다.

이제 Auto Beacon 앱이 주기적으로 비컨을 스캔하면서 우리가 만든 비컨이 검색되지 않으면 요란하게 소리를 낼겁니다. 직접 만든 비컨이 미아방지 목걸이가 되는거죠.

이외에도 아이디어만 있으면 비컨을 다양한 형태로 활용이 가능하실 겁니다. 관련된 상세 자료들이 아래 링크에 있습니다.

# BLE 모듈 상세자료 : https://www.hardcopyworld.com/

# Auto Beacon 앱 다운로드, 매뉴얼

# 궁금하신점은 QnA 게시판으로 : https://www.hardcopyworld.com/

# 참고자료: HM-10 iBeacon howtoHM-10 iBeacon 개조과정HM-1x BLE 지원 홈페이지Biscuit firmware(펌웨어 개조)http://redbearlab.com/blemini/(펌웨어 관련 정보)iBeacon 개론HM-10 DatasheetHM-10 FirmwareUSB Serial adaptersUSB Serial adapters 2USB Serial adapters 3Locate iBeacon for iOS(iBeacon 위치 확인 앱), iBeacon Scanner for Android