蓝牙BLE的一些知识点

蓝牙之间的通信方式可以分为直连与广播两种类型。4.1以上版本的蓝牙通常支持低功耗广播模式,即BLE模式。

主从设备的区分

在BLE通信场景里,主从设备的区分如下:

  • 从设备 通常为低功耗、低运算能力的设备,如传感器模块。
  • 主设备 通常为手机、电脑等

以CS架构做类比,从设备主设备分别对应服务器端与客户端。

主从连接的特点

  • 蓝牙BLE通信时,不需要主从设备配对,但两者仍需要建立连接。
  • 一个主设备可以同时连接多个从设备。
  • 从设备通常只能连接一个主设备。

通信距离

可靠的通信距离为2至5米。在空旷无阻碍的环境,最远可达30米。

数据包说明

BLE协议

关于蓝牙BLE协议的一些说明:

  • Profile 可分为GAP与GATT:
    • GAP包含不需要建立连接的通信包,如从设备的广播与发现数据包,iBeacon数据包等。
    • GATT包含连接建立后的通信包。
  • Service 表示厂商为自己的设备定义的服务。不同服务可通过UUID区分。BLE官方认证的服务(如Heart Rate Service)使用16 Bit的UUID,未认证的服务通常使用128 Bit的UUID,由厂商自行实现。
  • Characteristics 用于主从设备间的具体数据交换。从设备通常会预定义读写权限。
    • 具有可写权限时,通过Write Request表示主设备写成功后需从设备应答,通过Write Command写入无需应答的数据
    • 对于广播数据,可分为Notify与Indicate。Notify表示从设备主动推送数据时无需主设备应答,Indicate表示推送成功后,主设备需要应答。

关于设备名称

从设备端编程时需要同时配置Local Name与Device Name。这是因为Local Name写于GATT包中(即0X1800服务的0X2A00 Characteristics),而Device Name出现于GAP包中。不同主设备有可能用不同字段去识别设备名。

BLE Beacon

Beacon协议里最有代表性的是苹果的iBeacon,它通过GAP包广播蓝牙信号RSSI数据,用于在主设备端判断主从设备的距离。Beacon通信的特点是无需建立连接,单向通信。

iBeacon数据包示例,括号中的数字表示此字段包含的字节数:

厂商ID(2) 数据类型(1) 数据长度(1)  UUID(16)            Major(2)  Minor(2)  RSSI每米(1)
4A00     02         15         XXXX-XXXX-XXXX-XXXX EDAE      8911      B6

由上图可见,总共需要25个字节,故只有支持25字节厂商数据的蓝牙模块才能使用iBeacon协议。

与iBeacon类似的还有Google的Eddystone,它的距离数据包只需要20个字节。与iBeacon不同的是,它广播的是从设备的发送功率,可参考Eddystone-EID

Comment