nRF51822의 가장 큰 특징인 BLE 동작 테스를 해 보자
nRF5 SDK에서 기본으로 제공하는 BLE UART 예제를 이용하여 테스트 해볼 예정이다.
/examples/ble_peripheral/ble_app_uart
BLE를 사용하려면 softdevice 라이브러리가 필요 한데 softdevice를 다운로그 하려면
가 필요하다.
우선 nRFgo-Studio를 이용해서 hex 파일을 프로그램 해주어야 한다.
/components/softdevice/s130/hex
BLE 소스코드에서 BLE UART 앱에서 전송되는 데이터를 처리 하는 함수 nus_data_handler() 를 수정해서 보드의 LED를 제어 할 수 있도록 수정 했다.
static void nus_data_handler(ble_nus_t * p_nus, uint8_t * p_data, uint16_t length)
{
for (uint32_t i = 0; i < length; i++)
{
while (app_uart_put(p_data[i]) != NRF_SUCCESS);
if(p_data[0] == 'a')nrf_gpio_pin_toggle(LED_PIN1);
else if(p_data[0] == 'b')nrf_gpio_pin_toggle(LED_PIN2);
}
while (app_uart_put('\r') != NRF_SUCCESS);
while (app_uart_put('\n') != NRF_SUCCESS);
}
nRF51822 BLE UART 기본 동작 main 코드
int main(void)
{
uint32_t err_code;
bool erase_bonds;
// Initialize.
APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_OP_QUEUE_SIZE, false);
uart_init();
buttons_leds_init(&erase_bonds);
ble_stack_init();
gap_params_init();
services_init();
advertising_init();
conn_params_init();
printf("\r\nUART Start!\r\n");
err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
APP_ERROR_CHECK(err_code);
// Enter main loop.
for (;;)
{
power_manage();
}
}
nRF5 BLE UART 펌웨어 프로그램 다운로드 후 핸드폰에서 블루투스 장치를 검색하면 Nordic_UART 로 검색이 되면 정상 동작 되는 것이다.
BLE를 테스트 하기 위한 앱으로 노르딕사 에서 제공하는 nRF Toolbox for Bluetooth LE 를 사용 하였다.
앱 실행후 UART 테스트를 해 보면
키 눌렀을때 BLE로 데이터를 전송하면 보드에서 UART 수신되는것을 확인 할 수 있고 수신 값에 따라 LED를 제어 할 수 있다.
UART 출력 메시지
UART Start!
a
b
a
a
반응형