BLE – 电池服务

材料准备

范例说明

介紹

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

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

具体的步骤如下:

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

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

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

打开Arduino的范例,”Files” -> “Examples” -> “AmebaBLE” -> “BLEBatteryService”

2

上传代码并在上传完成后按下Ameba上的reset按钮。

在您的手机上,打开蓝牙app,扫描Ameba广播的蓝牙信号,会出现一个名为“AMEBA_BLE_DEV”的设备。

3

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

3

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

4

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

4

程式码说明

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

BLE.configadvert ()->setAdvType(GAP_ADTYPE_ADV_IND)用于将广告类型设置为允许连接的通用无定向广告。

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

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

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

请先确认已安装QQ通讯软体