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 연결하면 보드의 온도 값을 앱으로 출력 하는것을 확인 할 수 있다.
반응형