1. 蓝牙技术概述:从1.0到5.4,我们到底在连什么?
各位同学好,我是老周。做嵌入式这行十几年了,蓝牙协议栈是我打交道最多的东西之一。今天咱们开篇先聊聊蓝牙的来龙去脉——你想想看,一个技术能活二十多年,从手机耳机连到智能灯泡,背后肯定有不少门道。
我个人习惯把蓝牙技术分成三个维度去理解:发展史(知道它怎么来的)、双模差异(知道怎么选)、应用场景(知道用在哪)。这三个点搞清楚了,后面学协议栈才不会晕。
1.1 蓝牙发展史:从1.0到5.4,踩过的坑比代码还多
蓝牙这名字挺有意思,取自十世纪丹麦国王Harald Bluetooth的名号——寓意是「统一」。当年爱立信、诺基亚、英特尔这帮人搞出这个技术,就是想统一短距离无线通信。结果呢?统一是统一了,但版本迭代的过程,嗯,一言难尽。
| 版本 | 发布年份 | 核心变化 | 我印象最深的事 |
|---|---|---|---|
| 1.0/1.0B | 1999 | 首个规范,速率1Mbps | 设备间互不兼容,基本没法用 |
| 1.1 | 2002 | 修复大量互操作问题 | 终于能连上了,但速度感人 |
| 2.0 + EDR | 2004 | 增强数据速率,3Mbps | 蓝牙耳机开始普及,我记得当时买了个索爱的 |
| 2.1 | 2007 | 安全简单配对(SSP) | 配对体验大幅提升,不用输PIN码了 |
| 3.0 + HS | 2009 | 高速,借用Wi-Fi传数据,24Mbps | 想法很好,实际用的人不多 |
| 4.0 | 2010 | 低功耗蓝牙(BLE)诞生 | 这是分水岭,物联网的起点 |
| 4.1/4.2 | 2013/2014 | IPv6支持,数据长度扩展 | 我开始用BLE做网关项目 |
| 5.0 | 2016 | 4倍距离,2倍速度,广播扩展 | Mesh网络成为可能 |
| 5.1/5.2 | 2019/2020 | 方向发现,LE Audio,LC3编码 | 音频体验质的飞跃 |
| 5.3/5.4 | 2021/2023 | 加密增强,广告加密,PAwR | 更适合大规模设备网络 |
关键转折点:4.0版本是蓝牙历史上最重要的分水岭。在此之前,蓝牙是「有线替代品」;在此之后,蓝牙成了「物联网连接器」。我在2012年第一次接触BLE开发时,就被它的功耗震惊了——一颗纽扣电池跑一年,这在以前想都不敢想。
1.2 经典蓝牙 vs 低功耗蓝牙:双模芯片背后的两个世界
很多初学者会问:为什么蓝牙要分经典和低功耗?直接做一个通用的不行吗?
答案是:需求完全不同。经典蓝牙(BR/EDR)是为持续流媒体设计的,比如听音乐、打电话;低功耗蓝牙(BLE)是为间歇小数据设计的,比如传个传感器读数、发个开关指令。你非要用BLE听歌,那延迟和音质会让你崩溃;你非要用经典蓝牙做温湿度计,电池三天就得换。
我做过一个网关项目,客户要求同时支持蓝牙耳机和BLE传感器。当时选型的时候,我建议直接用双模芯片(比如Nordic nRF52840或TI CC2652),一颗芯片同时跑BR/EDR和BLE协议栈。省事,也省PCB面积。
| 对比维度 | 经典蓝牙 (BR/EDR) | 低功耗蓝牙 (BLE) |
|---|---|---|
| 设计目标 | 连续数据流,高吞吐 | 低功耗,间歇传输 |
| 信道数 | 79个,1MHz间隔 | 40个,2MHz间隔 |
| 调制方式 | GFSK,π/4-DQPSK,8DPSK | GFSK |
| 峰值速率 | 2-3 Mbps (EDR) | 1-2 Mbps (5.0可达2M) |
| 功耗 | ~30mA (持续连接) | ~5mA (连接),~1μA (待机) |
| 网络拓扑 | 微微网 (1主7从) | 广播、连接、Mesh |
| 典型应用 | 耳机、音箱、车载 | 传感器、信标、医疗设备 |
避坑指南:我曾经在一个项目中,用BLE做音频传输,结果发现延迟高达200ms,根本没法用。后来换成经典蓝牙,延迟降到40ms。所以选型时一定要搞清楚:你的应用是「流」还是「包」?是「持续」还是「间歇」?
1.3 蓝牙应用场景分析:从耳机到工业网关
蓝牙的应用场景,说白了就三大类:音频、数据、定位。但每一类下面,细分起来花样就多了。
1.3.1 音频场景:经典蓝牙的主场
- 无线耳机/音箱:这是最经典的应用。A2DP传音乐,HFP打电话,AVRCP控制播放。我调试过不少音频卡顿的问题,多半是射频干扰或协议栈优先级没配好。
- 助听器/听力辅助:5.2引入的LE Audio,用LC3编码,功耗更低、音质更好。我有个朋友在做助听器,他说LE Audio让助听器终于能跟手机直连了。
- 车载免提:HFP协议,虽然老,但稳定。我见过一些车机用BLE做电话,结果音质一塌糊涂——嗯,经典蓝牙在这块还是不可替代的。
1.3.2 数据场景:BLE的天下
- 可穿戴设备:手环、手表、心率带。数据量小,频率低,BLE的功耗优势完美匹配。我做过一个心率带项目,用BLE传心率数据,一颗CR2032电池跑了8个月。
- 智能家居:灯泡、门锁、窗帘。BLE Mesh让这些设备可以组网,一个网关控制几十个设备。我在家里装了20多个BLE Mesh灯泡,用了两年没出过问题。
- 医疗健康:血糖仪、体温计、血氧仪。BLE的GATT服务定义了标准的健康设备配置文件,比如Blood Pressure Profile。我帮一家医疗公司做过认证,BLE的互操作性测试比经典蓝牙严格得多。
- 工业传感器:温湿度、振动、压力。5.4的PAwR(Periodic Advertising with Responses)让大规模传感器网络成为可能。我最近在做一个工厂项目,用PAwR轮询200多个传感器,延迟控制在100ms以内。
1.3.3 定位场景:蓝牙的新战场
- 室内定位:利用RSSI或AoA/AoD做位置估计。5.1引入的方向发现,精度可以达到米级甚至亚米级。我在一个商场项目中,用蓝牙AoA做室内导航,定位精度做到了0.5米。
- 信标(Beacon):苹果的iBeacon、Google的Eddystone。虽然现在热度不如前几年,但在博物馆、展会等场景仍然有用。
- 物品查找:苹果的AirTag用的就是BLE+UWB。BLE负责低功耗连接和广播,UWB负责精确定位。
注意:蓝牙定位的精度受环境影响很大。金属、人体、多径反射都会导致RSSI波动。我曾经在仓库里做定位测试,同一个位置,上午和下午的RSSI差了10dB。所以做定位项目时,一定要做现场校准,别指望算法能解决所有问题。
1.4 蓝牙协议栈全景图:一张SVG看懂
下面这张图是我自己画的蓝牙协议栈架构。你仔细看,左边是经典蓝牙的协议栈,右边是低功耗蓝牙的协议栈。中间是共同的部分——L2CAP、HCI、Link Layer。搞懂了这张图,你就知道蓝牙到底是怎么工作的。
这张图你看懂了吗?我简单解释一下:
- 最上层是应用层:你写的业务逻辑就在这。经典蓝牙用Profile(比如HFP、A2DP),BLE用GATT Service(比如心率、电量)。
- 中间是协议层:L2CAP负责数据分包重组,HCI是主机和控制器之间的通信接口。这两个层双模共用,所以很多双模芯片的协议栈代码是共享的。
- 最下层是射频层:经典蓝牙79个信道,BLE 40个信道。信道数不同,跳频算法也不同。我在调试射频问题时,经常用频谱仪看跳频图案——嗯,这招很管用。
个人经验:初学者最容易犯的错误是搞混GAP和GATT。GAP管「连接」——谁广播、谁扫描、谁发起连接;GATT管「数据」——连接建立后,怎么读写数据。我见过有人把GATT写在广播里,结果数据根本传不出去。记住:GAP是连接前的事,GATT是连接后的事。
1.5 本章小结:你该带走什么?
这一章我们聊了蓝牙的来龙去脉、双模差异和应用场景。你不需要记住所有版本号,但下面这几点,我建议你刻在脑子里:
- 蓝牙4.0是分水岭:BLE的出现让物联网成为可能。如果你做低功耗设备,选BLE;如果你做音频设备,选经典蓝牙。
- 双模芯片是趋势:现在的芯片大多同时支持BR/EDR和BLE。选型时优先考虑双模,灵活性更高。
- 场景决定协议:音频用A2DP/HFP,传感器用GATT,定位用AoA/Beacon。别拿BLE做音频,也别拿经典蓝牙做传感器——我踩过的坑,你别再踩了。