一、蓝牙技术概述:从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 蓝牙应用场景:物联网、可穿戴、音频、定位

蓝牙的应用场景,我把它分成四大类:

  1. 物联网(IoT):智能家居、传感器、门锁、灯控。BLE Mesh是这里的明星协议。
  2. 可穿戴设备:手表、手环、耳机、医疗设备。低功耗是刚需。
  3. 音频传输:蓝牙耳机、音箱、车载。A2DP、HFP协议是基础。
  4. 室内定位:蓝牙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.0 → 5.4 · 30年演进 ⚡ 技术特点 低功耗 · 短距离 · 高兼容 🌍 应用场景 IoT · 可穿戴 · 音频 · 定位 🧩 蓝牙协议栈 Controller层 → Host层 → Application层 Controller层 物理层 · 链路层 · 跳频 Host层 L2CAP · ATT · GATT · SM Application层 GATT Profile · Service 💡 核心:理解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扫描程序。


公众号:蓝海资料掘金营,微信 deep3321