이전에 '시각장애인을 위한 개인용 음향신호기' 프로젝트를 진행하였을 때 음향신호기에서 주변의 스마트폰에 동시에 신호등 정보를 제공하기 위하여 아두이노로 비콘을 구현하였다.
아두이노를 통해 비콘을 구현하고 기본설정 및 예제코드를 사용하는 법을 정리해보려 한다.
비콘과 BLE
1. 비콘
비콘(beacon)은 근거리 스마트 기기를 자동으로 인식하여 데이터를 전송할 수 있는 무선 통신 장치이다. 최대 50거리에서 작동하며 UUID(Universally Unique Identifier) 가 포함된 정보 패킷을 보낼 수 있다.
저전력을 주목표로 한 블루투스 4.0이 개발되었고 이전의 불루투스 기술들은 쌍방향 통신을 지원하는 반면 불루투스 4.0에서는 쌍방향 뿐만 아니라 일방향 통신 또한 가능하게 되었다. 일방향 통신은 불루투스 기기가 정보를 송신 할 수 있으면서도 수신하기 위해 대기할 필요가 없도록 해주며 이러한 방법으로 'beacon'은 페어링 연결을 필요로 하지 않게 되었다.
이 기술을 이용하여 음식점, 박물관, 미술관, 영화관 , 카페 등을 방문한 고객들에게 스마트폰에 할인 쿠폰, 상세 설명, 주문 알림 등의 데이터를 전송받을 수 있도록 할 수 있으며 여러 개의 비콘의 RSSI 값을 이용해 위치 추정 등에 사용되고 있다.
2. BLE
BLE란 블루투스 4.0부터 새롭게 포함된 저전력 통신 기술로 기존의 BT Classic에 비해 전력 소모가 1/10정도로 Advertise(Broadcast) mode를 통해 Advertising Packet신호를 지속적으로 50m 범위에 전송한다.
준비물
- 아두이노 우노
- HM-10
- 케이블
회로도
VCC-5V (빨강)
GND-GND (검정)
TXD - 디지털핀
RXD - 디지털핀
아두이노 예제코드
#include <SoftwareSerial.h>
SoftwareSerial HM10(0,1);
void setup() {
Serial.begin(9600);
HM10.begin(9600);
}
void loop() {
while(HM10.available()){
byte data=hm10.read();
Serial.write(data);
}
while(Serial.available()){
byte data=Serial.read();
HM10.write(data);
}
}
Beacon 설정
비콘을 연결한 후에는 스케치에서 시리얼 모니터를 실행하여 AT설정을 할 수 있다.
1. AT+RENEW(모듈 공장 초기화) - 결과 : OK+RENEW
2. AT+RESET(BLE모듈을 리셋) - 결과 : OK+RESET
3. AT(AT모드 응답 확인) - 결과 : OK
4. AT+MARJ0x1234(Beacon의 Major 값을 16진수 1234로 설정) - 결과 : OK+Set:0x1234)
5. AT+MINO0xFA01(Beacon의 Minor 값을 16진수 FA01로 설정) - 결과 : OK+Set:0xFA01
6. AT+ADVI5(신호 5초마다 송출) - 결과 : OK+Set:5
7. AT+NAMESAMPLE(HM-10 이름을 SAMPLE로 설정) - 결과 : OK+Set:SAMPLE
8. AT+ADTY3(non-connectable 상태(절전)) - 결과 : OK+Set:3
9.AT+IBEA1(HM-10을 Beacon모드로 변경) - 결과 : OK+Set:1
10. AT+DELO2(iBeacon을 broadcast 전용 모드로 세팅) - 결과 : OK+DELO2
11. AT+PWRM0(모듈을 Auto-sleep모드로 세팅) - 결과 : OK+Set:0
12. AT+RESET(모듈 재부팅) - 결과 : OK+RESET