2015년 9월 11일 금요일

BLE Beacon 제작 및 스마트폰 앱 연동하기. - 1

<원문 : http://cafe.naver.com/wirelessdev/433>

  • BLE iBeacon을 제작 및 APP 연동 관련 TEST를 진행하며 정리한 내용 올립니다
    아직 학습하는 과정으로 정보의 오류가 있을 수 있습니다.
    오류 부분은 지적해 주시기 바랍니다.

    정리한 내용은 4개 과정으로 나누어 정리했습니다.
    1. Beacon 개요 및 Arduino Beacon 제작
    2. Cross Platform을 지원하는 Beacon APP 제작 및 연동 Test
    3. Beacon Packet 분석을 통한 iBeacon 이해
    4. Beacon의 설정에 따라 동작하는 Beacon APP 제작

    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 제작하기.
      • 준비 물
        - RBL nRF51822, iPhone, Android Phone
      • Arduino 소스 분석
        #include <BLE_API.h>


               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을 제작하여 통신하는 부분에 대해 설명합니다.

댓글 없음:

댓글 쓰기

LTE Cat M1 Global USIM 사용 장점

Global USIM을 사용하면 2가지 정도 장점이 있습니다. ​ 1. 국가별로 다른 USIM 사용할 필요 없음. 2. 국가별 통신사 인증 없이 사용 가능 ​ Global USIM을 사용하기 위해서는 LTE Module 또는...