close
当前位置: 物联网在线 > 物联网设计开发 > 技术文章 >

使用Zigbee和线程快速构建网状连接的照明应用

对于家庭,建筑和工业自动化应用,连接的照明系统非常方便,可以帮助节省能源。基于802.15.4的网状网络提供低功耗操作,扩展范围和可用性的有效组合,但实施起来却很复杂。
为了减少这种复杂性并节省开发时间,芯片供应商推出了参考设计和工具,可帮助设计人员快速开始评估网状连接的照明应用。
本文将探讨自动化应用程序中对mesh网络的要求,并描述Zigbee和Thread在满足这些要求方面的角色。然后本文将以Silicon Laboratories的一个连接照明套件为例进行介绍。然后继续演示如何使用它开发基于Zigbee或Thread协议的网状连接照明应用。

物联网的连接照明关键部分

随着具有成本效益的LED灯的出现,连接照明在住宅和商业自动化应用中赢得了越来越大的作用。连接的灯可让用户根据自己的工作和个人喜好选择最适合自己的工作环境。
更高级的自动化系统通过增加占用传感器或简单地将有源LED灯作为占用指示器,利用基于位置的支持来扩展此基本功能。与物联网(IoT)中的其他应用程序一样,这些系统的相关数据进一步为用户提供了各种有用的分析。

网状网络

为了帮助连接智能LED等物联网设备,网状通信协议正在迅速成为首选解决方案,特别是对于低功耗应用。对于传统的点对点网络,建筑物一侧的智能LED灯泡需要大幅提升其发射输出功率,以达到建筑物另一侧的控制器。
在网状网络中,连接的照明设备只需要足够的发射功率即可到达另一个附近的连接的照明设备。反过来,网状网络中的各个设备通过网络将源节点的消息路由到它到达目的节点。因此,网状网络允许开发人员在不牺牲范围的情况下使用低功耗设备。
另外,内置于网状网络中的路由机制提供了自愈能力。消息只是重新路由经过失败的节点,以保持整体服务的可用性。
对于自动化网络,Zigbee已经成为开发人员的首选,因为它从一开始就设计为低功耗。此外,Zigbee Alliance认证确保了不同供应商之间的互操作性。Zigbee网络可以轻松地从几台设备扩展到数千台设备。同时,单个Zigbee设备可以提供家庭自动化应用中常见的那种短距离网络,开发人员可以将Zigbee网状网络用于更远距离的应用。
随着Zigbee 3.0的推出,这些应用程序的开发也变得更加直接,它将独立应用程序特定配置文件的混乱减少到称为Zigbee群集库(ZCL)的通用应用程序层(图1)。
Zigbee图已经成为自动化系统的首选解决方案
图1:Zigbee已经成为自动化系统的首选解决方案,并为开发人员提供了Zigbee PRO堆栈中收集的一组强大的连接服务以及Zigbee群集库(ZCL)中的应用程序特定服务。(图片来源:Zigbee联盟)
Zigbee的最新版本为网状网络提供了改进的特性,同时保持了与传统系统的兼容性。尽管如此,Zigbee还没有本地支持互联网协议(IP)与IP网络(如本地Wi-Fi网络和互联网)连接。
为了在Zigbee和IP网络之间进行通信,开发人员需要通过翻译各个网络格式之间的标题和地址来调整流经连接每个域的网关的消息。另外,开发人员通常需要重新包装有效载荷并重新应用安全机制。尽管在概念上并不困难,但这种额外的适应过程给网关设备带来了进一步的处理负担,从而导致消息延迟增加。
在基线Zigbee规范中缺乏对IP寻址的支持促使开发人员寻找替代方案,如线程组中的线程。与Zigbee一样,Thread构建在IEEE 802.15.4物理(PHY)和媒体访问控制(MAC)层上。为了提供IP寻址能力,它为6LowPAN(低功率无线个人区域网络上的IPv6)增加了一层支持。线程还解决了其他关键网格要求,其中包括最新的路径信息以加快重新路由和增强的协议,以便将新设备安全地调试到网状网络。
然而,对于开发人员来说,使用这些技术实现连接照明等应用程序在创建高效的硬件设计和优化相关软件协议栈上的应用程序方面提出了多重挑战。
使用Silicon Labs EFR32MG12 Mighty Gecko 802.15.4无线MCU和相关软件,开发人员可以创建低功耗网状网络。通过以Silicon Labs参考设计为基础,开发人员可以进一步加速实施能够利用这些网络的高级应用程序。

