一、蓝牙技术概述:从1.0到5.4,我们走过的路
说起蓝牙,大家可能第一反应就是「连耳机、传文件」。但作为一个在嵌入式领域摸爬滚打多年的开发者,我想说:蓝牙远比你想象的复杂,也远比你想象的强大。
我个人习惯把蓝牙技术分成两个时代来看:经典蓝牙时代和低功耗蓝牙(BLE)时代。这两个时代的分水岭,就是蓝牙4.0。
1.1 蓝牙发展史:从1.0到5.4
蓝牙技术诞生于1994年,由爱立信公司提出。初衷很简单——用无线替代RS232数据线。嗯,你没看错,最初就是为了干掉那根串口线。
| 版本 | 发布时间 | 核心特性 | 我的评价 |
|---|---|---|---|
| 1.0/1.1 | 1999-2001 | 基础蓝牙,速率约1Mbps | 「能连上就算赢」的时代 |
| 2.0/2.1 | 2004-2007 | EDR增强速率,达3Mbps | 终于能传音乐了 |
| 3.0 | 2009 | 引入AMP,可借用WiFi高速传输 | 想法很好,但实际用得少 |
| 4.0 | 2010 | BLE低功耗诞生 | 划时代!物联网的起点 |
| 4.1/4.2 | 2013-2014 | IoT优化、隐私增强 | 「蓝牙开始认真考虑物联网了」 |
| 5.0 | 2016 | 4倍距离、2倍速度、广播容量大增 | 我项目中用得最多的版本 |
| 5.1/5.2 | 2019-2020 | 方向定位、LE Audio | 室内定位终于靠谱了 |
| 5.3/5.4 | 2021-2023 | 低功耗增强、加密改进 | 更稳、更省、更安全 |
我记得刚入行那会儿,项目用的是蓝牙2.1。配对流程那叫一个痛苦——要手动输入PIN码,动不动就连不上。后来升级到4.0,第一次体验到BLE的功耗表现,说实话,我被震撼到了。一颗纽扣电池跑一年,这在以前想都不敢想。
核心观点:蓝牙4.0是分水岭。4.0之前是「经典蓝牙」,4.0之后是「双模蓝牙」(经典+低功耗)。现在的Android手机,基本都是双模芯片。
1.2 蓝牙技术特点:低功耗、短距离、高兼容
蓝牙的技术特点,说白了就三个关键词:省电、够用、兼容。
- 低功耗:BLE的峰值电流约10-15mA,待机电流可低至1μA以下。我做过一个温湿度传感器项目,用CR2032电池,每5秒广播一次,跑了整整14个月。
- 短距离:经典蓝牙约10米,BLE 5.0可达100-200米(视环境)。你想想看,这个距离对手机外设来说,其实刚刚好。
- 高兼容:蓝牙SIG保证了向后兼容。我手头有个蓝牙2.0的键盘,连现在的Android 14手机,照样能用。
避坑指南:我曾经在项目中踩过一个坑——以为BLE 5.0的「4倍距离」是随便就能达到的。后来发现,那是在125kbps编码模式下的理论值。实际项目中,如果你要传音频或大量数据,距离会大打折扣。所以,别被宣传数字忽悠了,实测才是王道。
1.3 蓝牙应用场景:物联网、可穿戴、音频、定位
蓝牙的应用场景,我把它分成四大类:
- 物联网(IoT):智能家居、传感器、门锁、灯控。BLE Mesh是这里的明星协议。
- 可穿戴设备:手表、手环、耳机、医疗设备。低功耗是刚需。
- 音频传输:蓝牙耳机、音箱、车载。A2DP、HFP协议是基础。
- 室内定位:蓝牙Beacon、AoA/AoD定位。5.1版本后精度可达厘米级。
我个人最看好的是物联网方向。为什么?因为蓝牙Mesh的出现,让「一控多」变得极其简单。你想想看,一个手机控制全屋100个灯,每个灯还能互相转发信号——这在WiFi方案里很难做到。
注意:蓝牙Mesh不是BLE的升级版,而是基于BLE的组网协议。它牺牲了部分实时性,换来了大规模组网能力。如果你的项目需要低延迟控制(比如无人机),Mesh可能不适合你。
1.4 蓝牙协议栈概览:从Controller到Application
蓝牙协议栈,说白了就是一套分层架构。我习惯把它分成三层来看:
- Controller层:物理层+链路层。负责发信号、收信号、跳频。这部分通常是芯片厂商搞定的。
- Host层:L2CAP、ATT、GATT、SM等。这是开发者打交道最多的地方。
- Application层:GATT Profile、各种Service/Characteristic。你的业务逻辑在这里。
嗯,这里要注意:Android的蓝牙API封装了Host层的大部分细节。你不需要关心L2CAP怎么分包,但你必须理解GATT的读写机制。否则,你连个心率数据都读不出来。
1.5 为什么Android开发者要学蓝牙?
这个问题我问过自己很多次。答案是:蓝牙是Android设备与外设交互的唯一通用无线接口。
WiFi Direct?兼容性太差。NFC?距离太短。UWB?还没普及。只有蓝牙,每台Android手机都有,而且从4.0开始,BLE成了标配。
我做过一个项目,需要把工业传感器的数据实时显示在手机上。用WiFi?传感器那边没网络。用串口?手机没有物理接口。最后,BLE完美解决了问题——传感器端用nRF52832,手机端用Android BLE API,数据延迟不到50ms。
我的建议:如果你是新手,先别急着啃协议栈。先买一个BLE开发板(比如nRF52840 DK或ESP32),跑通一个「手机读温度」的Demo。当你看到数据成功显示在屏幕上时,那种成就感会推着你继续深入。
好了,这一章我们梳理了蓝牙的来龙去脉、技术特点和应用场景。从下一章开始,我们会真正动手——搭建Android蓝牙开发环境,写你的第一个BLE扫描程序。