1. Beacon 개요 및 Arduino Beacon 제작
iBeacon 이란 ?.
- 비콘은 주기적으로 신호를 발생시키는 장치를 의미
- iBeacon은 애플에서 정의한 것으로 Find me profile과 Proximity Profile을 이용한다
- UUID, Major, Minor ID를 Beacon 식별 정보로 활용
- 등대와 같이 단 방향으로 식별 정보를 전송하는 용도로 이용하며, Advertising mode 만을 사용
- 예) UUID – 도시 , Major ID – 상가, Minor ID – 상품
iBeacon Packet format
Beacon 제작하기.
BLEDevice ble; // BLE radio driver
const static uint8_t beaconPayload[] = {
0x4C, 0x00, // Company identifier code (0x004C == Apple)
0x02, // ID
0x15, // length of the remaining payload
0xA4, 0x95, 0x00, 0x01, 0xC5, 0xB1, 0x4B, 0x44, // location UUID
0xB5, 0x12, 0x13, 0x70, 0xF0, 0x2D, 0x74, 0xDE,
0x00, 0x01, // the major value to differentiate a location
0x00, 0x01, // the minor value to differentiate a location
0xC8 // 2의 보수 : Tx power (-56dB)
};
void setup()
{
uint32_t err_code = 0;
uint8_t val = 0;
//Close peripheral power – 저전력 Mode로 변경
NRF_POWER->DCDCEN = 0x00000001;
NRF_TIMER1->POWER = 0;
NRF_TIMER2->POWER = 0;
NRF_WDT->POWER = 0;
NRF_TEMP->POWER = 0;
NRF_UART0->POWER = 0;
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);
err_code = ble.init();
ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
ble.accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, beaconPayload, sizeof(beaconPayload));
ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED);
ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
ble.startAdvertising();
}
void loop()
{
ble.waitForEvent();
}
위의 Code를 RBL nRF51822에 Load하면 Beacon 제작 마무리된다.
다음 내용은 iBeacon APP을 제작하여 통신하는 부분에 대해 설명합니다.