无线MCU

支持802.15.4的MCU的可用性加速了基于低功耗网络的自动化应用的发展。EFR32MG12 MCU等器件集成了典型无线节点设计所需的全部组件。连同它们的集成无线电,全能壁虎的MCU如EFR32MG12P432F1024GM48结合40MHz的32位ARM ®皮质®-M4内核,具有1024 KB的闪存,256 KB的RAM以及大量的数字和模拟外设。该器件的模拟互连矩阵允许设计人员将器件引脚配置为集成模拟模块的模拟I / O端口,包括数模转换器(DAC),模拟比较器,运算放大器和高速12位逐次逼近寄存器(SAR)模数转换器(ADC)。
该器件的无线电子系统集成了全RF接收和发射信号路径,包括低噪声放大器(LNA),功率放大器(PA),频率合成器,信号转换器和平衡 - 不平衡变换器。因此,设计人员只需将两个元件的LC匹配网络连接到器件的两个2.4 GHz天线接口(图2)即可实现低功耗设计的RF侧。对于典型的低功耗物联网设计而言,这种双元件设计足以满足适中的RF发射功率要求(小于13 dBm)。对于具有更高射频发射功率要求的设计,工程师只需为最终的四个元件匹配网络添加另一个LC级。
Silicon Labs EFR32MG12 MCU的RF接口图
图2:对于要求射频发射功率小于13 dBm的2.4 GHz 802.15.4应用,工程师可以通过一个简单的双元LC匹配网络实现与EFR32MG12 MCU的RF接口。(图片来源:Silicon Labs)

高效的IoT解决方案

除了简化RF接口要求之外,MCU的高集成度还简化了整个系统设计。开发人员可以利用集成式DC-DC转换器,只需要额外的外部电容和电感进行部署。因此,基于EFR32的系统的基线设计除了用于电源连接的外部元件外几乎不需要外部元件(图3)。
Silicon Labs EFR32 MCU内置DC-DC转换器的示意图
图3:开发人员可以通过使用EFR32 MCU的内置DC-DC转换器为内部电路模块供电,包括用于低射频输出功率要求应用的RF功率放大器,从而显着降低功耗。(图片来源:Silicon Labs)
旨在尽量减少可能影响器件射频电路的噪声,集成DC-DC转换器仍然能够通过其IOVDD引脚为MCU和其他外部器件提供高达200 mA的电流。开发人员也可以使用转换器来提供MCU的内部模块。
要为I / O,RF模拟和RF PA级供电,请将转换器输出V DCDC连接至芯片各自的引脚(IOVDD,RFVDD和PAVDD)。对于高RF输出功率要求(高于13 dBm)的应用,只需将图3所示的高端电感连接移至V DD电源即可。
使用内部数字和模拟模块的转换器输出也很简单,需要简单的软件设置。开发人员可以通过分别设置MCU的EMU_PWRCTRL寄存器中的REGPWRSEL位和ANASW位,将转换器的输出路由到MCU的数字和模拟模块。
集成DC-DC转换器的使用不仅在简化设计方面具有明显的优势,而且在最大程度上降低功耗。在禁用外设的EM0主动模式下,该器件在使用38 MHz晶振运行闪存代码时消耗约70μA/ MHz。相比之下,对于运行在相同工作条件但不使用集成DC-DC转换器的设计,功耗会增加到大约100μA/ MHz。
即便如此,集成式DC-DC转换器也只是开发人员可用于降低EFR32系统功耗的几项功能之一。该器件支持不同的工作模式,允许开发人员缩放电压和时钟频率 - 以性能为代价降低功耗。稍后,开发人员可以在应用程序需要更高性能时简单地放大电压和频率,然后才能返回低功耗状态。
与为物联网设计设计的几乎所有集成MCU一样,MCU为开发人员提供了多种工作模式,通过将核心和其他子系统置于各种睡眠状态,可显着降低功耗。例如,该器件在睡眠模式(EM1)下仅需41微安(μA)/兆赫兹(MHz),并禁用所有外设。在长时间不活动期间,开发人员可以在深度睡眠模式下(EM2)将功耗降至3μA,在停止模式下(EM3)将功耗降至2.47μA,同时保留全部内存并对内部闪存进行关断。要返回完全激活模式,可以将器件编程为自动唤醒外设的中断,或者RF子系统检测到RF信号时。
对于某些设计而言,MCU从睡眠状态唤醒所需的时间可能会成为问题。早期的MCU具有缓慢的唤醒时间,可能接近甚至超过应用程序所需的响应时间。有了这些设备,开发人员不得不放弃使用深度睡眠模式,接受更高的功耗以确保系统的及时响应。
相比之下,EFR32 MCU从EM3停止模式中以3μs的时间从RAM中执行代码或从闪存执行代码执行大约10μs的唤醒时间。因此,开发人员可以利用低功耗睡眠模式,而不会对典型物联网应用(如连接照明)的响应时间要求产生重大影响。

