概念:蓝牙4.0和BLE
通常在我遇到的不懂蓝牙或者了解一点蓝牙的朋友看来,往往将BLE等同于蓝牙4.0,其实不然。
蓝牙4.0是协议,4.0是协议版本号,蓝牙4.0是6月由SIG(Special Interest Group)发布的蓝牙标准,它有2种模式:
BLE(Bluetooth low energy)只能与4.0协议设备通信,适应节能且仅收发少量数据的设备(如家用电子);
BR/EDR(Basic Rate / Enhanced Data Rate),向下兼容(能与3.0/2.1/2.0通信),适应收发数据较多的设备(如耳机)。这个模式常常也有人称之为“传统蓝牙”或“经典蓝牙”。
可以这样理解,蓝牙4.0协议包含BLE,BLE隶属于蓝牙4.0协议的一部分
关于低功耗蓝牙
对于我来说,着重学习低功耗蓝牙,即Bluetooth LE。
Bluetooth Low Energy (也被称为Bluetooth 4.0、BLE、BTLE),下面记作BLE,是使用2.4GHz的无线短距离无线通信标准。迄今为止,虽然高速蓝牙已经实现,但BLE在通讯速度上比较普通,主要强调一个纽扣电池能够工作几年的这种省电性能。
设备端和主机端使用GATT(Generic ATTribute) profile进行通信。如果你听到GATT这个名词,就可以将其想成使用BLE,这没什么问题。
由于与传统蓝牙不兼容,在主机端,和蓝牙3.0合并做为双模,实现成两者都可以使用的情况比较多。在PC机和智能手机上,使用双模的被称作「Bluetooth Smart Ready」,只支持低功耗蓝牙的被表示成「Bluetooth Smart」。
顺便说一句,最早诺基亚在制定了名为Wibree的技术标准,但它已在被标准化为蓝牙4.0。
GATT profile
GATT已经成为BLE通信的规定,每一个设备中存在很多的“service”(服务),service中还包含有多个“Characteristic”(特征值)。
在蓝牙实际数据交换中,就是通过读写这些“Characteristic”来实现的。
可以这样来理解这两个概念:service即面向对象中的“类”的概念,characteristic即面向对象中“属性”的概念。
每个characteristic的值可以在不加密的状态下读写,但配对的操作是加密的。还有当characteristic的值已改变时,可接收通知(notify)。
除了那些蓝牙技术联盟定义为标准的服务和characteristic之外,设备的开发者也可以自己定义。
一些必要的服务组合成所谓的“profile”。(特别是在需要和传统蓝牙区别开的情况下的情况下,称为基于GATT的profile)蓝牙技术联盟也定义了标准的profile,例如,对应于鼠标键盘“HID over GATT“ profile,是定义成包括「Human Interface Device」「Device Information」「Battery Service」「Scan Parameters(可选)」这些服务的。
服务和characteristic是通过UUID来进行识别的。UUID是32位的,但那些被蓝牙技术联盟的标准中定义的UUID是以四个数字来表示的。实际上,四位数的UUID,是有附加Bluetooth Base UUID,即变成0000●●●●-0000-1000-8000-00805f9b34fb(4位UUID被输入在●的位置)。