如需要了解更多蓝牙相关知识,请点击下方连接
https://blog.csdn.net/weixin_47456647/article/details/155188246?spm=1011.2415.3001.5331
蓝牙低功耗(LE)是全球功耗最高效的短距无线通信技术之一,其低功耗特性广受开发者与消费者好评。随着蓝牙网状网络的推出,开发者可能会好奇:蓝牙网状网络是否也兼顾了低功耗设计?它是否继承了蓝牙 LE 的低功耗优势?
答案是肯定的!蓝牙网状网络包含多种功耗优化措施,其中一项核心特性就是 "友关系"。
概述
友关系特性在蓝牙网状网络中的应用场景十分丰富:部分产品(如灯具)由市电供电,其蓝牙网状网络模块的功耗与灯具本身的功耗相比可忽略不计;但另一类产品(如智能传感器、门锁)存在功耗限制,需依赖小型电池或能量收集技术供电 ------ 这类产品正是蓝牙网状网络友关系概念的主要应用对象。
若你读过本系列此前的文章,应该已经知道:节点是完成配置并加入网状网络的设备。节点具备与产品类型对应的功能,同时也可承担与网络运行相关的特殊职责(具体取决于节点支持的网络特性)。所有节点都能在网络中收发网状消息,此外还可选择性支持以下一项或多项额外网络特性:
- 中继功能:通过广播承载接收并重传网状消息,以实现更大规模的网络。
- 代理功能:在 GATT 承载与广播承载之间接收并重传网状消息。
- 低功耗功能:能够在网状网络中以极低功耗运行,通过减少无线电接收器的开启时间来降低接收占空比。通过将接收器的开启时机限制在必要场景,可大幅降低功耗 ------ 低功耗节点(LPN)正是通过与友节点建立 "友关系" 来实现这一点。
- 友功能:协助低功耗节点运行的能力,具体是暂存发往低功耗节点的消息,仅在低功耗节点主动向友节点请求消息时才转发。
要理解友关系如何帮助低功耗节点降低功耗,我们可以以传感器为例 ------ 传感器是典型的低功耗节点应用场景。这类设备通常大部分时间都在传输数据,很少需要接收数据:比如某传感器仅在温度超出配置阈值时才传输读数,可能一天只触发两次,这种低频率传输本身就能让设备能耗极低。
但如果需要根据季节调整温度阈值(通过向传感器发送配置消息实现)呢?若传感器要直接接收这类消息,就必须开启无线电监听 ------ 但多数时候不会收到数据,却会消耗能量。
而与友节点配合后,低功耗节点可自主调度无线电接收消息的频率(远低于持续监听的频率)。低功耗节点会主动向友节点轮询新消息,而友节点仅偶尔暂存消息 ------ 这就是实现节能的核心逻辑。
友节点与低功耗节点
低功耗节点必须与支持友功能的节点建立友关系,才能降低接收占空比、实现节能。图 1 摘取自《蓝牙网状网络规范》,展示了低功耗节点与友节点的关系,其中:
- 浅蓝色:低功耗节点(LPN)
- 深灰色:与特定低功耗节点建立关联并提供服务的友节点
- 浅灰色:未与任何低功耗节点建立关系的友节点

友节点 P 与低功耗节点 I、J、K 建立了友关系;友节点 O 与低功耗节点 L、M 建立了友关系。因此,发往节点 I、J、K 的消息会由友节点 P 暂存并转发;发往节点 L、M 的消息会由友节点 O 暂存并转发。友节点仅在低功耗节点主动轮询待交付消息时,才会执行转发操作。
友关系参数
低功耗节点需要找到友节点并建立友关系,这一流程称为 "友关系建立"。我们稍后会详细介绍该流程,在此之前先介绍一些控制低功耗节点行为的核心参数(这些参数在友关系建立时配置):
- 接收延迟(ReceiveDelay):低功耗节点向友节点发送请求后,到开始监听响应的间隔时间。这让友节点有足够时间准备并发送响应。
- 接收窗口(ReceiveWindow) :低功耗节点用于监听响应的时长。图 2 展示了包含 "接收延迟" 与 "接收窗口" 的时序流程。

- 轮询超时(PollTimeout) :低功耗节点向友节点发送两次连续请求的最大间隔时间。若友节点在轮询超时计时器到期前,未收到低功耗节点的请求,则友关系会被终止。