连接照明解决方案

即使采用EFR32 MCU的简化设计要求,开发人员在创建基于网状网络的完整连接照明应用时也可能面临严峻挑战。除了无线MCU系统之外,开发人员需要将LED和LED驱动电路与合适的缓冲器和接口组装起来,以完成与MCU的连接。除了这些硬件设计细节外,网状连接应用程序的软件开发要求可能令人望而生畏。
开发人员可以使用Silicon Labs RD-0098-0401参考设计套件快速​​开始探索连接的照明应用,而不是面对解决这些问题的延迟。基于前面提到的Silicon Labs EFR32MG12P432F1024GM48 MCU,该套件提供了包括LED照明功能的完整系统实施。该套件的电路板带有几个带有MOSFET驱动电路的LED,以及运算放大器来缓冲用于控制MOSFET栅极的MCU引脚。预加载的MCU固件可让开发人员立即开始检查与网状网络和LED相关的不同操作特性。
相关的参考设计为开发基于网状网络的各种自动化应用提供了清晰的路线图。通过将RD-0098-0401开发板与Silicon Labs SLWSTK6000B网格套件和Simplicity Studio软件环境相结合,开发人员获得了创建定制连接照明系统的全面开发框架(图4)。
Silicon Labs RD-0098-0401连接照明套件的图片
图4:Silicon Labs RD-0098-0401连接照明套件与Silicon Labs SLWSTK6000B网格套件和Zigbee网关配合使用,为评估连接照明和开发定制自动化应用提供了一个综合平台。(图片来源:Silicon Labs)
如图所示,开发人员可以添加任何兼容的Zigbee网关,例如Silicon Labs RD-0001-0201 Wi-Fi网关或Silicon Labs RD-0002-0201 USB虚拟网关,以在更复杂的自动化应用中连接兼容的Zigbee设备。也许这个开发平台中最关键的部分Simplicity Studio软件环境显着改善了应用软件的开发。

开发框架

在创建Zigbee应用程序时,开发人员在图1中所示的Zigbee架构中表示的每一层都面临特定的功能要求。虽然802.15.4兼容硬件支持最底层,但开发人员仍需要确保其软件提供特定功能预计Zigbee架构的其他层次。诸如Silicon Labs EmberZNet协议栈之类的商用Zigbee协议栈可用于中间层,但开发人员仍然有责任在应用层面解决进一步的需求(图5)。
Silicon Labs堆叠Zigbee网状网络的图像
图5:Silicon Labs堆栈提供了Zigbee mesh网络所需的一系列广泛的服务,但开发人员仍然对应用级别的互补功能负责。(图片来源:Silicon Labs)
对于软件开发人员来说,在像Zigbee这样的丰富框架中处理多个层次之间的许多依赖和交互可能会非常具有挑战性。但是,使用Silicon Labs Ember应用程序框架,他们可以更多地关注更高级别的应用程序代码,而不是基础机制。
通过Simplicity Studio提供的Silicon Labs的Ember应用框架通过围绕回调建立的编程模型简化了Zigbee网格的开发。回调为应用程序级代码提供了一种机制,以参与在较低服务级别处理的操作,从本质上提供了一个事件驱动的入口点,进入低级别机制。在某些时候,通常在其关键处理部分之前或之后,较低的服务例程发出回调,这只是对开发人员提供的执行其自己的一组操作的函数的调用。
回调编程模型在复杂的框架中提供了许多好处。例如,Ember框架在执行较低级别的服务功能之前,使用回调来处理具有开发人员特定于应用程序的代码的新消息。通过这种方式,回调不仅为应用程序开发人员提供了一个干净的框架接口,还确保了开发人员的应用程序代码与框架提供的代码之间的隔离。Silicon Labs期望该框架能够处理开发人员可能遇到的任何情况,并且如果开发人员面临需要向框架添加应用程序代码的情况,则认为该框架是一个框架错误。
虽然框架及其回调模型已经隐藏了底层服务体系结构的复杂性,但Simplicity Studio为应用程序开发提供了更简单的方法。在这里,开发人员可以使用Simplicity Studio中的Ember AppBuilder通过一系列菜单选择来构建应用程序。在这些选项中,AppBuilder为开发人员提供了一组插件,用于实现特定集群的功能,如标准Zigbee集群库(ZCL)应用程序层支持的颜色控制。
除了相关的软件模块外,每个插件还提供默认值,例如报告间隔以及与特定群集功能相关的特定回调(图6)。
Silicon Labs Simplicity Studio AppBuilder的照片(点击查看大图)
图6:使用Silicon Labs Simplicity Studio AppBuilder,开发人员只需选择实现应用程序功能所需的一组插件(左侧面板),包括相关的回调(右下角)。(图片来源:Silicon Labs)
AppBuilder提供了实现底层集群功能所需的完整源代码,包括特定的回调。如清单1所示,回调的范围可以从一些简单的代码行来发出停止命令(emberAfColorControlClusterStopMoveStepCallback()),例如,将目标LED的颜色从一种状态转换到另一种状态所需的复杂得多的代码(emberAfColorControlClusterMoveToColorCallback())。在检查默认回调之后,开发人员可以实现自己的回调版本,甚至可以创建自己的插件。
bool emberAfColorControlClusterStopMoveStepCallback(void)
{
  // Received a stop command.  This is all we need to do.
  stopAllColorTransitions();
 
  emberAfSendImmediateDefaultResponse(EMBER_ZCL_STATUS_SUCCESS);
  return true;
}
   .
   .
   .
bool emberAfColorControlClusterMoveToColorCallback(uint16_t colorX,
                                                   uint16_t colorY,
                                                   uint16_t transitionTime)
{
  uint8_t endpoint = emberAfCurrentEndpoint();
 
  if (transitionTime == 0) {
    transitionTime++;
  }
 
  // New command.  Need to stop any active transitions.
  stopAllColorTransitions();
 
  // Handle color mode transition, if necessary.
  handleModeSwitch(endpoint, COLOR_MODE_CIE_XY);
 
  // now, kick off the state machine.
  colorXTransitionState.initialValue = readColorX(endpoint);
  colorXTransitionState.currentValue = readColorX(endpoint);
  colorXTransitionState.finalValue = colorX;
  colorXTransitionState.stepsRemaining = transitionTime;
  colorXTransitionState.stepsTotal = transitionTime;
  colorXTransitionState.endpoint = endpoint;
  colorXTransitionState.lowLimit  = MIN_CIE_XY_VALUE;
  colorXTransitionState.highLimit = MAX_CIE_XY_VALUE;
 
  colorYTransitionState.initialValue = readColorY(endpoint);
  colorYTransitionState.currentValue = readColorY(endpoint);
  colorYTransitionState.finalValue = colorY;
  colorYTransitionState.stepsRemaining = transitionTime;
  colorYTransitionState.stepsTotal = transitionTime;
  colorYTransitionState.endpoint = endpoint;
  colorYTransitionState.lowLimit  = MIN_CIE_XY_VALUE;
  colorYTransitionState.highLimit = MAX_CIE_XY_VALUE;
 
  writeRemainingTime(endpoint, transitionTime);
 
  // kick off the state machine:
  emberEventControlSetDelayMS(COLOR_XY_CONTROL, UPDATE_TIME_MS);
 
  emberAfSendImmediateDefaultResponse(EMBER_ZCL_STATUS_SUCCESS);
  return true;
}
清单1:Silicon Labs Simplicity Studio AppBuilder附带的插件包含特定的回调函数,开发人员可以根据需要用自己的回调函数或插件替换。(代码来源:Silicon Labs)

从Zigbee迁移到线程

通过Silicon Labs环境,开发人员可以利用从Zigbee到Thread的合理简单的迁移路径。在最底层,Simplicity Studio生成硬件配置输出(hal-config.h),可直接与堆栈软件开发工具包(SDK)一起使用Zigbee,Thread,甚至使用Silicon Labs无线电抽象接口层(RAIL)库与Silicon Labs Flex SDK(图7)。
Silicon Labs环境图有助于简化应用程序的迁移
图7:除使用通用硬件配置格式外,Silicon Labs环境还帮助简化不同协议(包括Zigbee和Thread)之间应用程序的迁移。(图片来源:Silicon Labs)
Silicon Labs的Thread stack允许开发人员将一些更高级别的Zigbee应用程序功能迁移到Thread。作为实施Zigbee联盟的物联网连接dotdot语言的一部分,Silicon Labs使用ZCL over IP(ZCL / IP)来实现线程堆栈中包含的Thread应用程序层。在支持dotdot时,ZCL / IP旨在进一步推广Zigbee架构中不同传输类型的应用层功能。对于其线程堆栈,Silicon Labs通过提供在线程中用作标准传输协议的CoAP(约束应用程序协议)的实现来利用这一普遍性。
ZCL / IP将许多其他Zigbee实体,命令和属性直接映射到线程IP网络模型。因此,开发人员可以更轻松地访问迁移到Thread的价值。更简单的是,开发人员可以简单地选择Simplicity Studio AppBuilder中的Silicon Labs RD-0098-0401连接照明演示的Thread实现。与Zigbee演示一样,开发人员可以立即开始探索线程性能特征,或者使用AppBuilder生成的示例应用程序作为他们自己的基于线程的自动化应用程序的基础。

结论

LED照明自动化迅速成为智能家居智能建筑的热门功能。在这些自动化系统的基础之上,网状网络支持连接灯和控制系统的低功耗操作,这些操作系统曾经需要高功率RF收发器。然而,在开发这些网状网络系统时,开发人员在实现具有网状功能的硬件和软件时面临着多重挑战
结合使用时,Silicon Labs RD-0098-0401连接照明套件和Silicon Labs SLWSTK6000B网格套件为创建网状连接的照明系统提供了一个完整的硬件平台。借助Silicon Labs的Simplicity Studio,开发人员可以快速评估完整的基于Zigbee和Thread的连接照明应用,或使用这些示例应用来构建自定义网状网络自动化应用。

(责任编辑:ioter)

用户喜欢...

采用PWM控制的高效智能照明

发光二极管(LED)已迅速成为许多照明应用的首选。LED制造商提高效率和亮度意味着从汽车大灯到仓库和工厂照明等应用的其他同等选择也不多。LED优于其他选项的一个重要优点是其可控性,尽...


ZigBee无线通讯在数码裂隙灯的应用方案

眼科疾病是困扰人群的一大疾病,裂隙灯显微镜是眼科检查不可或缺的重要仪器,而摆脱传统线缆的束缚以实现高自...


新加坡数据创新 将何去何从?

在智慧国家计划的框架之下,新加坡各政府单位配合国家发展目标,在交通、环境、制造与健康领域投入资源协助数...


智能照明迈入人因照明的时代,其关键点是这个……

飞利浦和欧司朗等多家巨头已经花费了近几年的时间,推出了多个联网照明解决方案,这些解决方案将是LED照明发展...


飞利浦照明携手百度,飞利浦 秀 全面接入度秘语音平台

全球照明领导企业飞利浦照明今日宣布,和中国领先科技企业百度(Baidu)签署合作协议。根据协议,百度旗下新一代...


蓝牙,ZigBee,Wi-Fi,NFC低功耗无线技术比较

近来的发展在很大程度上集中在物联网(IoT)连接性,即传感器收集和传递信号和数据。终端产品的例子各不相同,从智能手机,健康和健身可穿戴设备(图1),家庭自动化到智能电表和工业...


欧司朗集团与大陆集团计划成立合资企业

欧司朗集团与大陆集团两家科技公司于6日公布了双方成立合资企业的计划。该计划旨在将创新照明技术与电子和软件...


欧司朗发布2017财年财报 强势增长为未来奠定基础

欧司朗今日公布2017财务年度业绩。欧司朗首席执行官Olaf Berlien表示:“在向着高科技企业不断迈进的过程中,我们在...


Silicon Labs多协议无线软件提升下一代IoT连接应用

Silicon Labs日前为其Wireless Gecko片上系统(SoC)和模块产品组合发布了新的动态多协议软件,可同时在单一SoC上运行zi...


蓝牙mesh | 为智能照明平台铺路

商用照明本身就是现成的互联网络,再将蓝牙mesh网络引入其中,就能为商业和工业设施提供一种提高运营效率并支持全新商业机会的创新方式。零售商将能够提供店内导航和定制化促销;医...