跳转至

蓝牙通信

字数:3668 | 预计阅读时间:12分钟

蓝牙简介

1997 年:Intel 工程师 Jim Kardach 的灵感
在与爱立信谈判新无线协议命名时,Kardach 正阅读哈拉尔的历史小说,提议 Bluetooth——寓意"统一不同设备与通信协议"。

无线电波:频率越高,每秒振荡越多,单位时间可传输数据量越大

为什么蓝牙选择 2.4 GHz?

ISM 频段全球通用:免许可证,任何国家均可使用,设备全球互通
穿墙能力适中:比 5 GHz Wi-Fi 绕射更强,室内覆盖 10~100 m
功放效率高:2.4 GHz 芯片成熟,发射电路功耗低,利于电池供电
芯片成本极低:全球规模量产,蓝牙射频芯片成本约 ¥1~¥15

2.4GHz的分配情况

虽然大家都挤在 2.400 到 2.485 GHz (相当于85MHz)这段空间里,但分配带宽的方式完全不同:

  • Wi-Fi 2.4G(宽车道):分割为13个信道,每个间隔5MHz。拥有 3 个不重叠的 22 MHz 宽信道(1,6,11)
  • 蓝牙(窄信道):将频段切成了 79 个 1 MHz 的窄信道
  • ZigBee:拥有15个 2MHz 的信道(要隔开5MHz),常用于智能家居设备
  • BLE:拥有40个 2MHz 的信道

跳频

跳频是蓝牙(Bluetooth)对抗干扰的核心技术:

蓝牙不会一直待在一个固定的信道上,而是以极快的速度(每秒 1600 次)在 79 个信道中随机跳跃。这样可以快速绕过 Wi-Fi 正在使用的信道。如果这一次跳到了被占用的频率导致数据丢失,它会立刻跳到下一个干净的频率重发。

自适应跳频(AFH):现代蓝牙更聪明,它会自动识别哪些信道被 Wi-Fi 占用了,然后把那些“拥堵”的信道从自己的跳频列表中剔除。

在蓝牙连接中,必须有一个 中心设备(Master/Central),比如手机;而耳机或鼠标则是 外围设备(Peripheral)

手机决定了跳频序列和节拍

那些乱七八糟的频道数字(如 ch 4 → ch 21 → ...),是由数学公式算出来的:

  • 共享种子(Seed):当手机和耳机第一次“配对”时,它们会交换一些只有彼此知道的信息(比如设备的唯一物理地址 BD_ADDR)。
  • 公式:双方都会把这个“地址”和“当前时间戳”丢进同一个复杂的跳频选择算法(Selection Kernel)里。

还需要时间同步:

  • 时钟偏移(Clock Offset):手机会告诉耳机:“我的时钟现在是 X 毫秒,请以此为准。”
  • 心跳包:在通信过程中,接收方会不断根据发送方发来信号的到达时间来微调自己的时钟。

GFSK 调制原理

FSK(频移键控):用频率区分 0 和 1

G 代表的“高斯”:给信号“磨个圆角”。

FSK 的问题(像钢琴):当你从 0 突变成 1 时,频率是瞬间跳变的。在物理学上,这种“急转弯”会产生大量的杂散波(谐波)。会产生邻道干扰,干扰到旁边的信道(比如隔壁的 Wi-Fi)。

GFSK 的进化:在频率变化之前,先加一个高斯滤波器。这就像给信号做了一层“磨皮”或“丝滑处理”。

蓝牙数据包

蓝牙数据包结构:

前导码 接入码 头部 有效载荷 CRC
同步 设备地址 包信息 实际数据 校验
8b 72b 54b 0-2745b 16b

FEC 前向纠错:

蓝牙在最重要的头部(Header)信息中使用了 \(1/3\) 重复码。也就是说,同一个控制指令我会发 3 遍。
头部信息决定了连接是否会断开,所以这部分必须极其坚固,不需要重传也能自我修复。

ARQ 自动重传:

这是蓝牙处理有效载荷(Payload)损坏的核心手段。
基于CRC校验返回:ACK(确认收到),NAK(没收到/坏了)
只要发送方没收到 ACK,它就会不断重传,直到成功为止。

网络拓扑

结构 解释 应用
Piconet 微微网 1个主设备(M)最多连接 7 个从设备(S)。经典蓝牙基础单元,主设备控制所有时序。 手机+耳机+智能手表
Scatternet 散射网 多个Piconet通过桥接节点互联,扩大覆盖范围,一节点可同时属于两个Piconet。 多房间音响分区系统
BLE 广播模式 广播者持续发射信标,周围任意设备无需配对即可接收。超低功耗,无连接建立开销。 室内定位 Beacon、电子价签
Bluetooth Mesh 节点间多跳中继,无单点依赖。一节点失效,数据自动沿其他路径绕行传递。 智慧楼宇照明、工厂传感网

系统架构

协议栈架构

协议栈 解释
Application 应用层 用户感知的功能:音乐播放/心率显示/设备控制
Profile 规范层 A2DP/HID/GATT/GAP——"某类设备该做什么"
L2CAP 逻辑链路层 数据分片重组,多路复用(同一连接传多类数据)
HCI 主机控制器接口 软硬件标准分界线接口。往下称为“Controller”(控制器),封装在蓝牙芯片内;往上称为“Host”(主机),运行在手机或电脑的操作系统中。
Link Manager / Link Layer 连接管理、跳频控制、ARQ自动重传
PHY 物理层 GFSK调制,实际发射/接收2.4GHz无线电波

BR/EDR 与 BLE:两套并行的协议体系
共用 2.4 GHz 频段,却是两套完全独立的软件逻辑,同一芯片可同时支持两者(Dual-Mode)

协议 场景
BR/EDR 经典蓝牙 持续数据流:立体声音频(A2DP)、文件传输(OBEX)、通话(HFP),需要稳定高带宽
BLE 低功耗蓝牙 间歇性小数据:传感器、健康监测、资产追踪,数据量小但电池寿命要求极高

BR/EDR 经典协议

蓝牙基带以 625 μs 为最小时间单元,主设备控制所有通信节奏

主设备偶数时隙发,从设备奇数时隙发(理想情况,在没有大包的情况下)

多时隙包提升效率:
1-slot(DH1)=27B,3-slot(DH3)=183B,5-slot(DH5)=339B
大文件传输使用5时隙包可减少包头开销

连接建立流程:
发起设备A                                   目标设备B
   │ ---------      Inquiry       ----------> │ 广播查询
   │ <--------     FHS Packet     ----------- │ 发送蓝牙地址
   │ -------    Inquiry Complete   ---------> │ 收到
   │ --------         Page        ----------> │ 专门呼叫B
   │ <---------   Page Response     --------- │ 准备完毕
   │ --------     FHS Packet       ---------> │ 发送时序信息
   │ ------  LMP_host_connection_req  ------> │ 请求建立连接
   │ <-------      LMP_accepted    ---------- │ 同意
   │ <- Authentication + Link Key Exchange -> │ 鉴权与链路密钥交换
   │ <---  Encryption Setup → ACL Link   ---> │ 加密设置与链路开启

Inquiry扫描~2.56 s
Page呼叫~128 ms
Auth+Enc ~50 ms
总耗时~3 s

重连加速机制:
配对设备保存彼此地址和链路密钥,重连时跳过Inquiry直接Page,总连接时间缩至约300ms

L2CAP

L2CAP 按 MTU (Maximum Transmission Unit) 切分

模式 MTU 类型 典型值 备注
经典蓝牙 (BR/EDR) 默认 MTU 672B 适用于高带宽音频传输
低功耗蓝牙 (BLE) 默认 ATT MTU 23B 实际只能传 20 字节有效数据
低功耗蓝牙 (BLE) 最大 ATT MTU 512B 连接后通过 Exchange MTU 开启

PDU (协议数据单元) 结构

Length Channel ID Information Payload
2B 2B 0~65535 bytes (理论值,实际参考上表)

多路复用 (Multiplexing)

通过 CID (Channel ID) 来标记数据类型。

  • 0x0001: 信令信道 (L2CAP Signaling)
  • 0x0004: A2DP (高级音频分发)
  • 0x0005: HFP(免提控制)
  • 0x0006: OBEX (文件传输)

BLE 低功耗协议

3个广播 + 37 个数据

BLE 的 3 个广播信道(CH 37, 38, 39)没有乱放,而是精准地插在 Wi-Fi 的缝隙里。

  • CH 37 (2402 MHz):在 Wi-Fi 1 号信道的左边。
  • CH 38 (2426 MHz):在 Wi-Fi 1 号和 6 号信道的中间。
  • CH 39 (2480 MHz):在 Wi-Fi 11 号信道的右边。

当设备想广播自己(比如耳机呼叫手机)时,不会被 Wi-Fi 的信号“淹没”。

一旦设备 A 和 B 连上了,就不再使用 3 个拥挤的广播信道,而是转移到剩下的 37 个数据信道进行AFH调频连接。

广播间隔:

  • 高频广播 (20ms):每 20 毫秒一次,但设备非常耗电。
  • 低频广播 (3s):每 3 秒一次,设备可以靠纽扣电池活好几年(AirTag )。

Profile

规范的三个维度

A. 角色定义 (Roles) 规范规定:必须由 Collector 发起连接,Sensor 负责提供数据。
B. 服务要求 (Service Requirements):实现的UUID的服务和特征值。
C. 行为规范 (Behaviors):规定了“数据怎么发”。

常用profile速查

场景 经典蓝牙 Profile (高带宽) BLE Profile (低功耗)
音频 A2DP (听歌)、HFP (通话) LE Audio (未来趋势)
外设 HID (老款蓝牙鼠标) HOGP (现代省电鼠标)
健康 HRP (心率)、GLP (血糖)
行业应用 ESL (电子价签)、FMP (防丢器)

定位、交通与 IoT

技术方向 核心 Profile/功能 应用案例 选型提示
防丢寻找 FMP (Find Me) AirTag 类产品 基于 RSSI 信号强度测距。
室内导航 AoA / AoD 机场、展馆导览 蓝牙 5.1 引入,支持测向(角度)。
厘米级定位 Channel Sounding 蓝牙 6.0 高精定位 挑战 UWB 的地位。
数字车钥匙 CCC Digital Key 手机开车门 结合 BLE 安全握手与 UWB/测距。
电子货架标签 ESL (BT 5.4) 商超电子价签 解决数万个节点同时通信的效率。

GATT

功能 解释
Service 一类功能的集合
Characteristic 真正存数据的地方
Descriptor 对数据的补充说明,CCCD是最常用的描述符
UUID 标准 UUID (16-bit),自定义 UUID (128-bit)
Properties Read,Write,Notify,Indicate

心率服务:0x180D;电量服务:0x180F;设备信息:0x180A

如果要设计一个“智能水壶”,GATT 表大概长这样:

  1. Service (0x180F):电池服务。
  2. Service (自定义):水温控制服务。
  3. Characteristic A (Read/Notify):当前水温。
  4. Characteristic B (Write):设定目标温度(比如设为 55°C)。
  5. Service (自定义):喝水提醒服务。
  6. Characteristic C (Write):开启/关闭提醒。
连接间隔
模式 间隔时间 1 秒内唤醒次数 延迟感 典型产品
极速 7.5 ms ~133 次 几乎无感 游戏控制器
平衡 100 ms 10 次 轻微感知 智能手表
省电 1000 ms 1 次 明显延迟 温湿度计

功耗分析

TX(15 mA):将数据包(GFSK 调制)通过天线射向空中,时长非常短(通常 1~3 ms)。
RX(5 mA):等待对方回一个 ACK(收到确认)。如果没等到确认,芯片会启动重传逻辑。
Sleep(5 µA):仅保留极低功耗的 RTC(实时时钟),负责在下一个“连接间隔”到来时唤醒芯片。

\[ I_{avg} = \frac{(I_{TX} \times T_{TX}) + (I_{RX} \times T_{RX}) + (I_{Sleep} \times T_{Sleep})}{T_{Total}} \]

= (15000×3 + 5000×2 + 5×9995) / 10000
= (45000 + 10000 + 49975) / 10000
~10.5 μA (10s内)
平均工作电流

CR2032 容量 = 220 mAh = 220,000 μAh
寿命 = 220,000 μAh ÷ 10.5 μA = 20,952 h ≈ 2.4 年

安全配对机制

