背景
蓝牙Mesh应用中存在低功耗的场景,如温湿度、烟感传感器通过电池供电且需要尽量长的续航时间,针对这一类产品,蓝牙Mesh规范中定义了友谊(Friendship)相关协议,本章会继续使用泰凌微8258评估友谊功能
如有异议,欢迎留言指正
简介
低功耗节点(LPN,low power node)通过与邻近的好友节点(FN,friend node)建立友谊(friendship)关系,低功耗(Low-Power)节点以明显较低的接收端占空比在 mesh 网络中运行。通过将无线电接收器启用时间最小化来降低节点功耗,只有在绝对必要时才启动接收器。
- 对于 LPN 节点,只能和一个 FN 建立友谊;
- 对于 FN 节点,可以和多个 LPN 节点建立友谊。
- 当建立 friendship 后,低功耗节点会以一个比较长的周期对好友节点进行轮询(Poll),查看是否有新消息,如果有,则获取该消息。
- 好友(Friend)节点将mesh网络中发送给低功耗节点的消息缓存到消息队列中,仅在 LPN 明确发出请求时才进行转发来帮助 LPN 运行的能力。
友谊时间参数
-
ReceiveDelay:接收延迟是低功耗节点发送请求和侦听响应之间的时间,让Friend节点有时间准备响应
-
ReceiveWindow:接收窗口是低功耗节点侦听响应的时间。 当低功耗节点从其Friend节点接收消息时,它可以停止侦听其他消息

-
PollTimeout:轮询超时用于低功耗节点发送的两个连续请求之间的时间,如果在PollTimeout计时器到来之前,好友节点未能收到LPN的请求,则友谊关系将被终止。

友谊建立
消息格式
在上一篇有讲到,上层传输层包含了朋友特性的的实现(具体友谊消息格式可以查看Mesh规范第3.6.5小节)
- 不分包控制消息格式(分包数据格式会在数据域中进行细分分包索引)
| File | Size(bit) | Note |
|---|---|---|
| SEG | 1 | 0(不分包) 1 (分包) |
| Opcode | 7 | 0x00:分包消息应答包 0x01~0x7F:其他控制命令 |
| Parameters | 0~88 | 数据域 |
- 其中Opcode消息如下
| Data | Message | Note |
|---|---|---|
| 0x01 | Friend Poll | 低功耗节点向Friend节点请求是否有消息的命令 |
| 0x02 | Friend Update | Friend 节点向低功耗节点通知安全消息的更新 |
| 0x03 | Friend Request | 低功耗节点开始寻找Friend节点 |
| 0x04 | Friend Offer | Friend 节点向低功耗节点发的Offer |
| 0x05 | Friend Clear | Friend节点通知低功耗节点之前的Friend节点与其解除朋友关系 |
| 0x06 | Friend Clear Confirm | Friend 节点移除朋友节点的确认 |
请求过程
- 1 . LPN发布一个“好友请求”(Friend Request)消息。该消息不会被中继,因此只有处于直接无线电范围内的好友节点才能处理该消息。不具有“好友”特性的节点会将消息丢弃。“好友请求” 消息包括LPN的ReceiveDelay、ReceiveWindow和PollTimeout参数。
- 2 . 附近的好友节点若支持“好友请求”消息中特定的要求,将准备一个“Friend Offer”消息,并将其发送回LPN。该消息包括各种参数,包括支持的ReceiveWindow大小、可用的消息队列大小、可用的订阅列表(Subscription List)大小、以及由好友节点测量的RSSI值。
- 3 . LPN接收到“Friend Offer”消息时,通过应用一种实施专用的算法来选择合适的好友节点。该算法可能会考虑到各种各样的情况。某些设备可能会优先考虑ReceiveWindow大小,以尽可能减少功耗;而有些设备则可能会更加关注RSSI值,以确保能够与好友节点保持高质量的链路。所采用的精确算法由产品开发者决定。
- 4 . 选择好友节点之后,LPN将向好友节点发送一个“Friend Poll”轮询消息。
- 5 . 从LPN收到“好友轮询”(Friend Poll)消息后,好友节点会回复一个“Friend Update”更新消息,完成“好友” 建立流程并提供安全参数,好友节点会为低功耗节点存储一个订阅列表,此时“友谊”得以建立。


友谊消息通信
友谊建立成功后,好友节点会缓存发往LPN节点的消息
低功耗节点LPN会周期唤醒向好友节点发送轮询消息获取其缓存数据
当好友缓存中无消息时,MD字段设置为0终止消息,LPN会停止轮询并重新进入休眠

分包缓存消息
当发往LPN低功耗节点的消息存在分包情况时,好友节点会缓存完整的消息后才会应答给LPN节点

本文详细介绍了蓝牙Mesh中低功耗节点如何通过友谊协议与好友节点合作,降低功耗并实现长续航。内容涵盖了友谊时间参数、建立过程、通信机制、安全性及友谊终止策略。实例分析了实际应用中的挑战和优化建议。
最低0.47元/天 解锁文章
2559

被折叠的 条评论
为什么被折叠?



