对于家庭,建筑和工业自动化应用,连接照明系统非常方便,可以帮助节省能源。虽然基于802.15.4的网状网络提供了低功耗操作,扩展范围和可用性的有效组合,但它们实现起来很复杂。
为了降低这种复杂性并节省开发时间,芯片供应商已经引入了参考设计和工具可以帮助设计人员快速开始评估网状连接照明应用。
本文着眼于自动化应用中网状网络的要求,并描述了Zigbee和Thread在满足这些要求方面的作用。然后,本文介绍了Silicon Laboratories的连接照明套件作为示例。然后继续展示如何使用它来开发基于Zigbee或Thread协议的网状连接照明应用。
物联网的连接照明关键部分
随着高性价比LED的出现灯,连接照明已在住宅和商业自动化应用中发挥越来越大的作用。连接灯允许用户根据他们的工作和个人喜好调整其工作环境的颜色和强度。
更高级的自动化系统通过添加占用传感器或简单地通过基于位置的支持扩展了这一基本功能将有源LED灯作为占用指示灯。与物联网(IoT)中的其他应用程序一样,来自这些系统的相关数据进一步为其用户提供了各种有用的分析。
网状网络
为了帮助连接智能LED等物联网设备,网状通信协议正迅速成为首选解决方案,特别是对于低功耗应用。对于传统的点对点网络,建筑物一侧的智能LED灯泡需要显着提高其传输输出功率,以便到达建筑物另一侧的控制器。
网状网络,连接的照明设备仅需要足够的发射功率才能到达另一个附近的连接照明设备。反过来,网状网络中的各个设备通过网络路由源节点的消息,直到它到达目的节点。因此,网状网络允许开发人员在不牺牲范围的情况下使用低功耗设备。
此外,网状网络中内置的路由机制提供了自我修复功能。消息只是通过故障节点重新路由,以维持整体服务可用性。
对于自动化网络,Zigbee已成为开发人员的热门选择,因为它从一开始就设计为低功耗。此外,Zigbee Alliance认证可确保不同供应商之间的互操作性。 Zigbee网络可以轻松地从几个设备扩展到数千个。同时,单独的Zigbee设备可以提供家庭自动化应用中常见的短距离网络,开发人员可以为更长距离的应用部署Zigbee网状网络。
这些应用程序的开发也有通过引入Zigbee 3.0变得更加直接,Zigbee 3.0将单独的应用程序特定配置文件的混乱减少到称为Zigbee集群库(ZCL)的通用应用程序层(图1)。
图1:Zigbee已成为自动化系统的首选解决方案,并为开发人员提供了一系列在Zigbee PRO堆栈中收集的强大连接服务以及Zigbee集群库(ZCL)。 (图片来源:Zigbee联盟)
最新版本的Zigbee为网状网络提供了改进的功能,同时保持了与传统系统的兼容性。尽管如此,Zigbee还没有原生支持互联网协议(IP)与本地Wi-Fi网络和互联网等IP网络连接。
为了在Zigbee和IP网络之间进行通信,开发人员需要调整消息通过在各个网络格式之间转换标题和地址来流经连接每个域的网关。此外,开发人员通常需要重新打包有效负载并重新应用安全机制。虽然在概念上并不困难,但这种额外的自适应过程会给网关设备带来进一步的处理负担,从而导致消息延迟增加。
基线中缺乏对IP寻址的支持Zigbee规范促使开发人员寻找替代方案,如Thread来自线程组。与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等器件集成了典型无线节点设计所需的全部组件。除了集成无线电外,Mighty Gecko MCU(如EFR32MG12P432F1024GM48)还将40 MHz 32位Arm ® Cortex ® -M4内核与1024 KB闪存,256 KB相结合RAM,以及一系列广泛的数字和模拟外设。该器件的模拟互连矩阵使设计人员可将器件引脚配置为集成模拟模块的模拟I/O端口,包括数模转换器(DAC),模拟比较器,运算放大器和高速12位逐次逼近寄存器(SAR)模数转换器(ADC)。
该设备的无线电子系统集成了全RF接收和发送信号路径,包括低噪声放大器(LNA),功率放大器(PA),频率合成器,信号转换器和平衡 - 不平衡转换器。因此,设计人员只需将双元件LC匹配网络连接到器件的双引脚2.4 GHz天线接口即可实现低功耗设计的RF端(图2)。这种双元件设计足以满足典型的低功耗物联网设计,具有适中的射频发射功率要求(小于13 dBm)。对于具有更高RF发射功率要求的设计,工程师只需要为最终的四元件匹配网络添加另一个LC级。
图2:对于要求RF发射功率小于13 dBm的2.4 GHz 802.15.4应用,工程师可以通过简单的双元件LC匹配网络为EFR32MG12 MCU实现RF接口。 (图片来源:Silicon Labs)
高效的物联网解决方案
除了简化RF接口要求外,MCU的高集成度还简化了整个系统的设计。开发人员可以利用集成的DC-DC转换器,只需额外的外部电容和电感即可进行部署。因此,基于EFR32的系统的基线设计除了用于电源连接的外部组件外,几乎不需要外部组件(图3)。
图3:开发人员可以通过使用EFR32 MCU的内置DC-DC转换器为内部电路模块(包括RF)供电,从而大幅降低功耗功率放大器适用于射频输出功率要求低的应用。 (图片来源:Silicon Labs)
集成的DC-DC转换器旨在最大限度地降低可能影响设备RF电路的噪声,但仍能通过其向MCU和其他外部设备提供高达200 mA的电流。 IOVDD引脚。开发人员也可以使用转换器为MCU的内部模块供电。
要为I/O,RF模拟和RF PA级供电,请将转换器输出VDCDC连接到芯片的相应引脚(IOVDD,RFVDD和PAVDD)。对于具有高RF输出功率要求(高于13 dBm)的应用,只需将图3所示的高端电感连接移至VDD电源即可。
使用内部数字和模拟模块的转换器输出也很简单,需要简单的软件设置。开发人员可以通过分别设置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,具有完全RAM保持和内部闪存断电。要返回完全激活模式,可以对器件进行编程,以便在外设中断时自动唤醒,或者当RF子系统检测到RF信号时。
对于某些设计,MCU从睡眠中唤醒所需的时间可能是一个问题。早期的MCU表现出缓慢的唤醒时间,可能接近甚至超过应用程序所需的响应时间。使用这些器件,开发人员不得不放弃使用深度睡眠模式,接受更高的功耗以确保系统及时响应。
相比之下,EFR32 MCU从EM3停止模式唤醒代码从RAM执行为3μs,从闪存执行代码约为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)。
图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)。
图5:Silicon Labs堆栈提供了Zigbee网状网络所需的广泛服务,但开发人员仍然负责应用程序级别的补充功能。 (图片来源: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)。
图6:使用Silicon Labs Simplicity Studio AppBuilder,开发人员只需选择实现应用程序功能所需的一组插件(左侧面板),包括相关的回调(右下)。 (图片来源:Silicon Labs)
AppBuilder提供了实现底层集群功能所需的完整源代码,包括特定的回调。如清单1所示,回调可以从几行简单的代码行发出停止命令( emberAfColorControlClusterStopMoveStepCallback()),例如,转换目标LED的颜色所需的更复杂的代码。一个州到另一个州( emberAfColorControlClusterMoveToColorCallback())。在检查了默认回调之后,开发人员可以实现自己的回调版本,甚至可以创建自己的插件。
复制 bool emberAfColorControlClusterStopMoveStepCallback(void){//收到一个停止命令。这就是我们需要做的。 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 ++; }//新命令。需要停止任何活动过渡。 stopAllColorTransitions();//如有必要,处理颜色模式转换。 handleModeSwitch(endpoint,COLOR_MODE_CIE_XY);//现在,启动状态机。 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);//启动状态机:emberEventControlSetDelayMS(COLOR_XY_CONTROL,UPDATE_TIME_MS); emberAfSendImmediateDefaultResponse(EMBER_ZCL_STATUS_SUCCESS);返回true;}
清单1:随Silicon Labs Simplicity Studio AppBuilder提供的插件包含特定的回调功能,开发人员可以根据需要使用自己的回调函数或插件替换它们。 (代码来源:Silicon Labs)
从Zigbee迁移到线程
借助Silicon Labs环境,开发人员可以利用从Zigbee到Thread的相当简单的迁移路径。在最低级别,Simplicity Studio生成硬件配置输出( hal-config.h ),可直接用于Zigbee,Thread甚至使用Silicon的专有协议的堆栈软件开发工具包(SDK)。实验室无线电抽象接口层(RAIL)库与Silicon Labs Flex SDK(图7)。
图7:除了使用通用硬件配置格式外,Silicon Labs环境还有助于简化不同协议(包括Zigbee和Thread)之间的应用程序迁移。 (图片来源:Silicon Labs)
Silicon Labs的线程堆栈允许开发人员将一些更高级别的Zigbee应用程序功能迁移到Thread。作为实施Zigbee Alliance的物联网连接dotdot语言的一部分,Silicon Labs使用ZCL over IP(ZCL/IP)实现其Thread堆栈中包含的Thread应用层。在支持dotdot时,ZCL/IP旨在进一步概括Zigbee架构中具有不同传输类型的应用层功能。对于Thread堆栈,Silicon Labs通过提供在线程中用作标准传输协议的CoAP(约束应用协议)的实现来利用这种通用性。
ZCL/IP映射了许多其他Zigbee实体,命令和属性直接指向Thread IP网络模型。因此,开发人员可以更轻松地访问迁移到Thread的价值。更简单的是,开发人员只需在Simplicity Studio AppBuilder中选择Silicon Labs RD-0098-0401连接照明演示的Thread实现。与Zigbee演示一样,开发人员可以立即开始探索Thread性能特征,或者使用AppBuilder生成的示例应用程序作为他们自己的基于线程的自动化应用程序的基础。
结论
LED照明自动化已迅速成为智能家居和智能建筑的热门功能。作为这些自动化系统的基础,网状网络支持连接灯和控制系统的低功率运行,这些系统曾经需要高功率RF收发器。然而,在开发这些网状网络系统时,开发人员在实现具有网格功能的硬件和软件方面面临多重挑战。
结合使用Silicon Labs RD-0098-0401连接照明套件和Silicon Labs SLWSTK6000B网状套件用于创建网状连接照明系统的完整硬件平台。借助Silicon Labs的Simplicity Studio,开发人员可以快速评估完整的Zigbee和基于线程的连接照明应用程序,或使用这些示例应用程序构建自定义网状网络自动化应用程序。
全部0条评论
快来发表一下你的评论吧 !