iBeacon应该是最简单的一种蓝牙应用了,它就是不停的广播一段固定长度(30个字节)的数据。这段数据中除了标准的数据头之外,还有三部分:16字节的UUID,4个字节的Major和Minor,还有1个字节的校准信号强度。下面是我使用Cypress蓝牙芯片进行编程时的样例数据:
Cypress的开发环境做的非常好,所有组件都有图形化配置界面,自动生成代码,并且有非常完善的文档。
iPhone上有一个App叫做Locate,可以查看iBeacon的详细信息,并且可以根据RSSI来粗略的计算手机与iBeacon设备的距离。
根据我的实践,在距离小于1米的时候,精确度还是不错的,当距离增大时,误差就很大了,并且很不稳定。所以,如果想要使用iBeacon实现定位,就需要部署很多iBeacon,并且要在算法上进行噪音过滤等等,才有可能得到比较实用的定位结果。
下面是我使用Cypress蓝牙模块实现的iBeacon设备,上面还有一个温度传感器,稍后可以改装成蓝牙温度计。
这个设备的主要构成是蓝牙模块,所以就不放电路图和PCB了。iBeacon在大部分时间都处于休眠状态,所以功耗很低,我用两节AAA电池供电,应该可以用好久好久。
参考资料:
https://en.wikipedia.org/wiki/IBeacon
最后还要给想要学习低功耗蓝牙(BLE)技术的同学们推荐一本书: