蓝牙Mesh设计(一):节点与功能类型
低功耗蓝牙(BLE)技术是物联网领域的主导者。智能家居、远程医疗和资产跟踪等应用都显著受益于BLE的低功耗功能。然而,设备间的BLE通信一直局限于一对一或一对多。此外,因为通信距离有限,特别是在家居环境等复杂环境中,设备间可能有多面墙壁阻隔,BLE实施难上加难。这些因素导致无法从一个统一的位置控制整个家居环境。
在节点需要从多台设备接收消息并向多台设备发送消息时,就需要多对多通信。例如需要由多部手机控制一组四个灯泡的应用场景。此外,它们还需要接收调光器和/或占用感应器发出的设置消息。这就需要多对多通信。
为了让BLE在智能家居、智能建筑和智能城市等应用场景中,发挥最大功效,开发人员不仅需要实现多对多通信,还要开发出既能扩大通信距离,又能支持部分设备使用小型电池运行的先进技术。BLE Mesh (蓝牙Mesh) 能解决这些问题。
蓝牙Mesh正在兴起,逐渐成为家居自动化的首选技术,因为蓝牙Mesh网络能直接通过手机或平板电脑访问,无需使用网关。对于任何智能家居部署而言,互操作性都是成功的要诀,原因是智能家居可能用到多家厂商提供的产品。针对既定用例(模式)使用标准消息格式,能够快速完成部署并确保与其他BLE Mesh产品的互操作能力。
这五篇系列文章讨论了理解蓝牙Mesh所需的关键概念。我们将重点讨论蓝牙Mesh的低功耗功能、隐私和安全特性,以及如何为您的智能家居应用选择设备。本系列文章的第一篇讨论了蓝牙Mesh网络的构成要素。
蓝牙Mesh网络
蓝牙Mesh网络由具备多种特性类型的节点构成。图1是蓝牙Mesh网络的概览图。从该图我们可以看到,其节点具有下列特性类型:
图1:蓝牙Mesh网络 每个节点都能支持一个或多个特性类型。例如,该网络中的R+F节点支持中继特性和友邻特性。与此相似,R+P节点支持中继特性和代理特性。
01、中继特性
中继特性让节点通过广播承载层传递消息。一般情况下,每个交流电源节点都有可能提供中继特性,因为它们拥有持续收听广播数据包、并将其转发给其他节点所需的电力。中继特性的实际用例包括家居自动化应用中的智能电灯或交流电源电灯开关。另一方面,依靠小型电池运行的节点可能不具备中继特性,因为中继特性需要持续打开Rx,设备才能收听到广播数据包。这样做会很快耗尽电池的电力。
02、低功耗节点特性
低功耗节点特性是蓝牙Mesh最关键的特性之一。与中继特性节点不同,拥有低功耗特性的节点不需要持续收听广播数据包。具备低功耗特性的节点大部分时间处在设备的低功耗模式下,由其友邻节点负责代其接收消息。低功耗节点按规定的时间间隔唤醒,接通友邻节点,检查是否有待收消息。在与友邻节点通信后,低功耗节点返回到低功耗休眠状态。对于使用电池运行的应用来说,这是一个非常有用的特性。家居自动化中的传感器节点、零售店铺内的价格标签等应用都能从低功耗特性获益。
03、友邻特性
具备友邻特性的节点会收听网络中转发的任何消息,而且能够代替相关的低功耗节点收听。友邻节点会存储这些消息。当低功耗节点唤醒并查询友邻节点时,将这些消息传送给相关的低功耗节点。由于友邻节点需要为一个或多个低功耗节点存储消息,因此友邻节点会比其他类型的节点多占用存储器。所需的存储器大小取决于需要存放在友邻节点、并在轮询操作中传送给低功耗节点的数据/命令数量。
04、代理特性
代理特性支持智能电话、Wi-Fi蓝牙Mesh网关等设备与Mesh网络进行通信。对于不直接支持蓝牙Mesh的设备,具备代理特性的节点是它们登入Mesh网络的入口点。在蓝牙Mesh网络中,消息通过广播承载层转发。代理特性支持节点在GATT(通用属性)层和广播承载层之间转发消息。蓝牙Mesh网络中允许多个节点支持代理特性。任何支持代理特性的节点都能用作智能电话/PC机通过GATT进行连接的接口。拥有多个代理节点是一个好主意,这样即使一个代理节点失效,也不会造成整个网络从代理设备断网。与ZigBee等其他Mesh技术相比,这种特性让蓝牙Mesh拥有更高的可靠性。
05、配置
在蓝牙Mesh网络中,配置是指向网络添加新节点的过程。配置需要完成多个步骤,以确保不会将无关设备配置到网络中。未配置设备会按预定的时间间隔发送信标。在发现并选择未配置设备后,配置设备将初始化配置过程。在图1所示的示例中,智能电话和平板电脑在网络中充当配置设备。
根据蓝牙技术规范,并非所有节点都是强制的。换言之,即使不支持所有节点/特性类型,设备也能通过蓝牙Mesh认证。通常情况下,芯片器件厂商不支持通过蓝牙技术联盟认证的友邻节点与低功耗节点特性。这就难以支持电池供电的蓝牙Mesh应用。
蓝牙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发布和订阅示例 如图所示,左数第一个开关(Switch 1)发布消息给餐厅群组。左数第一个(Bulb 1)和第二个灯泡(bulb 2)只订阅餐厅群组。然而,第三个灯泡订阅的是餐厅和厨房群组发布的消息。因此在开关1发布消息时,前三个灯泡(Bulb 1-3餐厅和厨房)都能被控制。但是在开关2发布消息时,只有第三个灯泡(Bulb 3厨房)能被控制。
Mesh节点架构
我们已经讨论过消息在节点间的通信原理,下面我们从功能层面讨论蓝牙Mesh节点架构,了解蓝牙Mesh设备如何实现互操作。
元素
元素定义的是节点的功能。每个节点都至少有一个元素,称为“主元素”。例如,电灯泡一般有一个元素。这个元素提供节点的开关和亮度控制功能。另一个示例是集成了感应传感器的可调光灯泡。这个节点有两个元素。第一个元素用于照明功能,第二个元素用于传感器功能。本例中的主元素是照明功能。
节点中每个元素都有唯一地址,即单播地址。这样可以方便地在同一个节点中,独立于其他元素为每个元素寻址。图2所示的是这两种节点类型的示例。第一个只有一个元素,第二个有两个元素。此外,图2还体现了将在后续章节中讲解的更多概念,以及它们在蓝牙Mesh实现方案中的相互关系。
图2:有一个元素和两个元素的节点 每个蓝牙Mesh节点都使用一个或多个Mesh模式来定义特定的节点功能。MESH模式的涵义类似于蓝牙设备中服务的概率。这里存在三种Mesh模式:客户端模式、服务器模式和控制模式(即在单个模式中同时实现客户端和服务器)。
01、服务器模式
服务器模式能够在一个或多个元素上提供一种或多种状态。服务器模式公开设备的元素状态,供客户端节点读取或控制。例如,蓝牙Mesh灯泡使用服务器模式,在这种应用中,可以使用开/关服务或灯泡亮度服务。开/关服务器公开灯泡的当前状态,并根据客户端输入改变状态,从而实现灯泡开关状态切换。如果使用灯亮度服务器,客户端可读取灯泡的当前状态、控制其亮度、开/关灯泡。服务器模式的另一应用在传感器节点,只允许客户端读取传感器状态,不允许其改变传感器状态。
02、客户端模式
客户端模式允许其他节点发送消息来请求和/或改变服务器节点的状态。使用客户端模式最常见的应用示例是蓝牙Mesh开关。蓝牙Mesh开关可以通过开/关客户端模式获取服务器端开关设备的当前状态,或者可以发送消息将状态改为开或关。另一个示例是使用带输出功率可调客户端功能的蓝牙Mesh调光器,它除了开关功能外,这种模式还能控制服务器端的输出功率可调,从而控制灯泡的亮度。
03、控制模式
在大多数应用中,服务器模式和客户端模式需要与某种控制代码结合使用。这种代码能根据接收到的消息或用户输入采取动作。服务器模式和/或客户端模式与控制逻辑相结合,就得到控制模式。
蓝牙Mesh模式具有能够扩展其他模式的功能。该功能允许有不同功能的Mesh节点受同一条消息控制。
还是以照明应用为例,亮度可调灯泡一般会具有灯泡亮度服务器模式,而部分灯泡是利用输出可调服务器模式来控制输出功率,进而控制灯光亮度,而基本蓝牙Mesh灯泡在多数情况下只有开/关服务器模式。然而,灯泡亮度服务器模式能够扩展开/关服务器模式和输出可调服务器模式功能,这意味着开/关客户端发出的开/关消息可以控制所有三种类型灯泡的开关状态,无论它们原本是否具有开/关服务器模式。
元素的状态存储在服务器或者客户端模式的状态列表中。每种状态都是一个特定类型的值。除了值以外,状态还包括与之有关的行为。这些状态都由蓝牙技术联盟定义。例如,一个带有开/关功能的灯泡或洒水器控制器的开/关服务器会有一种称为通用开/关的状态。这种状态只有两个值,开和关。这适用于灯泡或洒水器控制器一类的设备。“通用”一词的意思是这种状态及其行为可适用于不同类型的Mesh设备。
本文转载自:Cypress赛普拉斯半导体
谢谢分享。