蓝牙Mesh设计(二):节点通信

本系列讲座的第一篇概述了蓝牙Mesh及其支持的基本节点和特性类型。本篇讲解蓝牙Mesh网络的通信原理以及在使用蓝牙Mesh开展设计时应掌握的各种重要概念。

节点间通信

蓝牙Mesh使用海量消息并发传输模式在节点间传输消息。海量并发模式是一种多路径消息传递实现方案,有足够冗余来确保消息顺利抵达目的地。

在Mesh海量消息并发传送实现方案中,每个节点会转发所收到的每一条消息,节点将所有接受的消息添加到缓存列表中,避免Mesh设备重复转发之前接收到的消息。当节点接收到消息时,将和已有消息列表进行比对,如果消息已经在列表中存在,则忽略转发该消息。此外,每条消息都包含生存时间(TTL)值,该值限制一条消息能够在网络中转发的次数。每次消息被任何设备接收然后转发(最多126次),生存时间值就减1。

蓝牙Mesh采用基于发布和订阅的通信方式,确保不同类型的产品能共存于网络中,而不会受无关的消息干扰。发布节点只向订阅节点发送消息,然后由订阅节点对这些消息进行处理。家中不同房间里灯光的使用情况就是这种操作的。每个房间只订阅属于该房间的电灯开关发出的消息。此外,消息可以单播、多播和/或广播传输,即消息可以抵达网络中的一个、几个或所有节点。

图1所示的是使用CYBT-213043-MESH评估套件实现的基于发布与订阅的蓝牙Mesh通信方案。CYBT-213043-MESH套件使用 CYBT-213043-02模块来实现蓝牙Mesh通信。与板载用户按钮和RGB LED结合使用,评估板能分别模拟蓝牙Mesh开关和蓝牙Mesh灯泡。

“图1:用于互联照明的蓝牙Mesh发布和订阅示例”
图1:用于互联照明的蓝牙Mesh发布和订阅示例

如图所示,左数第一个开关(Switch 1)发布消息给餐厅群组。左数第一个(Bulb 1)和第二个灯泡(bulb 2)只订阅餐厅群组。然而,第三个灯泡订阅的是餐厅和厨房群组发布的消息。因此在开关1发布消息时,前三个灯泡(Bulb 1-3餐厅和厨房)都能被控制。但是在开关2发布消息时,只有第三个灯泡(Bulb 3厨房)能被控制。

Mesh节点架构

我们已经讨论过消息在节点间的通信原理,下面我们从功能层面讨论蓝牙Mesh节点架构,了解蓝牙Mesh设备如何实现互操作。

元素

元素定义的是节点的功能。每个节点都至少有一个元素,称为“主元素”。例如,电灯泡一般有一个元素。这个元素提供节点的开关和亮度控制功能。另一个示例是集成了感应传感器的可调光灯泡。这个节点有两个元素。第一个元素用于照明功能,第二个元素用于传感器功能。本例中的主元素是照明功能。

节点中每个元素都有唯一地址,即单播地址。这样可以方便地在同一个节点中,独立于其他元素为每个元素寻址。图2所示的是这两种节点类型的示例。第一个只有一个元素,第二个有两个元素。此外,图2还体现了将在后续章节中讲解的更多概念,以及它们在蓝牙Mesh实现方案中的相互关系。

“图2:有一个元素和两个元素的节点”
图2:有一个元素和两个元素的节点

每个蓝牙Mesh节点都使用一个或多个Mesh模式来定义特定的节点功能。MESH模式的涵义类似于蓝牙设备中服务的概率。这里存在三种Mesh模式:客户端模式、服务器模式和控制模式(即在单个模式中同时实现客户端和服务器)。

01、服务器模式

服务器模式能够在一个或多个元素上提供一种或多种状态。服务器模式公开设备的元素状态,供客户端节点读取或控制。例如,蓝牙Mesh灯泡使用服务器模式,在这种应用中,可以使用开/关服务或灯泡亮度服务。开/关服务器公开灯泡的当前状态,并根据客户端输入改变状态,从而实现灯泡开关状态切换。如果使用灯亮度服务器,客户端可读取灯泡的当前状态、控制其亮度、开/关灯泡。服务器模式的另一应用在传感器节点,只允许客户端读取传感器状态,不允许其改变传感器状态。

02、客户端模式

客户端模式允许其他节点发送消息来请求和/或改变服务器节点的状态。使用客户端模式最常见的应用示例是蓝牙Mesh开关。蓝牙Mesh开关可以通过开/关客户端模式获取服务器端开关设备的当前状态,或者可以发送消息将状态改为开或关。另一个示例是使用带输出功率可调客户端功能的蓝牙Mesh调光器,它除了开关功能外,这种模式还能控制服务器端的输出功率可调,从而控制灯泡的亮度。

03、控制模式

在大多数应用中,服务器模式和客户端模式需要与某种控制代码结合使用。这种代码能根据接收到的消息或用户输入采取动作。服务器模式和/或客户端模式与控制逻辑相结合,就得到控制模式。

蓝牙Mesh模式具有能够扩展其他模式的功能。该功能允许有不同功能的Mesh节点受同一条消息控制。

还是以照明应用为例,亮度可调灯泡一般会具有灯泡亮度服务器模式,而部分灯泡是利用输出可调服务器模式来控制输出功率,进而控制灯光亮度,而基本蓝牙Mesh灯泡在多数情况下只有开/关服务器模式。然而,灯泡亮度服务器模式能够扩展开/关服务器模式和输出可调服务器模式功能,这意味着开/关客户端发出的开/关消息可以控制所有三种类型灯泡的开关状态,无论它们原本是否具有开/关服务器模式。

元素的状态存储在服务器或者客户端模式的状态列表中。每种状态都是一个特定类型的值。除了值以外,状态还包括与之有关的行为。这些状态都由蓝牙技术联盟定义。例如,一个带有开/关功能的灯泡或洒水器控制器的开/关服务器会有一种称为通用开/关的状态。这种状态只有两个值,开和关。这适用于灯泡或洒水器控制器一类的设备。“通用”一词的意思是这种状态及其行为可适用于不同类型的Mesh设备。

相关阅读:
蓝牙Mesh设计(一):节点与功能类型

本文转载自:Cypress赛普拉斯半导体
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理。

点击这里,获取更多关于应用和技术的有关信息
点击这里,获取更多工程师博客的有关信息

推荐阅读