BLE(Bluetooth Low Energy,Bluetooth LE)是 Bluetooth 面向低功耗、短包、低占空比设备通信的技术体系,常用于传感器、可穿戴设备、门锁、遥控器和 IoT 设备。
核心问题
很多设备不需要持续传输大流量数据,只需要偶尔广播身份、建立短连接、读写几个状态值或推送小包通知。传统高吞吐无线链路会让电池设备承担过高功耗。BLE 解决的是“用较低功耗完成发现、连接和小数据交互”的问题。
核心机制
BLE 栈大致分为 controller 和 host:
| 层/模块 | 作用 | 直觉 |
|---|---|---|
| Physical Layer | 2.4 GHz 无线调制和频道 | 真正发射和接收射频信号 |
| Link Layer | 广播、扫描、连接、链路控制 | 管空口包和连接状态 |
| HCI | host 与 controller 的接口 | 操作系统和蓝牙芯片之间的命令/事件 |
| L2CAP | 协议复用、分段重组 | 把上层协议送到正确通道 |
| ATT | attribute table 访问协议 | 按 handle 读写小数据项 |
| GATT | service/characteristic 数据模型 | 应用看到的 BLE 数据树 |
| GAP | 发现、连接、安全和角色 | 谁广播、谁扫描、谁发起连接 |
典型 BLE 交互流程是:
- peripheral 广播 advertising data。
- central 扫描并根据地址、名称、service UUID 或 manufacturer data 选择目标。
- central 发起连接,双方协商连接参数和安全。
- GATT client 执行 service discovery。
- client 读写 characteristic 或订阅 notification/indication。
- 空闲后断开或保持低占空比连接。
工程用途
- 手机与低功耗外设通信。
- 设备配网、状态查询、低速控制命令。
- 传感器周期性上报和告警通知。
- 可穿戴设备、电池设备、近场配置工具。
观察 BLE 系统时,重点看广播间隔、扫描窗口、连接间隔、MTU、RSSI、重连率、配对状态、GATT 错误码、notification 丢失和平台蓝牙栈日志。
边界与常见坑
- BLE 不等于 Bluetooth Classic:音频 A2DP、传统串口 SPP 等通常属于 Classic,不是 GATT/BLE 模型。
- BLE 不适合大吞吐万能传输:可以优化吞吐,但协议设计初衷仍偏短包和低功耗。
- 广播数据和 GATT 数据不同:广播发生在非连接态,GATT 典型发生在连接态。
- central/peripheral 不等于 client/server:GAP 角色管连接,GATT 角色管数据访问。
- 平台 API 差异很大:Android、iOS、BlueZ、Zephyr、ESP-IDF 对扫描、缓存、MTU 和权限处理都有差异。
- 低功耗来自系统设计:广播间隔、连接参数、通知频率和睡眠策略比单个 API 更决定功耗。