蓝牙低功耗(BluetoothLE)是世界上功率最高的短距离无线通信技术之一。其低功耗被开发商和消费者广泛赞誉。随着蓝牙网状网络(Mesh)的发布,开发人员可能会想知道蓝牙网格是否也被设计为低功耗。它是否继承了蓝牙LE低功耗的优势?
答案是肯定的!蓝牙网状网络包括优化功耗的各种措施,特别是称为“友邻节点(Friendship)”的功能。
蓝牙网状网络标准概述
蓝牙网状网络中的Friendship功能的应用可能非常多样化。一些产品,如灯,将连接到主电源,蓝牙网格模块的功耗与光线本身的功耗相比,可以忽略不计。但是其他产品,如智能传感器或锁具,将受到功率限制,这意味着它们需要由小型电池或能量采集技术供电。像这样的产品最有可能利用蓝牙网格的Friendship概念。
如果您已经阅读了我们的蓝牙网状网络系列中的较早的文章,那么您已经知道节点是已经被设置并且是网状网络成员的设备。节点具有与产品类型相关的功能,但是也可以具有关于网络本身的操作的功能,并且可以承担特殊的角色。
这由他们支持的网格特征决定。所有节点都可以在网络中发送和接收mesh消息。此外,节点还可以选择性地支持一个或多个额外的网络功能,如下所列:
· 中继功能:通过广播承载接收和重传网状消息的能力,以实现更大的网络。
· 代理功能:在GATT和广播承载之间接收和重传网状消息的能力。
· 低功耗特性:能够以显着降低的接收机占空比在网状网络内工作。使无线电接收器的时间最小化导致节点的功耗降低,只有在严格必要时才能使接收机使能。低功耗节点(LPN)通过与Friend节点建立Friendship来实现这一点。
· 友邻功能:通过存储发往LPN的消息来帮助LPN运行的能力,并且只有在LPN明确地从“Friend”节点请求消息时才转发它们。
要了解Friendship如何使LPN降低功耗,请考虑传感器。传感器是一种可能利用Friendship并充当LPN的节点的一个很好的例子。他们通常花费最多的时间来传输数据,而且很少需要接收数据。也许传感器只有在超出一组配置的限制范围内才能发送温度读数,也许这只会每天发生两次。这种不频繁的数据传输保持了这种类型的设备的能量消耗低。
但是如果这些温度限制需要修改以根据季节使用不同的值,并且通过向传感器发送配置消息来实现这些限制的修改呢?对于传感器直接接收这样的消息,需要切换无线并进行收听。大多数时候它正在听,没有收到任何东西,但能量消耗了。
所以,与Friend合作允许LPN安排使用无线接收消息到任何频率对于该设备是有意义的,并且以比其它需要的频率低得多的频率,如果它必须一直接收消息。 LPNs轮询他们的Friend的新消息,Friend只会偶尔存储。这是如何节省电力。
友邻和低功耗节点
LPN必须与支持Friend功能的另一个节点建立Friendship关系,以减少其接收器占空比并节省能源。图1取自蓝牙网状网络规范。另外,它说明了LPN和Friend节点之间的关系。特别是它显示:
· Light blue: LPNs
· Dark grey: Friend nodes associated with and service specific LPNs
· Light grey: Friend nodes which do not have a relationship with anLPN
· 浅蓝色:LPN
· 深灰色:与特定LPN相关联的Friend节点
· 浅灰色:与LPN没有关系的Friend节点
图1 - 网状网络的拓扑示例
Friend节点P与LPNI,J和K具有Friendship关系。Friend节点O与LPN L和M具有Friendship关系。因此,寻址到节点I,J或K的消息将被Friend P存储并转发。节点L或M将被Friend O存储和转发。由Friend节点转发仅在LPN轮询Friend以获得等待传送的消息时发生。
友邻节点参数
LPN需要找到“Friend”节点并与他们建立Friendship关系。所涉及的程序称为Friend建立。我们稍后会检查这个过程,但在我们介绍一些关于LPN行为的关键参数之前,因为这些参数是在Friend建立过程中设置的。
1. ReceiveDelay是LPN之间经过的时间,向Friend节点发送请求,并开始收听响应。这允许“Friend”节点时间准备其响应并将其发送回来。
2. ReceiveWindow是LPN花费时间来收听响应的时间。图2说明了涉及ReceiveDelay和ReceiveWindow的时序。
图2- ReceiveDelay和ReceiveWindow时序
1. PollTimeout建立在LPN发送给其“Friend”节点的两个连续请求之间可能经过的最长时间。如果在PollTimeout计时器到期之前,Friend节点没有收到LPN的请求,则Friendship将被终止。
图3- PollTimeout时序
友邻节点建立
如果两个人想建立友谊,只要一瞥就够了!为了建立蓝牙网状网络的Friendship,还需要几个步骤。
1. LPN发布一个Friend请求消息。此消息不被中继,因此只有直接无线范围中的“Friend”节点才能处理它。没有Friend功能的节点丢弃它。Friend请求消息包括LPN的ReceiveDelay,ReceiveWindow和PollTimeout参数。
1. 可以支持“Friend请求”消息中指定的要求的附近的每个“Friend”节点准备好“Friend offer”消息并将其发送回LPN。该消息包括各种参数,包括支持的ReceiveWindow大小,可用的消息队列大小,可用的列表大小以及由Friend节点测量的RSSI值。
2. 在接收到“Friendoffer”消息时,LPN通过应用实现特定的算法来选择合适的Friend节点。该算法可能会考虑各种各样的点。某些设备可能会将接收窗口大小置于优先级,以尽可能减少功耗,而有些设备可能会更加关注RSSI值,以确保它们能够与“Friend”节点保持良好的链接质量。使用的精确算法由产品开发人员决定。
3. 选择Friend节点后,LPN将向Friend节点发送一个Friend Poll消息。
4. 从LPN收到Friend Poll消息后,Friend节点回复一个Friend Update消息,该消息结束了Friend建立过程并提供安全参数。在这一点上,建立了Friendship。
友邻节点信息
Friendship建立之后,“Friend”节点将LPN的所有消息存储在Friend Queue中。这些被称为存储的消息。下面的图4说明了在Friend节点和关联LPN之间的消息交换。
· 当“Friend”节点收到一个寻址到“Friend”节点的LPN的消息时,“Friend”节点缓冲此消息,将其存储在称为“Friend Queue”的区域中。在图4中,我们可以看到消息1和2代表LPN存储在Friend节点中。
· 定期地,LPN使其收发器发送一个Friend Poll到Friend节点,要求为它存储任何缓冲的消息。
· “Friend”节点首先将一个存储的消息发送回LPN作为对“Friend Poll ”的回复。
· 在每个接收到来自“Friend”节点的消息之后,LPN将继续发送“Friend Poll ”消息,直到收到“MD(MD =更多数据)”字段设置为0的“FriendUpdate ”消息为止。这意味着LPN没有更多消息被缓冲。此时,LPN停止轮询“Friend”节点。
图4- Friendship messaging
安全性
蓝牙网络中的安全无处不在。Friendship也是如此,它使用两个特殊的安全凭证:
· Master security material:从NetKey派生,也可以由同一网络中的其他节点使用。使用master security material加密的消息可以由同一网络中的任何节点解密。
· Friend security material:从NetKey派生,还有一些额外的计数器号由LPN和Friend节点生成。使用Friend security material加密的消息只能由拥有它的Friend和LPN解密。
LPN和Friend节点使用的两种security materials如何?总结如下:
与Friend的securitymaterials加密的相应Friendship消息是:
· Friend Poll
· Friend Update
· Friend Subscription ListAdd/Remove/Confirm
· 存储Friend节点传递给LPN的消息
使用master security material加密的相应的Friendship消息是:
· Friend清除
· Friend清除确认
根据应用程序设置,从LPN发送到Friend节点的消息将使用master或Friend的安全资料进行加密。
终止友邻节点
在某些情况下可以终止Friendship:
· 如果没有Friend poll,Friend Subscription List Add 或Friend Subscription List Remove消息在PollTimeout计时器到期之前由Friend节点收到,Friendship终止。
· LPN可以通过将Friend Clear消息发送给Friend节点来启动Friendship终止过程,从而导致Friendship节点被Friend终止。
平台选择建议
开发人员在选择实施Friend和LPN的平台时,应考虑以下准则:
· RAM容量:可用的RAM数量直接影响了Friend节点可以支持多少个LPN,以及它可以为相关的LPN缓冲多少个消息。
· LPN:所选MCU和模块的一般功耗性能是LPN的关键。此外,从休眠模式到运行模式的唤醒/预热时间会影响LPN的响应速度和延迟。
作为一名开发人员,我相信我们可以分享您对蓝牙网状网络SDK的期待。然后我们可以一起分享蓝牙网状网络“友邻节点”!
全部0条评论
快来发表一下你的评论吧 !