友关系建立
人与人建立友谊或许只需要一个眼神,但蓝牙网状网络中建立友关系需要多几个步骤:
- 低功耗节点(LPN)发布一条友请求消息。这条消息不会被中继,因此只有直接无线电范围内的友节点会处理它(不支持友功能的节点会丢弃该消息)。友请求消息包含 LPN 所需的接收延迟(ReceiveDelay)、接收窗口(ReceiveWindow)和轮询超时(PollTimeout)参数。
- 附近所有能满足友请求消息中参数要求的友节点,会准备并向 LPN 发送友提供消息。该消息包含多个参数,比如支持的接收窗口大小、可用的消息队列容量、订阅列表容量,以及友节点测量到的信号强度(RSSI)值。
- LPN 收到友提供消息后,会通过 "厂商自定义算法" 选择合适的友节点。算法通常会综合多方面因素:有些设备可能优先考虑接收窗口大小以最大化节能,有些则更关注 RSSI 值以确保与友节点的链路质量稳定。具体算法由产品开发者决定。
- 选定友节点后,LPN 向该友节点发送友轮询消息。
- 友节点收到 LPN 的友轮询消息后,回复友更新消息------ 这标志着友关系建立流程完成,同时会提供安全参数。至此,友关系正式建立。
友节点消息通信
友关系建立后,友节点会将所有发往 LPN 的消息暂存在友队列中,这些消息统称为 "暂存消息"。下图 4 展示了友节点与关联 LPN 之间的消息交互流程:
- 当友节点收到发往其关联 LPN 的消息时,会将该消息缓存到 "友队列" 中。在图 4 中,消息 1 和消息 2 就是友节点为 LPN 暂存的消息。
- LPN 会定期开启收发器,向友节点发送友轮询消息,请求友节点为其暂存的缓存消息。
- 友节点收到友轮询消息后,会将暂存的消息发送给 LPN 作为响应。
- LPN 在收到友节点的每条消息后,会继续发送友轮询消息,直到收到 "MD(More Data,更多数据)字段设为 0" 的友更新消息 ------ 这表示已无更多为 LPN 缓存的消息,此时 LPN 会停止向友节点轮询。

安全性
蓝牙网状网络的安全性无处不在,友关系也不例外 ------ 它使用两种专用安全凭据:
- 受控泛洪安全素材:由网络密钥(NetKey)衍生而来,同一网络中的其他节点也可使用。用该素材加密的消息,同一网络内的任意节点都能解密。
- 友安全素材:由网络密钥(NetKey)和低功耗节点(LPN)、友节点生成的额外计数器数值共同衍生而来。用该素材加密的消息,仅持有它的友节点与 LPN 能解密。
低功耗节点与友节点如何使用这两种安全素材?总结如下:
用友安全素材加密的友关系消息包括:
- 友轮询(Friend Poll)
- 友更新(Friend Update)
- 友订阅列表添加 / 移除 / 确认(Friend Subscription List Add/Remove/Confirm)
- 友节点向 LPN 交付的暂存消息
用受控泛洪安全素材加密的友关系消息包括:
- 友清除(Friend Clear)
- 友清除确认(Friend Clear Confirm)
低功耗节点发往友节点的消息,会根据应用设置,选择用受控泛洪安全素材或友安全素材加密。
友关系终止
在以下场景中,友关系会被终止:
- 若友节点在 ** 轮询超时(PollTimeout)** 计时器到期前,未收到 "友轮询""友订阅列表添加" 或 "友订阅列表移除" 消息,友关系会被终止。
- LPN 可通过向友节点发送 ** 友清除(Friend Clear)** 消息,主动发起友关系终止流程,由友节点完成终止操作。
平台选型建议
开发者在选择实现友节点与 LPN 的平台时,应考虑以下指导原则:
- RAM 容量:可用 RAM 直接影响友节点能支持的 LPN 数量,以及为关联 LPN 缓存的消息数量。
- LPN 相关:所选微控制器(MCU)与模块的整体功耗表现是 LPN 的关键;此外,从睡眠模式切换到运行模式的唤醒 / 预热时间,会影响 LPN 的响应速度与延迟。
作为开发者,我和大家一样期待蓝牙网状网络 SDK 的推出 ------ 届时我们就能一同体验蓝牙网状网络的友关系功能了!