BLE基础学习
目录
GAP (Generic Access Profile)
通用访问协议:主要负责设备的连接、广播和角色定义。
ATT (Attribute Protocol)
配置属性协议:用于发现、读取和写入对端设备上的属性。
GATT (Generic Attribute Profile)
通用属性协议:定义了BLE设备之间的具体通信方式,通过Services和Characteristics实现数据的传输和交换。
iBeacon
iBeacon是苹果公司推出的一种基于BLE技术的定位和传感应用。它使用了BLE广播包来发送特定格式的数据,这些数据包包含了设备的唯一标识符(UUID)、主要(Major)、次要(Minor)标识符以及设备的信号强度(RSSI)。通过检测和解析这些广播包,可以实现基于位置的服务,如室内导航、位置推送、附近场所提醒等。
广播报文格式
前导 | 接入地址 | PDU(协议数据单元) | 校验 | ||
报头 | 长度 | 数据 | |||
1 byte | 4 byte | 1 byte | 1 byte | 0~37 byte | 3 byte |
广播类型
ADType | Value | 描述 | 备注 |
---|---|---|---|
Flags | 0x01 | 标注蓝牙特性 | |
Service UUIDs | 0x02 | 标注服务UUID | 非完整的16 bit UUID列表 |
Service UUIDs | 0x03 | 标注服务UUID | 完整的16 bit UUID列表 |
Service UUIDs | 0x04 | 标注服务UUID | 非完整的32 bit UUID列表 |
Service UUIDs | 0x05 | 标注服务UUID | 完整的32 bit UUID列表 |
Service UUIDs | 0x06 | 标注服务UUID | 非完整的128 bit UUID列表 |
Service UUIDs | 0x07 | 标注服务UUID | 完整的128 bit UUID列表 |
Local Name | 0x08 | 标注名称 | 设备简称 |
Local Name | 0x09 | 标注名称 | 设备全名 |
TX Power Level | 0x0A | 标注射频发射功率 | 表示设备发送广播包的信号强度 |
Simple Pairing Option OOB Tags | 0x0D | 标注安全管理带我外标签 设备类别 | |
Simple Pairing Option OOB Tags | 0x0E | 标注安全管理带我外标签 设备配对的Hash值 | |
Simple Pairing Option OOB Tags | 0x0F | 标注安全管理带我外标签 设备配对的随机值 | |
Security Manager TK Value | 0x10 | 标注 带外方式配对绑定时的TK TK安全管理 | |
Security Manager Out of Band | 0x11 | 标注带外特性标志 | 带外安全管理 |
Slave Connection Interval Range | 0x12 | 标注连接参数范围 外设(Slave)连接间隔范围 | |
List of 16-bit Service Solicitation UUIDs | 0x14 | 标注主机特定服务 | 服务搜寻16 bit UUID列表 |
List of 128-bit Service Solicitation UUIDs | 0x15 | 标注主机特定服务 | 服务搜寻128 bit UUID列表 |
Service Data | 0x16 | 服务数据 16 bit UUID Service,前两个字节是UUID,后面是Service的数据 | |
Public Target Address | 0x17 | 公开目标地址,表示希望这个广播包被指定的目标设备处理,此设备绑定了公开地址 | |
Random Target Address | 0x18 | 随机目标地址,表示希望这个广播包被指定的目标设备处理,此设备绑定了随机地址 | |
Appearance | 0x19 | 表示设备的外观 | |
Advertising Interval | 0x1A | 广播区间 | |
LE Bluetooth Device Address | 0x1B | LE设备地址 | |
LE Role | 0x1C | LE设备角色 | |
Simple Pairing Hash C-256 | 0x1D | 256位设备配对的Hash值 | |
Simple Pairing Randomizer R-256 | 0x1E | 256位设备配对的随机值 | |
Service Data - 32-bit UUID | 0x20 | 32 bit UUID Service,前4个字节是UUID,后面是Service的数据 | |
Service Data - 128-bit UUID | 0x21 | 128 bit UUID Service,前16个字节是UUID,后面是Service的数据 | |
3D Information Data | 0x3D | 3D信息数据 | |
Manufacturer Specific Data | 0xFF | 厂商信息 厂商自定义数据,厂商自定义的数据中,前两个字节表示厂商ID,剩下的是厂商自己按照需求添加,里面的数据内容自己定义。 |
UUID
在Bluetooth Low Energy(BLE)中,UUID(Universally Unique Identifier,通用唯一标识符)用于唯一标识BLE设备的服务、特征值和描述符等。
- UUID通常有以下两种类型:
-
16位UUID:这是最常见的UUID格式。它可以是128位UUID的缩写,前12位是固定的预定义UUID,后面4位是由厂商自己定义的。例如,0x1800表示通用访问服务(Generic Access Service)。
-
128位UUID:这种UUID的唯一性更高,可以完全自定义。一般情况下,它是一个32位十六进制数字串,例如,00001800-0000-1000-8000-00805F9B34FB,其中前面32位是通用UUID,用于标识服务、特征值或描述符的类型,后面96位是具体的UUID,用于标识具体的服务、特征值或描述符。
蓝牙中常见的一些服务名称及其对应的UUID列表如下所示:
服务 | 名称 | UUID |
---|---|---|
通用访问服务 | Generic Access Service | 0x1800 |
通用属性服务 | Generic Attribute Service | 0x1801 |
设备信息服务 | Device Information Service | 0x180A |
环境传感器服务 | Environmental Sensing Service | 0x181A |
心率测量服务 | Heart Rate Service | 0x180D |
体温测量服务 | Health Thermometer Service | 0x1809 |
蓝牙 Mesh 网络服务 | Bluetooth Mesh Networking Service | 0x1828 |
更多查看(Bluetooth-SIG)
自定义服务:除了上述标准服务外,厂商或开发者还可以定义自己的服务,并为其分配自定义的UUID。