方式 安全级别 用户操作 典型场景 中间人攻击 (MITM)
Just Works 基础级 无需操作,自动配对 蓝牙耳机、低功耗传感器 无法防御
Passkey Entry 中等级 一端显示,另一端输入数字 蓝牙键盘、打印机 具备防御力
Numeric Comparison 高安全 双方显示数字,用户点“确认” 手机间互联、车机连接 有效防御
OOB (带外传输) 最高级 NFC 碰一碰或扫二维码 医疗设备、金融支付外设 极难攻破

核心算法:ECDH (Elliptic Curve Diffie-Hellman) 椭圆曲线交换

  • 设备 A 生成私钥 \(a\),并算出公钥 \(A_{pub}\)
  • 设备 B 生成私钥 \(b\),并算出公钥 \(B_{pub}\)
  • 双方交换公钥:A 拿到 \(B_{pub}\),B 拿到 \(A_{pub}\)
\[ \text{共享密钥 } K = a \times B_{pub} = b \times A_{pub} \]

结论: 虽然 \(A_{pub}\)\(B_{pub}\) 在空气中是透明的,但黑客没有私钥 \(a\)\(b\),在数学上几乎不可能算出 \(K\)。这个 \(K\) 随后会生成 LTK (长期密钥) 存储在设备中。

Bluetooth Mesh

Mesh 网络不依赖中央网关,而是采用一种“受控洪水”模式:节点 A 发出的指令,周围所有节点都会收到并帮忙“喊话”(转发)。

TTL (Time To Live):每经过一个节点(跳),TTL 减 1。当 TTL 降为 0 时,消息停止转发。

Mesh 巧妙地解决了“全覆盖”与“低功耗”的矛盾:

角色 缩写 核心职能 硬件要求
Relay (中继) R 消息的搬运工。收到消息立刻广播,扩大网络范围。 常供电(如智能插座、灯座),必须时刻监听。
Proxy (代理) P 网络的翻译官。将 Mesh 协议转为普通 BLE 协议,让手机直接控制 Mesh。 需要较高的计算能力。
Friend (友好) F 消息的代收处。帮睡觉的低功耗节点存消息。 高内存,需要维持较多的缓存空间。
Low Power (低功耗) LP 深度睡眠者。只在干活或取信时醒来,平时不参与转发。 电池供电。必须依附一个 Friend 节点生存。

蓝牙设计与应用

蓝牙产品"设计四问":
Q1 多久通信一次?Q2 需要传输多少数据?Q3 用户感知延迟吗?Q4 换电 / 充电周期要求?

音频必须 BR/EDR;传感器首选 BLE。数据量决定了能否用纽扣电池。
如果要求使用3年以上,产品就必须用 BLE + CR2032,形态受到根本限制。

可穿戴产品蓝牙设计

维度 Apple Watch Series 9 Oura Ring Gen 3(戒指) WHOOP 4.0(软性织物腕带)
蓝牙/无线协议 BLE 5.3 + UWB + LTE + Wi-Fi BLE 5.1 BLE 5.0
电池与续航 308 mAh (约 18 小时) 15~22 mAh (约 7 天) 约 170 mAh (4~5 天)
天线设计 金属中框开槽 + 表冠下方 指环内侧 PCB 走线天线 织物内嵌弹性 PCB 天线
充电策略 每日磁吸快充 每周小充电盒 可穿戴充电盒
策略 性能优先+生态锁定 极简形态+睡眠优先 数据存粹+订阅模式
约束 人体组织含70%水分,强烈吸收2.4GHz能量。天线必须尽 量远离皮肤 长期贴肤须通过ISO 10993生物相容性测试 电池容量直接决定续航,而形态约束了电池体积

工业约束

约束维度 核心挑战 (Challenge) 关键技术对策 (Solutions) 对设计/外观的影响
电磁兼容 EMC 强宽带干扰(背景噪声高) 自适应跳频(AFH)、金属屏蔽腔、SMA外置天线 需电磁仿真开槽,天线多位于顶部
机械振动 高频振动(500Hz)与强冲击(40g) M12防脱连接器、元件点胶/灌封、弹性垫圈 外壳壁厚≥3mm,避开共振频率
宽温工作 -40°C ~ 85°C 极端温差 工业级元器件、ER锂亚电池、天线热补偿 需热阻计算与散热格栅设计
防护等级 IP54(防溅水)/IP67(短时浸水)/IP68(持续浸水)/IP69K(高压热冲) 密封圈、超声波焊接、全灌封、M12接口 无标准USB口,牺牲可维修性