一、蓝牙技术概述:从经典到低功耗的演进
做嵌入式开发这么多年,蓝牙一直是我工具箱里最常用的无线技术之一。尤其是 STM32 搭配蓝牙模块做产品,几乎成了物联网项目的标配。今天咱们就从最基础的概念聊起,把蓝牙的来龙去脉理清楚。
1.1 蓝牙标准演进:4.0 / 4.2 / 5.0 到底改了啥?
蓝牙技术从 1994 年诞生到现在,经历了十几个版本。但对咱们嵌入式开发者来说,真正有分水岭意义的,是 4.0 版本。
| 版本 | 发布时间 | 核心变化 | 对我开发的影响 |
|---|---|---|---|
| 蓝牙 4.0 | 2010 | 引入 BLE(低功耗蓝牙) | 传感器节点终于能用纽扣电池跑几个月了 |
| 蓝牙 4.2 | 2014 | 数据包长度扩展、隐私保护增强 | 传输效率提升,一次能发更多数据 |
| 蓝牙 5.0 | 2016 | 4 倍距离、2 倍速度、8 倍广播容量 | 室内定位和 Mesh 组网成为可能 |
蓝牙 4.0 最大的贡献,就是把「低功耗」这个概念真正落地了。我记得第一次用 CC2540 做 BLE 项目时,一颗 CR2032 电池跑了 8 个月,当时确实被震撼到了。
蓝牙 4.2 主要解决的是传输效率问题。数据包从 27 字节扩展到 251 字节,这对 OTA 升级场景特别友好。我之前做一个智能锁项目,固件从 4.0 升级到 4.2 后,升级时间缩短了将近一半。
蓝牙 5.0 是真正的大版本。广播容量从 31 字节提升到 255 字节,这意味着信标可以携带更多信息。距离方面,理论上能达到 300 米(空旷环境)。不过说实话,我在实际项目中测下来,室内穿一堵墙大概 30-50 米,够用但别太乐观。
我的建议:新项目直接选蓝牙 5.0 或以上版本。虽然 4.2 仍然能用,但 5.0 在广播和组网方面的优势太明显了,而且芯片成本差距已经很小。
1.2 BLE 低功耗蓝牙核心特性
BLE 之所以省电,说白了就是「能不干活就不干活」。传统蓝牙经典模式(BR/EDR)需要持续保持连接,而 BLE 大部分时间都在睡觉。
BLE 的三大核心机制:
- 广播模式:设备周期性发送数据包,其余时间休眠。广播间隔可以配置,我一般设 100ms 到 1s 之间。
- 连接事件:主从设备约定好时间点交换数据,非事件时间全部休眠。
- 快速切换:从广播态到连接态的切换在 3ms 内完成。
这里有个坑,我踩过好几次——广播间隔设得太短。曾经有个项目,为了追求响应速度,我把广播间隔设成 20ms,结果电池只撑了 3 天。后来改成 200ms,响应慢了 0.2 秒,但电池续航直接到了 3 个月。
经验值:对于大多数传感器上报场景,广播间隔 200-500ms 是比较好的平衡点。如果对实时性要求高,可以考虑用连接模式而非广播模式。
1.3 蓝牙协议栈架构:Controller / Host / Application
蓝牙协议栈分三层,这个结构我画过无数次了。咱们用一张图来理解:
这张图我建议你存下来。做 STM32 开发时,我们主要工作在 Application 层,调用 Host 层提供的 API。Controller 层通常由蓝牙芯片(比如 CC2540、nRF52832)或者 STM32 内部的蓝牙 IP 核来处理。
实际项目中,我习惯把协议栈分成两部分理解:
- Controller:管物理收发,跟硬件强相关。这部分我基本不动,除非做射频调试。
- Host:管数据组织和安全。GATT 协议是咱们打交道最多的,后面章节会详细讲。
- Application:咱们写业务逻辑的地方。比如 STM32 采集温度,通过 GATT 把数据发给手机。
注意:有些蓝牙模块(比如 HC-08、JDY-08)把 Controller 和 Host 都封装在模块内部了,对外只提供串口 AT 指令。这种情况下,STM32 只需要发 AT 指令就能控制蓝牙,但灵活性会受限。选型时要权衡开发效率和功能需求。
1.4 蓝牙 vs WiFi vs Zigbee:怎么选?
这个问题我几乎在每个项目启动会上都会被问到。直接上对比表:
| 特性 | 蓝牙 BLE | WiFi | Zigbee |
|---|---|---|---|
| 功耗 | 极低(μA 级休眠) | 高(mA 级) | 低(μA 级) |
| 传输速率 | 1-2 Mbps | 50-300 Mbps | 250 Kbps |
| 传输距离 | 10-100m(BLE 5.0 可达 300m) | 30-100m | 10-100m(可 Mesh 扩展) |
| 网络拓扑 | 星型、广播 | 星型 | Mesh、树型、星型 |
| 节点数量 | 经典 7 个,5.0 可扩展 | 通常 32-254 | 理论 65000+ |
| 典型场景 | 穿戴、传感器、手机外设 | 摄像头、网关、高速传输 | 智能家居、工业控制 |
| 开发复杂度 | 中等 | 中等 | 较高 |
我的选型原则很简单:
- 需要跟手机通信?选蓝牙。手机原生支持,不需要额外网关。
- 需要传视频或大文件?选 WiFi。蓝牙那点带宽不够用。
- 需要大规模组网且低功耗?选 Zigbee。但要做好协议栈调试的心理准备。
举个例子,我之前做智能家居网关项目,网关本身用 WiFi 连路由器,传感器节点用 Zigbee 组网,而用户手机通过蓝牙直接控制单个设备。三种技术各司其职,并不冲突。
核心观点:没有最好的无线技术,只有最合适的。蓝牙 BLE 在「低功耗 + 手机直连」这个组合上,目前没有对手。这也是为什么 STM32 + 蓝牙模块的组合在物联网终端设备中如此流行。
1.5 本章小结
这一章咱们把蓝牙的底牌翻了一遍:
- 4.0 是 BLE 的起点,4.2 优化了效率,5.0 扩展了能力边界
- BLE 省电的核心是「间歇性工作」,广播间隔是续航的关键参数
- 协议栈三层架构中,咱们主要跟 Application 和 Host 打交道
- 选型时根据功耗、速率、组网需求决定用蓝牙、WiFi 还是 Zigbee