苹果的iBeacon开启了蓝牙低功耗设备精准定位的应用场景,谷歌对应的制定了Eddystone蓝牙信标(Beacon)标准,定义了BLE(Bluetooth Low Energy)近距离信标消息的格式,并描述了几种不同类型的帧,可以单独或组合使用,以创建可用于各种应用的信标。
以下是Eddystone信标包含的几种类型:- Eddystone-UID:这种类型的帧广播一个不透明的、唯一的16字节信标ID,由10字节的命名空间和6字节的实例组成。这个信标ID可以用于将设备映射到外部存储中的记录。命名空间部分的ID可以用于分组特定的信标,而实例ID则标识组内的个别设备。
- Eddystone-URL:这种类型的帧使用压缩编码格式广播URL,以便在有限的广播数据包中容纳更多的信息。一旦解码,URL可以被任何有互联网访问权限的客户端使用。
- Eddystone-TLM(Telemetry):这种类型的帧用于广播信标本身的遥测(健康和状态)数据,如电池电量、温度以及一个运行计数器,用于统计广播的数据包数量。
在 WBA55CG的官方例程中,提供了BLE_Beacon应用,可以用于蓝牙Beacon的测试。
一、蓝牙Beacon类型配置
在app_conf.h中,有关于蓝牙Beacon的详细配置,类型配置如下:
/**
* Beacon selection
* Beacons are all exclusive
*/
#define CFG_EDDYSTONE_UID_BEACON_TYPE (1<<0)
#define CFG_EDDYSTONE_URL_BEACON_TYPE (1<<1)
#define CFG_EDDYSTONE_TLM_BEACON_TYPE (1<<2)
#define CFG_IBEACON (1<<3)
//#define CFG_BEACON_TYPE 必须设置为以下值之一:
//CFG_EDDYSTONE_UID_BEACON_TYPE
//CFG_EDDYSTONE_URL_BEACON_TYPE
//CFG_EDDYSTONE_TLM_BEACON_TYPE
//CFG_IBEACON
#define CFG_BEACON_TYPE (CFG_IBEACON)
分别对应如下的类型:
CFG_EDDYSTONE_UID_BEACON_TYPE:Eddystone-UID类型,广播16字节信标ID。 CFG_EDDYSTONE_URL_BEACON_TYPE:Eddystone-URL类型,广播URL。 CFG_EDDYSTONE_TLM_BEACON_TYPE:Eddystone-TLM类型,提供关于设备的信息,如电池电量、温度等。 CFG_IBEACON:苹果iBeacon设备模拟
修改了对应的类型定义后,重新编译烧录即可。
二、蓝牙Beacon实测
1. CFG_IBEACON测试
将 CFG_BEACON_TYPE 设置为CFG_IBEACON,然后编译烧录:
从串口监听中,可以看到Ibeacon模式打开,广播启动:
然后,在手机上安装Beacon Scanner,进行检测:
当手机和NUCLEO-WBA55CG较近时,距离直接为0:
随着手机离开NUCLEO-WBA55CG,距离组件变大,RSSI和TX也会变化:
最远能达到多少探测距离没有测试,后续有空再进行。
2. CFG_EDDYSTONE_UID_BEACON_TYPE测试
将 CFG_BEACON_TYPE 设置为CFG_EDDYSTONE_UID_BEACON_TYPE,并在eddystone_beacon.h中设置NAMESPACE_ID:
/* Exported constants --------------------------------------------------------*/
#define ADVERTISING_INTERVAL_IN_MS (1000)
#define CALIBRATED_TX_POWER_AT_0_M ((uint8_t) (-22))
#define NAMESPACE_ID 'H', 'o', 'n', 'e', 's', 't', 'Q', 'i', 'a', 'o'
#define BEACON_ID 0, 0, 0, 0, 0, 1
#define URL_PREFIX HTTPS
#define PHYSICAL_WEB_URL "bbs.21ic.com"
#define NORMAL_TIME_ADV 10000000
#define TLM_TIME_ADV 1000000
顺带把 URL_PREFIX 也给设置为 "bbs.21ic.com"。
然后编译烧录,从串口监听中,可以看到UID模式启动:
通过手机Beacon Scanner,可以搜索到:
在手机Beacon Scanner中,NamespaceID显示为16进制,转换一下:
可以看到为前面设置的对应的ID信息。
另外,InstancesID信息,也对应设置的BEACON_ID 信息。
3. CFG_EDDYSTONE_URL_BEACON_TYPE测试
将 CFG_BEACON_TYPE 设置为CFG_EDDYSTONE_URL_BEACON_TYPE,然后编译烧录。
从串口监听中,可以看到URL模式启动:
通过手机Beacon Scanner,可以搜索到:
其中显示的网址 https://bbs.21ic.com,正是前面设置的URL_PREFIX和PHYSICAL_WEB_URL。
4. CFG_EDDYSTONE_TLM_BEACON_TYPE测试
将 CFG_BEACON_TYPE 设置为CFG_EDDYSTONE_TLM_BEACON_TYPE,然后编译烧录。
从串口监听中,可以看到TLM模式启动:
通过手机Beacon Scanner,可以搜索到:
不过,暂时未知具体原因,这里没有显示未TLM,和URL呈现一样,其中包括温度和电量的信息。
从这次的测试可以得知,基于STM32WBA5xCG,可以构建各种合适的Beacon硬件设备,例如ID认证、快捷网址、信息上报等,适合多种实际应用场景。
|