蓝牙技术基础:从4.0到5.4的演进之路

各位同学好,我是你们的讲师。今天咱们开始第一课——蓝牙技术基础。说实话,蓝牙这东西,我做了十几年嵌入式,看着它从3.0一路走到5.4,感触挺深的。早期做蓝牙网关项目,最头疼的就是兼容性问题,设备动不动就断连。现在好多了,但底层原理还是那些,搞懂了才能把网关做稳。

这一章,我会带大家把蓝牙协议演进、BLE核心概念、网关应用场景这三个东西串起来。别急,咱们一个一个来。

1.1 蓝牙协议演进:4.0到5.4,到底改了啥?

先看一张总览图,把蓝牙版本的关键特性理清楚。

蓝牙核心版本演进(2010-2024) 蓝牙 4.0 (2010) BLE 低功耗诞生 双模架构:BR/EDR + LE 速率 1Mbps 广播信道 3个 蓝牙 4.2 (2014) LE 数据包长度扩展 隐私保护增强 IPv6 支持 速率 1Mbps 蓝牙 5.0 (2016) 2Mbps 高速模式 广播扩展 8倍数据 长距离 4倍 Mesh 网络基础 蓝牙 5.1 (2019) AoA/AoD 测向 厘米级定位 GATT 缓存改进 蓝牙 5.2 (2020) LE Audio 标准 LC3 编解码器 同步信道增强 蓝牙 5.3 (2021) 连接子速率提升 信道分类增强 加密密钥控制 蓝牙 5.4 (2023) PAwR 周期性广播响应 | 加密广播数据 | LE GATT 安全等级增强 电子货架标签(ESL) 标准正式落地

这张图我画了好一会儿,把每个版本的关键特性都标出来了。咱们挑几个重点版本聊聊。

蓝牙4.0:BLE的诞生

2010年,蓝牙4.0发布,最大的事情就是引入了BLE(Bluetooth Low Energy)。说白了,就是给蓝牙分了两个阵营:经典蓝牙(BR/EDR)和低功耗蓝牙(BLE)。经典蓝牙干高带宽的活,比如耳机传音乐;BLE干低功耗的活,比如传感器传温度。我最早用4.0做智能手环,一颗纽扣电池能跑半年,这在以前想都不敢想。

蓝牙4.2:数据包变大了

4.2把LE的数据包从27字节扩展到了251字节。别小看这个改动,做网关透传的时候,一次能传更多数据,省了很多握手开销。我记得当时有个项目,用4.0传固件升级包,一个包要拆好几段,升级一次得半小时。换成4.2后,十分钟搞定。

蓝牙5.0:速度与距离的飞跃

5.0是BLE历史上最大的一次升级。它加了2Mbps模式,速度翻倍;广播数据量从31字节扩展到255字节;还支持长距离模式,理论距离能到300米。我有个客户做仓库定位,用5.0的长距离模式,一个网关能覆盖整个仓库,省了一半的硬件成本。

蓝牙5.1/5.2:定位与音频

5.1引入了AoA/AoD测向,能实现厘米级定位。5.2则推出了LE Audio,用LC3编解码器替代了老旧的SBC。做网关的同学要注意,5.2的同步信道对多设备音频流很有用。

蓝牙5.3/5.4:细节优化与行业落地

5.3主要优化了连接子速率和信道分类,说白了就是让连接更稳定、更省电。5.4则正式支持了电子货架标签(ESL)标准,PAwR技术让一个网关能同时管理上千个标签。我最近在做一个零售项目,用的就是5.4的PAwR,效果确实不错。

核心建议:做网关选型时,如果只做数据透传,5.0就够用;如果需要定位或音频,至少选5.1或5.2;如果是大规模标签场景,直接上5.4。

1.2 BLE核心概念:GATT、GAP、ATT

这三个缩写,是BLE的灵魂。搞不懂它们,写代码就是瞎蒙。我当年刚接触BLE时,被GATT的Service和Characteristic绕晕了好几天。咱们一个一个拆。

GAP(Generic Access Profile)—— 设备怎么找到对方

GAP定义了设备的角色和连接流程。角色分四种:

  • Broadcaster(广播者):只发广播,不连接。比如信标。
  • Observer(观察者):只收广播,不连接。比如扫描器。
  • Peripheral(外设):发广播,等待连接。比如传感器。
  • Central(中心):扫描并发起连接。比如手机、网关。

做网关时,网关通常是Central角色,负责扫描并连接多个Peripheral设备。这里有个坑:Central同时连接的设备数量有限,一般芯片支持8-20个。我曾经用某款芯片连到第9个设备时直接崩溃,排查了半天才发现是连接数上限问题。

ATT(Attribute Protocol)—— 数据怎么读写

ATT是GATT的底层传输协议。它定义了三种基本操作:Read、Write、Notify。数据以Attribute(属性)的形式存在,每个Attribute有句柄、UUID、权限和值。

ATT的Notify机制特别重要。外设可以主动给中心发数据,不用中心轮询。做网关透传时,我习惯用Notify来上传传感器数据,既省电又实时。

GATT(Generic Attribute Profile)—— 数据怎么组织

GATT在ATT之上定义了数据的组织方式。核心概念就两个:

  • Service(服务):一组功能的集合。比如电池服务、设备信息服务。
  • Characteristic(特征):具体的数据点。比如电池电量、设备序列号。

每个Characteristic有对应的UUID,标准服务用16位UUID(如0x180F表示电池服务),自定义服务用128位UUID。

实战技巧:做网关透传时,建议自定义一个128位UUID的透传Service,里面放一个Write和Notify的Characteristic。中心写数据到Write特征,外设通过Notify特征回传数据。这样双向通信就打通了。

下面这张图,把GATT的层次结构画清楚了:

BLE GATT 层次结构 Profile(应用规范) Service(服务) Characteristic(特征) ATT(属性协议) BLE 物理层(PHY)

1.3 蓝牙网关应用场景分析

讲完理论,咱们看看实际场景。蓝牙网关到底用在哪儿?我总结了四个最常见的场景。

场景 典型应用 关键需求 推荐蓝牙版本
工业数据采集 温湿度传感器、振动监测 低功耗、多连接、稳定透传 4.2 / 5.0
室内定位 人员定位、资产追踪 高精度、低延迟、多标签 5.1(AoA/AoD)
智能家居 门锁、灯光、窗帘 低功耗、安全、Mesh组网 5.0 / 5.2
零售/物流 电子货架标签、冷链监控 大规模并发、远距离、低功耗 5.4(PAwR)

场景一:工业数据采集

这是最传统的场景。工厂里几十个传感器,通过蓝牙把温度、湿度、振动数据传给网关,网关再通过WiFi或4G上传到云平台。我做过一个项目,车间里30个温湿度传感器,用4.2的网关,每5秒采集一次数据,电池撑了两年。关键点:网关要支持多连接,数据透传要稳定,不能丢包。

场景二:室内定位

5.1的AoA/AoD技术让蓝牙定位精度达到了厘米级。医院里找轮椅、仓库里找叉车,都用这个。网关需要部署定位算法,计算设备的角度和距离。说实话,这个场景对网关的算力要求比较高,我一般会在网关上跑个轻量级的定位引擎。

场景三:智能家居

智能家居里,蓝牙Mesh是主流。一个网关可以控制全屋的灯、锁、窗帘。Mesh的好处是设备之间可以中继,覆盖范围大。但要注意,Mesh网络的延迟会比点对点高一些,做灯光控制时,响应时间最好控制在200ms以内。

场景四:零售/物流

5.4的PAwR技术专门为电子货架标签(ESL)设计。一个网关能同时管理上千个标签,每个标签每几秒更新一次价格。我最近帮一个连锁超市做方案,3000个标签,用了4个5.4网关,覆盖整个卖场,成本比传统电子纸方案低了40%。

避坑提醒:做网关选型时,别只看蓝牙版本。芯片的RAM、Flash、CPU主频、天线设计,这些都会影响实际性能。我曾经用了一款号称支持20连接的芯片,实际连到12个设备就开始丢包。后来换了天线匹配电路,才稳定下来。

1.4 本章小结

这一章,咱们把蓝牙从4.0到5.4的演进捋了一遍,重点讲了BLE的三个核心概念:GAP管连接、ATT管传输、GATT管数据组织。最后看了四个典型应用场景。说白了,蓝牙网关的核心就两件事:把设备连起来,把数据传上去。后面的章节,我会带大家一步步搭建一个真正的蓝牙网关,从硬件选型到代码实现,全流程走一遍。