一、BLE概述:蓝牙技术演进与核心定位

做嵌入式通信这些年,我接触过不少无线协议。ZigBee、Wi-Fi、LoRa……各有各的脾气。但要说哪个协议让我又爱又恨,那还得是蓝牙——尤其是BLE。

为什么?因为BLE太“狡猾”了。它看起来简单,真上手了坑不少。但一旦摸透它的脾气,你会发现它简直是低功耗场景的“天选之子”。

这一章,我们先从宏观上把BLE的来龙去脉理清楚。不急着抠细节,先把地图摊开,知道我们在哪、要去哪。

1.1 蓝牙技术演进:从“线缆替代”到“万物互联”

蓝牙技术诞生于1994年,爱立信搞的。初衷很简单——干掉RS232串口线。你想想看,那时候设备之间传数据还得拖着根线,多麻烦。

我入行时蓝牙还是2.0时代,传输速率不到3Mbps,功耗也不低。但那时候大家已经很满足了——至少不用线了嘛。

真正的转折点在2010年。蓝牙4.0发布,BLE(Bluetooth Low Energy)正式登场。这可不是简单的版本升级,而是蓝牙技术的一次“分裂”。

从4.0开始,蓝牙实际上变成了两个“人”:

  • 经典蓝牙(BR/EDR):延续老路子,追求高速率、大吞吐。适合耳机、音箱这类场景。
  • 低功耗蓝牙(BLE):全新设计,追求极低功耗、短数据包、间歇性通信。适合传感器、信标、穿戴设备。

到了5.0、5.1、5.2,BLE又加了广播扩展、LE Audio、方向定位等新特性。嗯,BLE已经不只是“低功耗”那么简单了,它正在变成一个全能型选手。

核心认知:BLE不是经典蓝牙的“省电版”,而是从底层重新设计的协议栈。两者的物理层、链路层、应用层都有本质区别。

1.2 BLE与经典蓝牙:到底差在哪?

很多刚接触蓝牙的同学会问:BLE和经典蓝牙能不能互通?答案是不能。它们就像英语和德语,虽然都是日耳曼语系,但互相听不懂。

我整理了一张对比表,方便你快速把握差异:

对比维度 经典蓝牙(BR/EDR) 低功耗蓝牙(BLE)
设计目标 连续数据流,高吞吐 间歇性小数据,极低功耗
物理层 79个信道,1MHz带宽 40个信道,2MHz带宽
调制方式 GFSK,速率1~3Mbps GFSK,速率1Mbps/2Mbps
连接方式 点对点,持续连接 广播+连接,可间断
功耗 ~10mA以上(持续) ~1μA(待机),~5mA(峰值)
典型应用 耳机、音箱、车载 传感器、信标、医疗设备
网络拓扑 微微网(Piconet) 广播、星型、Mesh

说白了,经典蓝牙像高速公路——适合跑长途、拉重货。BLE像共享单车——适合短途、轻量、随用随走。

我的经验:选型时别只看“蓝牙”两个字。如果你的设备需要持续传输音频流,老老实实用经典蓝牙。如果只是每隔几秒传几个温度值,BLE才是正解。我曾经见过有人用BLE传音频,结果延迟高到没法用——方向就错了。

1.3 BLE应用场景:它到底能干什么?

BLE的应用场景,说白了就三个字:小、低、短。

  • 小数据量:一次传几十个字节,够了。
  • 低功耗:一颗纽扣电池撑一年。
  • 短距离:10米以内,够了。

我列几个典型的场景,你看看是不是这个路子:

  1. 可穿戴设备:手环、手表、心率带。数据量小,但要求续航长。我做过一款运动手环,用BLE传输心率数据,一次连接只传20字节,一天耗电不到3%。
  2. 信标(Beacon):商场推送、室内定位。设备只发广播,不建立连接。功耗可以做到极低——一个CR2032电池用两年。
  3. 智能家居传感器:温湿度、门磁、人体红外。这些设备不需要一直在线,有事件才唤醒发数据。
  4. 医疗设备:血糖仪、血压计、体温贴。数据敏感,但量不大。BLE的加密和配对机制刚好够用。
  5. 工业数据采集:振动传感器、压力变送器。我有个项目在工厂部署了上百个BLE节点,用Mesh组网,数据汇聚到网关再上传云端。

避坑提醒:我曾经在一个项目中,客户要求用BLE传输摄像头图像。我直接拒绝了——BLE的速率和包长限制决定了它不适合传图片或视频。如果非要传,压缩到极低分辨率、分片传输,体验也很差。选对协议比优化协议更重要。

1.4 BLE协议栈架构总览:一张图看懂

BLE协议栈,说白了就是一套分层的“通信规矩”。每一层只管自己的事,层与层之间通过标准接口交互。

我个人习惯把BLE协议栈分成三大部分:

  • 控制器(Controller):物理层+链路层,负责收发无线信号。
  • 主机(Host):L2CAP、ATT、GATT、SM等,负责数据组织和安全。
  • 应用层(Application):用户自己的业务逻辑。

下面这张图是我自己画的,把BLE协议栈的层次关系展示清楚:

BLE协议栈架构总览 BLE协议栈架构总览 应用层(Application) 用户业务逻辑 · Profile实现 · 数据解析 主机(Host) GATT · ATT SM · L2CAP HCI(主机-控制器接口) 控制器(Controller) 链路层(LL) 物理层(PHY) 注:实际芯片中,控制器通常集成在SoC内,主机可在MCU上以软件实现

这张图你看懂了吗?从上到下,数据是这样流动的:

  1. 应用层决定“我要发什么数据”。比如温度值25.3°C。
  2. GATT/ATT把数据组织成“属性(Attribute)”的形式,加上UUID、权限等信息。
  3. L2CAP负责把数据分片、重组,加上协议类型标识。
  4. HCI是主机和控制器之间的“翻译官”,通过UART、USB或SPI传递命令和数据。
  5. 链路层负责状态机管理、连接建立、重传、加密等。
  6. 物理层最终把数据调制成无线信号,通过天线发出去。

我的建议:刚开始学BLE,别急着啃协议栈每一层的细节。先把GATT和链路层搞明白——这两个是BLE的灵魂。GATT决定了数据怎么组织,链路层决定了功耗怎么控制。其他层,用到再查。

1.5 本章小结

这一章我们走马观花看了一遍BLE的全貌。你记住几个关键点就行:

  • BLE是蓝牙4.0开始引入的全新协议,不是经典蓝牙的“省电模式”。
  • BLE和经典蓝牙在物理层、链路层、应用层都不兼容。
  • BLE适合小数据、低功耗、短距离的场景。
  • BLE协议栈分控制器、主机、应用三层,层与层之间通过HCI通信。

嗯,地图摊开了,方向也明确了。接下来我们会一层一层往下挖,把BLE的“省电秘诀”一个个拆开来看。准备好了吗?