分类: 嵌入式
2016-06-29 15:11:20
iBeacon是最近很火的一个话题,iBeacon可以用于室内定位,你的iPhone进到ibeacon的范围时能够收到相应推送。基于这个技术可以有很多应用:比如自动寻车,超市的售品定位,当然还有很多现在想不到的应用。
现在有很多帖子在说iBeacon是什么,能用来干嘛,但是从技术角度,如何工作的?用到技术是BLE,那么。。。
什么是BLE(Bluetooth Low Energy)?
BLE属于2010年释放的蓝牙4.0规范中的一部分,其实早在2006年Nokia就制定出来了,当时叫做Wibree。BLE在协议上和传统的蓝牙还是不兼容的,而且设备不向后兼容。所以,你现在能看到的蓝牙设备有三种。
Bluetooth:仅仅支持传数据的蓝牙(以后我们就叫传统的蓝牙)。
Bluetooth Smart Ready:支持传统的蓝牙和低功耗蓝牙
Bluetooth Smart:仅仅支持低功耗蓝牙
新版本的智能手机、笔记本电脑、台式机等等基本上都支持传统的蓝牙和低功耗蓝牙即Bluetooth Smart Ready. Beacons,则只支持低功耗的协议(这样设备才能在只有一节干电池的情况下工作很长时间)也就是上面所说的Bluetooth Smart设备。一些老的设备比如老的笔记本电脑、当年的诺基亚按键手机、一些老的外设等则只支持蓝牙协议也就是Bluetooth设备(基本上蓝牙4.0之前的蓝牙都这样)。
BLE的主要优点当然是超低的功耗了。举个栗子,很多Beacon能够只用一节电池连续发信(广)号(告)发两年(好持久,比南孚电池还持久~捂脸)。所以当这个Beacon不工作了,请暴力一点直接换掉。传统蓝牙和BLE都是用的2.4GHz~2.4835GHz的ISM频段。BLE蓝牙传输速率比较低,这样对较大的数据流量请别用BLE,BLE更擅长“发现”和“简单通信”。就通信距离来说,BLE和传统的蓝牙都能达到百米的级别。
BLE通信是怎么工作的?
BLE的通信包含两个大块:“广告”和“连接”
“广告”是实现发现的机制,需要被发现的设备可以20ms~10s的时间间隔一直发包,当然时间间隔越短,功耗就越高,设备被发现的时间就越短。这个“包”可长达47字节:
1字节前导码
4字节接入地址
2-39字节广告信道PDU
3字节CRC
对于“广告”通信信道,4字节的接入地址统一是0x8E89BED6,对于数据信道,每个连接都会不一样。
相应的PDU也有它自己的头结构(2字节:负载长度&类型-是否支持连接..)和真正的负载(可长达37字节)。真正的负载中前6字节是MAC地址信息真正的信息只有31字节的空间。
BLE设备可以工作在不提供连接的广告模式(所有的信息都包含在广告包里面),当然也可以工作在可连接模式(大多数都是酱紫)。
当一个BLE设备被发现了之后,就可以建立连接了。就可以读BLE设备提供的service和每个service提供的characteristic(这里不好翻译啊~~~,请自行百度蓝牙的GATT),每个characteristic都会有一些可读或者可写或者可读可写的value。举个栗子,比如某米的手环,可能会有某个service会提供一些睡眠的数据,另一个service会提供一些计步的数据,据说通过蓝牙嗅探工具就能看到一些characteristic里面有一些value可读可写,已经有大神通过对这些可读可写的value进行了测试,好像能够通过对某一个value进行写1而使得手环震动,也就是说你可以用嗅探工具使旁边妹子的某米手环不停的震动(捂脸~)。然而Beacon是没有用到连接功能的!如果你还想知道更多的连接到旁边妹子手环的细节请参考苹果的蓝牙核心指南,这里写的相当详细(当然,是英文的哦),如果你不是一个IOS开发者,请移步EE times,这里更技术(哈哈,也是英文哦)
Beacon是怎么使用BLE的?
Beacon只是使用了广告信道,正如“beacom”名字所说,beacon在规定的时间间隔内不断的发包,你的智能手机就可以收到这些包。所以IBeacon是BLE广告功能的一个典型应用,一些附加的功能都是在IOS端实现的。
如果你嗅探iBeacon的广告包,比如说是你会得到如下的数据:
点击(此处)折叠或打开
蓝牙嗅探工具:如果你是MacOS,,如果你是windows,
上面抓到的数据已经把各种头结构都去掉了,连Mac地址也去掉了,剩下的是30字节的广告数据,最大的只可以是31字节长哦。
我们来分析一下数据包,推荐看更详细的:
点击(此处)折叠或打开
下面,如果你想实现这样一个beacon,其实不需要什么专业的设备,如果你手上有支持蓝牙4.0的手机,或者笔记本电脑,你就可以将这些设备变成你想要的iBeacon,如果你有iPhone4s及以上的苹果手机,请移步AppStore搜“Locate iB”,如果你是MacOS,当然树莓派也是可以的。