4. BLE作为UWB的唤醒与同步通道:低功耗唤醒机制、时间同步协议、实测功耗对比
好,咱们进入第四章。这一章我打算聊透一个核心问题——功耗。
UWB 定位精度确实好,厘米级,没话说。但代价呢?功耗高。UWB 芯片一旦全速跑起来,电流轻松上几十毫安。对于电池供电的标签,比如人员工卡、资产吊牌,这简直是灾难。你想想看,一个标签如果一直开着 UWB 接收,几天就得换电池,谁受得了?
所以,业界的通用做法是:让 UWB 平时睡觉,用 BLE 把它叫醒。BLE 的功耗极低,做监听和唤醒再合适不过。这一章,我就把「唤醒」和「同步」这两个关键机制掰开揉碎了讲。
4.1 低功耗唤醒机制:让UWB该睡睡,该醒醒
我个人习惯把这种架构叫做「双模异构」。UWB 干重活,BLE 干轻活。具体怎么配合?看下面这张图。
流程其实不复杂。标签平时只有 BLE 在跑,做低功耗扫描。基站发一个 BLE 广播包,里面夹带唤醒指令。标签收到后,核对是自己的地址,就立刻拉高 GPIO,给 UWB 芯片上电。UWB 启动后,根据包里的时间戳和参数,快速完成一次测距,然后继续睡。
这里有个细节——唤醒包的设计。我曾经在一个项目中,直接用标准的 BLE 广播包做唤醒,结果发现丢包率很高。后来排查发现,广播信道(37/38/39)干扰太严重。我的解决方案是:在广播包的 AdvData 字段里,塞一个自定义的唤醒序列,比如连续发 3 个相同的包,标签端做「滑动窗口匹配」,这样抗干扰能力就上来了。
唤醒延迟预算
从 BLE 收到包到 UWB 准备好测距,这个时间必须可控。我一般要求 < 5ms。如果 UWB 芯片的晶振起振时间太长,可以考虑让 UWB 的 LDO 一直保持弱供电,只关掉射频部分。
4.2 时间同步协议:没有同步,就没有精度
UWB 的 TOF(飞行时间)测距,依赖精确的时间戳。如果基站和标签的时间基准不一样,测出来就是错的。1ns 的误差,对应 30cm 的距离偏差。所以,时间同步是 UWB 定位的命根子。
用 BLE 做同步通道,说白了就是利用 BLE 的包来传递时间信息。我常用的方法有两种:
- 单边同步:基站发 BLE 包时,带上自己的本地时间。标签收到后,根据已知的传播延迟,校准自己的时钟。这种方法简单,但精度受限于 BLE 包的抖动。
- 双边同步(类似 PTP):基站和标签互相发时间戳包,通过往返时间计算偏移和延迟。精度高,但交互次数多,功耗也高。
在实际项目中,我倾向于用混合方案。平时用单边同步,每隔 10 秒做一次双边同步校准。这样既保证了低功耗,又维持了长期的时间精度。
我的经验
BLE 包的发送时间戳,最好在硬件层打。也就是在 BLE 芯片的射频前端检测到包头发送完成时,由硬件自动记录时间。如果靠软件打时间戳,误差会大一个数量级。我在用 Nordic nRF52 系列时,就利用它的 RADIO 定时器捕获功能,精度能到 0.5μs。
4.3 实测功耗对比:数据说话
说了这么多理论,咱们看看实际数据。我拿一个典型的 UWB 定位标签(DW1000 + nRF52832)做了对比测试。测试条件:定位频率 1Hz,即每秒定位一次。
| 工作模式 | 平均电流 | 电池寿命(200mAh) | 说明 |
|---|---|---|---|
| UWB 全时接收 | 35 mA | 约 5.7 小时 | 不可接受 |
| BLE 唤醒 + UWB 测距 | 0.12 mA | 约 69 天 | 主流方案 |
| BLE 唤醒 + 深度休眠 | 0.008 mA | 约 2.8 年 | 仅监听,不定位 |
看到了吧?差距是数量级的。全时接收的 UWB,200mAh 电池撑不过半天。而用了 BLE 唤醒后,直接干到两个月以上。这还没算上优化——比如把 BLE 的扫描间隔从 100ms 拉到 500ms,还能再省一半。
注意
功耗数据受很多因素影响:芯片型号、天线匹配、软件效率、环境温度。上面的数据是我在实验室 25°C 环境下测的。如果你在 -20°C 的户外,电池容量会打折,UWB 的发射电流也会增大。做产品时,一定要留余量。
4.4 避坑指南:我踩过的几个坑
做这个方案,有几个地方特别容易出问题。我一个个说。
- BLE 和 UWB 的天线隔离。两个射频挨在一起,容易互相干扰。我曾经把 BLE 天线和 UWB 天线放得太近,结果 BLE 灵敏度掉了 6dB。后来强制要求间距 > 10mm,或者加一个屏蔽罩。
- 唤醒包的误唤醒。如果唤醒包没有做地址过滤,标签会被别人的基站叫醒,白白耗电。我建议在 BLE 广播包里加一个 4 字节的网络 ID,标签只响应自己网络的唤醒。
- 时间戳的溢出处理。BLE 的时钟通常是 32.768kHz,计数器 32 位,大约 36 小时溢出一次。如果不做溢出处理,时间同步会突然跳变。我的做法是:在应用层维护一个 64 位的时间戳,每次收到 BLE 包时,检测计数器是否回绕。
嗯,差不多就这些。这一章的核心就一句话:用 BLE 的低功耗,换 UWB 的高精度。把唤醒和同步做好了,你的定位系统才能既准又省电。