BLE - 电池服务

材料准备

  • AmebaD [AMB21 / AMB22 / AMB23 / BW16] x 1

  • Android / iOS mobile phone

范例说明

介绍

BLE使用的是服务器–客户端模型。服务器我们感兴趣的数据,而客户端连接到服务器来读取数据。通常,蓝牙外围设备充当服务器,而蓝牙中心设备充当客户端。服务器可以包含许多服务,每个服务包含一组数据。客户端可以发送读取或写入数据的请求,还可以订阅通知,以便服务器可以向客户端发送数据更新。

在本示例中,我们在Ameba蓝牙堆栈上设置了一个简单的电池服务,然后使用智能手机来连接Ameba的BLE外设并读取电池数据。

流程

请确保在您的手机上安装了以下蓝牙应用程序。这些应用程序将向您显示由Ameba发送的原始数据,并允许您与数据进行交互。

这里推荐的应用程序是nRF connect,可在下面的链接中找到:

LightBlue是另一种也可以使用的应用程序,但是它的特性比较少:

Open the example, “Files” “Examples” “AmebaBLE” “BLEBatteryService”

../../../../_images/image1.png

Upload the code and press the reset button on Ameba once the upload is finished. On your mobile phone, open the Bluetooth app and scan for the Bluetooth signal broadcast by Ameba, it should appear as a device named “AMEBA_BLE_DEV”.

../../../../_images/image2.png

连接到Ameba蓝牙设备,应该会出现可用服务的列表。单击battery服务展开,可以看到电池电量数据值。方框右边高亮的箭头用于读取数据和订阅通知。点击单个箭头读取电池电量值,90%的电量值就会显示出来。

../../../../_images/image3.png

单击三重箭头订阅电池电量值的更新,电池值将自动开始更新。

../../../../_images/image4.png

串行监视器将显示每秒钟电池电量的增加。当您单击其中一个箭头时,运行在Ameba上的程序将得到通知,并打印显示出所采取的操作。

../../../../_images/image5.png

程式码说明

BLEService和 BLECharacteristic用于创建在蓝牙设备上运行的电池服务实例。

BLE.configAdvert() setAdvType(GAP_ADTYPE_ADV_IND) is used to set the advertisement type to a general undirected advertisement that allows for connections.

setReadCallback()setCCCDCallback() 用于注册将在读取电池电量数据或用户启用通知时调用的函数。

BLE.configserver(1) 用于告诉蓝牙堆栈有一个服务将会运行。

addService() 将电池服务注册到蓝牙堆栈。