【BLE】nrf connect配置为服务端进行蓝牙主从通信实验

本文介绍了如何使用nrf Connect应用程序将蓝牙开发板配置为服务端,以便进行蓝牙主从通信实验。首先,详细说明了在nrf Connect中创建ADVERTISER并添加16 bit service UUID。接着,配置GATT服务器,建立LED服务,并添加带有read和write权限的开关灯特性。在连接测试部分,描述了如何使蓝牙开发板为主机模式,以及如何在nrf Connect上查看和操作服务。实验参考了谷雨物联的教程。
摘要由CSDN通过智能技术生成
需求背景

在进行BLE模块调试时,我们通常配置nrf connect APP作为蓝牙客户端,扫描蓝牙开发板的广播,进行连接。
然而当进行蓝牙主从通信实验时,为了调试主机端程序,如果手上只有一块开发板,就需要将蓝牙开发板配置为客户端,将手机上的nrf connect APP配置为服务端
建议使用安卓系统上的nrf connect,功能较全。

创建ADVERTISER
  1. 进入nrf connect,选择ADVERTISER页面,点击右下角的加号,添加advertising data和scan response data。
  2. 在scan response data中添加16 bit service uuid:0xFFF0(主机通过UUID过滤策略自动连接从机)
添加LED SERVICE
  1. 点击nrf connect左上角菜单选项,选择configure GATT server
  2. 点击最上面的白色小三角,在弹出列表中选择第一个加号,添加服务,设置服务名为LED
  3. 在LED中点击ADD SERVICE,name处填LED,软件会自动弹出nordic led button service,可选择该名称,UUID会自动填写,然后可将12和13字节替换为自己实验中服务的16bit UUID,我的时FFF0
  4. 点击刚才的服务,ADD CHARACTERISTIC,添加开关灯的属性,name为switch
  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nrf52832可以通过UART和电脑进行蓝牙通信。具体步骤如下: 1. 配置UART 在nrf52832上配置一个UART接口,使其可以通过串口与电脑通信。你可以使用nrfx库或者SDK自带的UART库来实现。下面是使用nrfx库的示例代码: ```c #define UART_TX_PIN 6 #define UART_RX_PIN 8 #define UART_BAUDRATE NRF_UART_BAUDRATE_115200 nrfx_uart_t uart_instance = NRFX_UART_INSTANCE(0); void uart_init(void) { nrfx_uart_config_t uart_config = NRFX_UART_DEFAULT_CONFIG; uart_config.baudrate = UART_BAUDRATE; uart_config.pselrxd = UART_RX_PIN; uart_config.pseltxd = UART_TX_PIN; nrfx_uart_init(&uart_instance, &uart_config, NULL); nrfx_uart_rx_enable(&uart_instance); } ``` 2. 配置蓝牙nrf52832上配置一个蓝牙连接,使其可以与电脑的蓝牙进行通信。你可以使用nrfx库或者SDK自带的蓝牙库来实现。下面是使用SDK自带的蓝牙库的示例代码: ```c #define DEVICE_NAME "Nordic_UART" #define APP_BLE_OBSERVER_PRIO 3 #define APP_ADV_INTERVAL 64 #define APP_ADV_TIMEOUT_IN_SECONDS 180 static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context) { switch (p_ble_evt->header.evt_id) { case BLE_GAP_EVT_CONNECTED: break; case BLE_GAP_EVT_DISCONNECTED: break; case BLE_GAP_EVT_PHY_UPDATE_REQUEST: { ble_gap_phys_t phys = { .rx_phys = BLE_GAP_PHY_AUTO, .tx_phys = BLE_GAP_PHY_AUTO, }; sd_ble_gap_phy_update(p_ble_evt->evt.gap_evt.conn_handle, &phys); } break; default: break; } } void ble_init(void) { uint32_t err_code; ble_stack_init(); gap_params_init(); gatt_init(); services_init(); advertising_init(); conn_params_init(); err_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, 0, TX_POWER); // 设置广播功率 APP_ERROR_CHECK(err_code); err_code = sd_ble_gap_adv_start(m_adv_handle, APP_BLE_CONN_CFG_TAG); APP_ERROR_CHECK(err_code); ble_advertising_start(BLE_ADV_MODE_FAST); NRF_SDH_BLE_OBSERVER(m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_handler, NULL); } ``` 3. 通过UART发送和接收数据 当蓝牙连接成功后,你可以通过UART向电脑发送数据,也可以通过UART接收电脑发送的数据。下面是使用nrfx库的示例代码: ```c void uart_send_data(uint8_t * data, size_t length) { nrfx_uart_tx(&uart_instance, data, length); } void uart_receive_data(uint8_t * data, size_t length) { nrfx_uart_rx(&uart_instance, data, length); } ``` 你也可以使用SDK自带的UART库来实现UART的发送和接收。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值