一、蓝牙技术概述:从经典到低功耗的演进

做嵌入式开发这么多年,蓝牙一直是我工具箱里最常用的无线技术之一。尤其是 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

蓝牙协议栈分三层,这个结构我画过无数次了。咱们用一张图来理解:

蓝牙协议栈三层架构 Application Layer(应用层) GATT Profile / 用户自定义应用 例:心率监测、温度采集、智能灯控 Host Layer(主机层) GATT / GAP / SMP / L2CAP ATT(属性协议)— 数据读写核心 Security Manager — 配对与加密 L2CAP — 数据封装与分段重组 Controller Layer(控制器层) LL(链路层) / PHY(物理层) 射频收发、信道跳频、数据包编码 用户代码 协议栈 硬件

这张图我建议你存下来。做 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