材料
- BW21-CBV-Kit x 1
- Android / iOS 手机
示例
说明
蓝牙低能耗(BLE)连接采用服务器-客户端模型。服务器包含重要的数据,而客户端连接到服务器以读取数据。通常,蓝牙外设设备充当服务器,而蓝牙中央设备充当客户端。服务器可以包含多个服务,每个服务包含一组数据。客户端可以发送请求以读取或写入某些数据,也可以订阅通知,以便服务器向客户端发送数据更新。
在这个示例中,我们在 Ameba 蓝牙堆栈上设置了一个基本的电池服务。使用手机连接到 BW21-CBV-Kit 外设设备并读取电池数据。
流程
- 确保手机已安装以下蓝牙应用程序,这些应用将显示 BW21-CBV-Kit 发送的原始数据,并允许与数据交互。
- 推荐使用 nRF Connect 应用,下载链接如下:
- Android: https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp
- iOS: https://apps.apple.com/us/app/nrf-connect/id1054362403
- 另一种可选应用是 LightBlue,但是其功能较少:
- Android: https://play.google.com/store/apps/details?id=com.punchthrough.lightblueexplorer
- iOS: https://apps.apple.com/us/app/lightblue/id557428110
- 打开示例代码:“文件” -> “示例” -> “AmebaBLE” -> “BLEBatteryService”。
- 上传代码后,按下 BW21-CBV-Kit 开发板上的复位按钮。
- 打开手机上的蓝牙应用,扫描 BW21-CBV-Kit 广播的蓝牙信号,设备名称应为 “AMEBA_BLE_DEV”。
- 连接到 BW21-CBV-Kit 蓝牙设备后,将出现一个可用服务列表。点击电池服务进行展开,可以看到电池电量数据值。右侧框中高亮的箭头用于读取数据和订阅通知。点击单箭头读取电池电量值,会显示 90% 的电量值。
- 点击三重箭头以订阅电池电量更新,电池值将开始自动更新。
- 串口监视器将显示草图每秒增加电池电量。当点击任意箭头时,BW21-CBV-Kit 上运行的草图会收到通知,并打印出所执行的操作。
代码参考
- BLEService 和 BLECharacteristic 类用于创建并定义在蓝牙设备上运行的电池服务。
- BLE.configAdvert() ->
setAdvType(GAP_ADTYPE_ADV_IND) 用于设置广告类型为一般无方向广告,允许进行连接。
- setReadCallback() 和 setCCCDCallback() 用于注册函数,当电池电量数据被读取或用户启用通知时,这些函数将被调用。
- BLE.configServer(1) 用于告诉蓝牙堆栈将运行一个服务。
- addService() 用于将电池服务注册到蓝牙堆栈。
|