BLE – 广播信标
材料准备
- AmebaD [ AMB23 / AMB21 / AMB22 / BW16 / AW-CU488 Thing Plus ] x 1
- Android / iOS 智能手机
范例说明
介紹
BLE信标将其身份信息广播到附近的蓝牙设备,使其他设备能够确定它们相对于信标的位置,并根据信标广播的信息执行操作。
信标的应用实例包括室内定位系统、定位广告等。
按照广播设备的定义,BLE信标无法被连接,只能通过其蓝牙广告包发送信息。
在比较常见的BLE信标协议中,Ameba BLEBeacon库支持iBeacon和AltBeacon协议。
具体的步骤如下:
请确保在您的手机上安装了以下蓝牙应用程序。这些应用程序将向您显示由Ameba发送的原始数据,并允许您与数据进行交互。
这里推荐的应用程序是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
打开Arduino的范例,”Files” -> “Examples” -> “AmebaBLE” -> “BLEBeacon”
上传代码并在上传完成后按下Ameba上的reset按钮。
在您的手机上,打开蓝牙app,扫描Ameba广播的信标信号。
如果您碰巧处在一个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,之后它将开始使用提供的信标数据进行广告。