본문 바로가기

Nordic/nRF52

[nRF52 xBee EVM] BLE 테스트 - BLE 온도 전송 예제(HTS) 테스트 (IAR)

nRF5 SDK에서 제공 하는 예제중 온도 값을 앱으로 전송 하는 예제가 있다.

 

examples/ble_peripheral/ble_app_hts

 

[nRF52 xBee EVM] 기본 동작 테스트 - temperature 테스트 (IAR) 예제를 이용해 보드내보의 온도 값을 가져 오도록 했다.

static void hts_sim_measurement(ble_hts_meas_t * p_meas)
{
    static ble_date_time_t time_stamp = { 2012, 12, 5, 11, 50, 0 };

    uint32_t celciusX100;

    p_meas->temp_in_fahr_units = false;
    p_meas->time_stamp_present = true;
    p_meas->temp_type_present  = (TEMP_TYPE_AS_CHARACTERISTIC ? false : true);

    celciusX100 = sensorsim_measure(&m_temp_celcius_sim_state, &m_temp_celcius_sim_cfg);

    p_meas->temp_in_celcius.exponent = -2;
    p_meas->temp_in_celcius.mantissa = celciusX100;
    p_meas->temp_in_fahr.exponent    = -2;
    p_meas->temp_in_fahr.mantissa    = (32 * 100) + ((celciusX100 * 9) / 5);
    p_meas->time_stamp               = time_stamp;
    p_meas->temp_type                = BLE_HTS_TEMP_TYPE_FINGER;

    // update simulated time stamp
    time_stamp.seconds += 27;
    if (time_stamp.seconds > 59)
    {
        time_stamp.seconds -= 60;
        time_stamp.minutes++;
        if (time_stamp.minutes > 59)
        {
            time_stamp.minutes = 0;
        }
    }
}

 

 

nRF52 HTS 예제 메인 코드

전형적인 BLE GATT 예제라 생각하면 될것 같다.

int main(void)
{
    bool erase_bonds;

    // Initialize.
    log_init();
    timers_init();
    buttons_leds_init(&erase_bonds);
    power_management_init();
    ble_stack_init();
    scheduler_init();
    gap_params_init();
    gatt_init();
    advertising_init();
    services_init();
    sensor_simulator_init();
    conn_params_init();
    buffer_init();
    peer_manager_init();

    // Start execution.
    NRF_LOG_INFO("HID Keyboard example started.");
    timers_start();
    advertising_start(erase_bonds);

    // Enter main loop.
    for (;;)
    {
        idle_state_handle();
    }
}

 

 


프로그램 다운로드 하고 nRF Toolbox for Bluetooth LE 앱을 이용해 BLE 연결하면 보드의 온도 값을 앱으로 출력 하는것을 확인 할 수 있다.

 

 

 

반응형