BLE – 广播信标

材料准备

范例说明

介紹

BLE信标将其身份信息广播到附近的蓝牙设备,使其他设备能够确定它们相对于信标的位置,并根据信标广播的信息执行操作。

信标的应用实例包括室内定位系统、定位广告等。

按照广播设备的定义,BLE信标无法被连接,只能通过其蓝牙广告包发送信息。

在比较常见的BLE信标协议中,Ameba BLEBeacon库支持iBeacon和AltBeacon协议。

具体的步骤如下:

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

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

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

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

2

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

在您的手机上,打开蓝牙app,扫描Ameba广播的信标信号。

3

如果您碰巧处在一个BLE信标多而繁杂的环境中,您可以点击条目来展开它们,并验证信标数据是否与程序中的数据相同。

程式码说明

setRssi() 用于设置信标的接收信号强度指示器(rssi)数据字段。规范规定这应该是1米距离内从信标收到的信号强度。由于没有测量方法,因此将估计值设置为-65dBm。

setMajor() 和 setMinor() 用于设置两个数据字段。这些数据的用途留给信标的制造商来定义,并且可以任意使用。

setUUID() 用于给信标一个全局唯一标识符(UUID)。这是一个128位的数字,通常用十六进制字符串表示。它用于识别每个唯一的信标,并且可以免费地在线随机生成。

BLEBeacon 库包括iBeacon和AltBeacon类,如果第6行iBeacon替换为AltBeacon,就能创建一个AltBeacon。数据字段基本相同,只有一些小的变化,请查看头文件了解更多细节。

BLE.init() 用于分配内存并预备Ameba启动蓝牙堆栈。

BLE.configAdvert() 用于配置蓝牙广告设置,我们将信标数据传递给它,并将设备设置为不可连接。

BLE.beginPeripheral() 在蓝牙外设模式下启动Ameba,之后它将开始使用提供的信标数据进行广告。

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