一、BLE概述:蓝牙技术演进、BLE与经典蓝牙区别、BLE核心优势、典型应用场景

各位工程师朋友,咱们今天聊聊BLE。说实话,蓝牙技术从诞生到现在,已经走过了二十多个年头。我最早接触蓝牙还是在做功能机的时候,那时候蓝牙主要用来传文件、连耳机,功耗高得吓人。后来BLE(Bluetooth Low Energy)一出来,整个物联网的玩法都变了。

这一节,我会从技术演进讲起,把BLE和经典蓝牙的区别掰开揉碎,再聊聊它的核心优势。最后,我会结合自己踩过的坑,说说哪些场景真正适合用BLE。

1.1 蓝牙技术演进:从1.0到5.4

蓝牙技术从1999年推出1.0版本,到现在已经迭代到5.4版本。我个人习惯把这段历史分成三个阶段:

  • 经典蓝牙时代(1.0-3.0):主打音频传输和文件传输。速率从723kbps一路涨到24Mbps。但功耗一直是个大问题,我记得当年用蓝牙耳机,听两个小时就得充电。
  • BLE诞生(4.0):2010年,蓝牙4.0正式引入低功耗模式。这玩意儿一出来,我就知道物联网有戏了。它把功耗降到了经典蓝牙的十分之一甚至更低。
  • 高速与mesh时代(4.2-5.4):5.0开始支持2Mbps物理层,5.1加入寻向功能,5.2引入LE Audio,5.4新增广播加密。现在BLE已经能跑mesh网络,覆盖全屋智能。

核心变化:蓝牙4.0是分水岭。4.0之前,蓝牙=高功耗;4.0之后,蓝牙=低功耗+高灵活度。

1.2 BLE与经典蓝牙的区别

很多新手会问:BLE和经典蓝牙到底有啥不同?说白了,它们虽然都叫蓝牙,但底层协议栈完全不同。经典蓝牙走的是BR/EDR(基本速率/增强数据率),BLE走的是LE(低能耗)链路层。

我整理了一张对比表,方便大家快速理解:

对比项 经典蓝牙(BR/EDR) BLE(低功耗蓝牙)
设计目标 持续数据流(音频、文件) 短数据包、低功耗、间歇通信
功耗 约1W(持续连接) 0.01W~0.5W(大部分时间休眠)
峰值速率 2~3Mbps(实际) 1Mbps(LE 1M)/ 2Mbps(LE 2M)
连接延迟 约100ms 3ms~6ms(可配置)
信道数 79个(1MHz间隔) 40个(2MHz间隔)
广播方式 查询+寻呼 广播通道(3个)+ 数据通道(37个)
典型应用 蓝牙耳机、车载免提、文件传输 传感器、信标、可穿戴、医疗设备

我的经验:如果你做的是需要持续传输音频或大文件的产品,老老实实用经典蓝牙。但如果你做的是纽扣电池供电的传感器,BLE是唯一选择。我曾经在一个项目里硬用经典蓝牙做温湿度采集,结果电池三天就废了——后来换成BLE,一颗CR2032撑了半年。

1.3 BLE核心优势

BLE能火,靠的是下面这几个硬功夫。你想想看,一个无线通信技术,如果做不到这些,物联网根本跑不起来。

  1. 超低功耗:BLE的空闲电流可以做到1μA以下。它采用“快速连接-传输-断开”模式,大部分时间芯片都在睡觉。我见过最极端的案例,一个BLE信标用纽扣电池跑了两年。
  2. 快速连接:从广播到建立连接,最快只要3ms。经典蓝牙要100ms左右。这个差距在门锁、标签这类场景里非常关键。
  3. 灵活的数据模型:BLE用GATT(通用属性协议)来组织数据。你可以把设备抽象成服务(Service)和特征值(Characteristic),读写通知随心配。
  4. 广播能力:BLE可以不建立连接就发送数据。信标(Beacon)就是靠这个吃饭的。广播包最长31字节,5.0之后还能扩展。
  5. 成本低:一颗BLE SoC现在只要几毛钱到几块钱。相比Wi-Fi和蜂窝,成本优势明显。

注意:低功耗不是免费的午餐。BLE的峰值速率只有2Mbps,而且每次传输的数据量有限。如果你需要持续传输高清音频或视频,BLE不适合。我曾经见过有人用BLE传图片,一张500KB的照片传了十几秒——用户体验极差。

1.4 典型应用场景

BLE的应用场景,我按自己的项目经验分了四大类。每一类都有不同的设计侧重点。

  • 健康与医疗:心率带、血糖仪、体温贴。这类设备要求数据准确、功耗极低。我做过一个血氧仪项目,BLE每5秒上报一次数据,一颗CR2032用了8个月。
  • 智能家居:门锁、灯泡、窗帘、传感器。BLE mesh让全屋联动成为可能。注意,门锁场景对连接速度要求极高——用户不想在门口等3秒。
  • 信标与室内定位:商场导购、展馆讲解、资产追踪。BLE的RSSI可以用来估算距离,5.1的寻向功能还能测角度。我在仓库做过一个资产定位项目,精度在1~3米。
  • 工业与农业:温湿度采集、振动监测、灌溉控制。这类场景通常设备数量多、分布广,BLE mesh和网关配合使用效果不错。

1.5 BLE协议栈架构图

下面这张图是我自己画的BLE协议栈分层结构。你把它理解成“通信的七层楼”,每一层只跟上下层打交道。做应用开发,主要关注GAP和GATT两层就够了。

BLE 协议栈分层架构 应用层(APP) 主机层(Host) GAP(通用访问规范) | GATT(通用属性规范) SM(安全管理) | ATT(属性协议) | L2CAP 控制器层(Controller) LL(链路层) PHY(物理层:LE 1M / LE 2M / LE Coded) 射频层(RF) 应用开发重点关注 GAP(广播/连接)和 GATT(数据读写),链路层以下由芯片厂商封装

嗯,这里要注意:主机层和控制器层之间通过HCI(主机控制器接口)通信。如果你用的是Nordic、TI或Dialog的SoC,芯片内部已经帮你把HCI和控制器层做好了。你只需要写应用层代码,调GAP和GATT的API就行。