1. BLE概述:低功耗蓝牙技术发展史、核心应用场景与经典蓝牙的区别

1.1 从蓝牙到低功耗蓝牙——一段技术演进史

蓝牙技术诞生于1994年,爱立信想用一根无线电缆替代RS232串口线。1999年,蓝牙1.0正式发布,传输速率只有1Mbps,功耗却高得吓人。那时候我还在读大学,实验室里用蓝牙模块做无线数据传输,两节AA电池撑不过三天。

真正改变格局的是2010年。蓝牙4.0规范发布,低功耗蓝牙(BLE)作为核心规范的一部分正式登场。为什么叫“低功耗”?说白了,它重新设计了协议栈——不再追求高吞吐量,而是把“省电”放在第一位。

我记得2012年第一次拿到TI的CC2540开发板,用一颗纽扣电池驱动BLE模块,连续广播了三个月还有电。当时我就意识到,这东西会改变物联网的玩法。

BLE的发展有几个关键节点:

  • 蓝牙4.0(2010):BLE首次纳入规范,单模芯片出现
  • 蓝牙4.2(2014):引入LE Secure Connections,支持IPv6
  • 蓝牙5.0(2016):广播容量提升8倍,传输距离翻4倍
  • 蓝牙5.1(2019):加入AoA/AoD定位,精度达到厘米级
  • 蓝牙5.2(2020):LE Audio登场,LC3编码器,支持多流音频
  • 蓝牙5.3(2021):连接子速率、信道分类增强

你想想看,从4.0到5.3,BLE的广播数据包从31字节扩展到255字节,传输距离从10米延伸到400米(LE Coded PHY)。这些数字背后,是无数工程师在功耗和性能之间反复权衡的结果。

1.2 BLE的核心应用场景

BLE能火起来,不是因为它比经典蓝牙“更好”,而是它找到了自己的生态位。我把它归纳为三大战场:

1.2.1 IoT(物联网)

智能家居、传感器网络、信标(Beacon)、资产追踪……这些场景的共同特点是:设备数量多、数据量小、电池寿命要求长。BLE的广播模式正好匹配——一个温度传感器每隔几秒发一个数据包,用CR2032纽扣电池跑两年,经典蓝牙根本做不到。

我在做智能门锁项目时遇到过一个问题:门锁用BLE连接手机开锁,但手机靠近时门锁需要快速响应。如果BLE一直保持连接,功耗会高;如果断开,连接建立又慢。后来我们用了蓝牙5.0的广播扩展+周期性广播,既省电又实现了亚秒级响应。

经验之谈:IoT场景下,不要盲目追求高连接速率。BLE的“连接间隔”参数直接影响功耗——间隔越长越省电,但延迟也越大。我一般从100ms起步调试,根据实际响应需求逐步缩短。

1.2.2 可穿戴设备

手环、手表、智能戒指、医疗贴片……这些设备对体积和功耗极度敏感。BLE的GATT(通用属性协议)提供了标准化的数据交换模型,心率、步数、血氧这些数据都有现成的Profile,不用自己从头定义。

我记得2015年帮一家创业公司做智能手环,他们想把经典蓝牙的SPP协议移植到BLE上,结果发现功耗根本压不住。后来改用BLE的Notification机制——数据由外设主动推送,主机不用轮询,功耗直接降了70%。

1.2.3 医疗健康

连续血糖监测仪(CGM)、心电贴、血氧仪……医疗设备对数据可靠性和低延迟有严格要求。BLE 5.0引入的LE 2M PHY把物理层速率翻倍,配合数据长度扩展(DLE),单次连接事件可以传输更多数据,这对医疗场景非常关键。

我曾经参与过一个CGM项目,传感器每5分钟上报一次血糖数据,BLE连接间隔设为30ms,DLE开到251字节,一次连接事件就能把历史数据全部传完,然后设备立刻进入休眠。实测下来,一颗CR2032电池能用14天,完全满足临床要求。

核心观点:BLE不是“万能药”,但在低功耗、小数据量、短距离通信的场景下,它几乎没有对手。

1.3 BLE与经典蓝牙的区别

很多初学者会把BLE和经典蓝牙搞混。其实从蓝牙4.0开始,蓝牙技术联盟就把它们定义为两种不同的无线电系统。我画了一张对比图,帮你快速建立认知框架:

BLE vs 经典蓝牙 核心差异 经典蓝牙 (BR/EDR) 传输速率:1-3 Mbps 功耗:~100mW(持续连接) 拓扑:Piconet(1主7从) 连接方式:主动配对+持续连接 典型场景:音频耳机、文件传输 协议栈:RFCOMM/SPP/HFP/A2DP 电池寿命:小时~天 信道:79个(1MHz间隔) 低功耗蓝牙 (BLE) 传输速率:125kbps - 2Mbps 功耗:~1-10mW(广播/连接) 拓扑:广播+连接(多对多) 连接方式:广播发现+快速连接 典型场景:传感器、信标、穿戴 协议栈:GATT/GAP/L2CAP 电池寿命:月~年 信道:40个(2MHz间隔) BLE和经典蓝牙使用相同的2.4GHz ISM频段,但物理层、协议栈、应用模型完全不同 双模芯片同时支持两者,单模芯片只支持BLE

从这张图你能看出,BLE和经典蓝牙的差异是全方位的。我挑几个最关键的展开说:

1.3.1 物理层差异

经典蓝牙用79个信道,每个1MHz带宽,采用跳频技术。BLE只用40个信道,每个2MHz带宽——信道少了,但每个信道的带宽更宽,接收机设计更简单,功耗自然更低。BLE的40个信道中,3个是广播信道(37/38/39),37个是数据信道。

为什么广播信道只有3个?我刚开始也不理解。后来做信标项目时发现,3个广播信道分布在2.4GHz频段的不同位置(2402MHz、2426MHz、2480MHz),可以有效避开Wi-Fi的干扰。你想想看,如果广播信道太多,扫描设备就要花更多时间监听,功耗反而上去了。

1.3.2 连接模型差异

经典蓝牙的连接是“持续连接”——配对后,主从设备之间一直保持射频链路,即使没有数据也要发送空包维持连接。BLE的连接是“事件驱动”——主从设备在约定的连接事件(Connection Event)内交换数据,其余时间射频关闭,进入休眠。

这个差异直接决定了功耗量级。经典蓝牙的持续连接功耗在几十到上百毫瓦,BLE的连接功耗可以做到微瓦级别。我做过一个实验:用nRF52832跑BLE连接,连接间隔设为1秒,平均电流只有12μA——一颗CR2032电池理论上能跑两年多。

1.3.3 协议栈差异

经典蓝牙的协议栈很重,RFCOMM、SPP、HFP、A2DP……每个Profile都是一套完整的协议。BLE的协议栈很轻,核心只有GAP(通用访问协议)和GATT(通用属性协议)。GAP负责设备发现和连接管理,GATT负责数据读写和通知。

GATT的“属性”概念非常巧妙——每个数据项都是一个属性,有UUID、句柄、权限和值。外设通过Service和Characteristic组织数据,主机通过读写和Notification获取数据。这种模型非常适合传感器数据上报:温度、湿度、心率……每个数据都是一个Characteristic,清晰又标准。

避坑指南:我曾经在项目里把BLE的GATT Notification当成TCP来用——频繁发送大量数据,结果发现设备功耗飙升。后来才意识到,BLE的Notification虽然不需要主机应答,但每次发送都会唤醒射频,发送频率越高功耗越大。对于批量数据,建议先缓存,然后在一次连接事件中用DLE发送。

1.4 如何选择:BLE还是经典蓝牙?

这个问题我经常被问到。其实选择标准很简单:

场景 推荐方案 原因
无线音频(耳机、音箱) 经典蓝牙 A2DP/HFP成熟,延迟低
传感器数据上报 BLE 功耗低,纽扣电池可驱动
文件传输 经典蓝牙 吞吐量高,SPP协议成熟
信标/室内定位 BLE 广播模式,无需配对
医疗设备(CGM、心电) BLE 低功耗+标准化Health Profile
手机外设(键盘、鼠标) BLE HID over GATT Profile

不过现在边界在模糊。LE Audio发布后,BLE也能做高质量音频了。蓝牙5.2的LE Audio支持LC3编码器,音质不输经典蓝牙的SBC,功耗还更低。我预测未来3-5年,BLE会逐步蚕食经典蓝牙在音频领域的份额。

一句话总结:BLE是为“小数据、长续航”而生的,经典蓝牙是为“大数据、低延迟”而生的。选哪个,看你的电池和带宽需求。

好了,这一章的内容就到这里。BLE的底层原理、协议栈细节、实际开发中的坑,我们后面会一章一章拆开讲。记住今天这张对比图,后面所有内容都会围绕它展开。