iBeacon的简单实践

iBeacon应该是最简单的一种蓝牙应用了,它就是不停的广播一段固定长度(30个字节)的数据。这段数据中除了标准的数据头之外,还有三部分:16字节的UUID,4个字节的Major和Minor,还有1个字节的校准信号强度。下面是我使用Cypress蓝牙芯片进行编程时的样例数据:

packet

Cypress的开发环境做的非常好,所有组件都有图形化配置界面,自动生成代码,并且有非常完善的文档。

iPhone上有一个App叫做Locate,可以查看iBeacon的详细信息,并且可以根据RSSI来粗略的计算手机与iBeacon设备的距离。

704280242057703155

根据我的实践,在距离小于1米的时候,精确度还是不错的,当距离增大时,误差就很大了,并且很不稳定。所以,如果想要使用iBeacon实现定位,就需要部署很多iBeacon,并且要在算法上进行噪音过滤等等,才有可能得到比较实用的定位结果。

544185564968553103

下面是我使用Cypress蓝牙模块实现的iBeacon设备,上面还有一个温度传感器,稍后可以改装成蓝牙温度计。

31943218581766018

这个设备的主要构成是蓝牙模块,所以就不放电路图和PCB了。iBeacon在大部分时间都处于休眠状态,所以功耗很低,我用两节AAA电池供电,应该可以用好久好久。

819142109322878327

参考资料:

https://en.wikipedia.org/wiki/IBeacon

最后还要给想要学习低功耗蓝牙(BLE)技术的同学们推荐一本书:

《Getting Started with BluetoothLow Energy》

Published by

Meng Guang

thinking ahead of what's possible