一种两层异构网络通信的智慧路灯管理系统设计
2023-03-14张剑云朱金荣
张剑云,朱 颖,盘 瑶,江 源,朱金荣
(扬州大学,江苏 扬州 225000)
0 引 言
智慧路灯系统的建设是智慧城市发展的关键一环。城市路网纵横交错,而路灯终端是路网的附属物,在路灯上部署信号源可实现对城市的全面覆盖;相较于其他载体,在路灯终端部署传感器获取的城市环境参数更加全面,所以智慧路灯是数字化智慧城市感知层的主要载体。
近10年,智慧路灯发展十分迅速,市场上现有的路灯控制系统采用的通信方案通常是NB-IoT或GPRS通信技术,而这两种技术都是由运营商运营,存在流量资费开销,且模组本身价格较高。而ZigBee通信成本很低,配合射频功放的通信距离能满足智慧路灯需求,且其自组网特性非常适用于智慧路灯环境。本文考虑到智慧路灯应用场景的特点,将ZigBee技术与NB-IoT结合起来[1],构成两层网络,在数量巨大的路灯终端上配置ZigBee模组组网,并在其协调器上配置NB-IoT网关与云平台进行异构网络数据交互,平台可实时控制路灯开闭、亮度,并监控路灯工作状态或读取路灯终端搭载的传感器数值。另外,针对组播数据拥塞问题设计了闹钟机制;在实际开发中,为解决NB模组网络闲置断连问题,设计了心跳机制。
1 需求分析和系统总体方案设计
1.1 需求分析
过去,路灯控制依赖于人工管理,检修工作消耗了大量的人力物力,即使这样也不能保证故障路灯被及时发现。传统的路灯多是总线式的结构,在这种结构下,单点的故障常常会导致整条线路的工作异常[2]。针对以上问题,本文设计一种智慧[3-4]路灯管理系统,特点如下:
1)按地区分配地区号
在一片区域内定义路灯群,每个路灯终端分配独立ID号作为控制依据;在管理平台可实现区域内广播、路灯群组播、单灯控制等功能。
2)两级异构网络通信
在路灯群内构建本地ZigBee网络,将本地数据汇总到搭载协调器的网关;在网关配置NB-IoT模组,使用MQTT协议连接云平台,与云平台进行数据交互;网关负责两层异构网络间的协议转换。
3)闹钟机制
每个路灯终端可配置4个闹钟位,闹钟位包含时、分信息和闹钟事件。
4)心跳机制
利用MQTT协议特点设计心跳机制,保证网关NB模组与MQTT服务器长连。
1.2 系统设计总方案
在传统路灯项目中,指令的下达和信息的反馈主要有电力宽带载波技术、RS 485通信技术和GPRS通信技术等几种方式,总体来说,有先集中数据再接入平台和单灯直接接入平台两种方式。前一种方式的代表是RS 485组网,将总线上所有路灯终端数据集中到RS 485主站,再通过网线上传平台,便于区域范围内路灯的统一管理[5],但是受限于布线条件和RS 485的通信距离;后一种方式的代表是GPRS技术,每一个单灯配置GPRS模组,直接接入云平台,这种方式对于单灯的控制更灵活,但是成本较高。
智慧路灯管理系统硬件部分主要由ZigBee单灯控制器和NB-IoT智慧路灯网关组成,通信部分在路灯群[6]内部使用基于ZigBee的Mesh网络将单灯控制终端与智慧路灯网关联系起来;在网关与平台之间基于NBIoT[7],采用MQTT通信协议的方式进行数据交互。系统的总体架构图如图1所示。
图1 系统总体架构图
2 系统硬件设计
2.1 单灯控制终端
路灯控制终端节点的硬件结构图如图2所示,主要由主控制器、防雷保护电路、电量采集模块、交直流转换电路、降压稳压电路、继电器开关电路、通信定位模块、CC2530 ZigBee模块、电源模块和PWM生成电路组成。
图2 路灯控制终端节点硬件结构图
单灯终端采用32位的STM32F103C8T6单片机作为主控MCU。
电源部分采用开关电源将220 V交流电降至12 V。然后采用两级LDO降压的方案,采用LM7805电路将12 V电压降至5 V,再采用1117电路将5 V电压[8]降至3.3 V。
EMC电路主要由气体放电管TVS、压敏电阻、共模电感、X2安规电容、Y电容以及保险丝构成,使用安规电容的原因是:即使元器件坏掉也不影响电路状态,该电路有抗雷击、抗浪涌的作用,当电流过大时,该电路可以起到有效的保护作用。
电量计量采集模块选用的是HLW8032芯片,这是一款高精度的电能计量IC,采用CMOS制造工艺,具有功耗小、可靠性高和环境能力强的优点,主要适用于单相应用。本文选用康铜电阻采样的方式,通过串联分压原理进行采样分析。
2.2 智慧路灯网关
智慧路灯网关系统硬件结构如图3所示[9],外部接口主要有AC输入、ZigBee天线、NB天线、外设DC供电、RS 485外设接口和调试串口;内部主要由ZigBee协调器、NB-IoT模组、防雷和抗浪涌电路、MCU(STM32F103C8T6)、硬件看门狗、开关电源、MOS电路、电能监控、RS 485转换以及配置、日志串口等组成。
图3 智慧路灯网关系统硬件结构图
3 基于MQTT的数据通信
本文系统设计了一种IoT云平台与网关之间的MQTT通信协议。MQTT是一种订阅∕发布式的通信协议,由一个消息中间件连接多个通信方,在这种结构下,平台与网关终端不是直接连接,而是在MQTT服务器内的不同主题中进行订阅∕发布来交互信息。
3.1 协议主题设计
系统的通信协议主题按照地区、路灯群、功能进行三级划分,在实际使用中平台可利用MQTT通配符“∕#”进行批量订阅。
例如,地区号为YZDX,路灯群号为0021的路灯群网关,上传网关内某个单灯终端的电能信息的主题为YZDX∕0021∕ElcData,并在消息内容中包含该单灯终端的群内ID。
3.2 协议控制机制
MQTT的订阅发布机制不限制同一主题下的发送方数量和接收方数量。这一机制有利于平台对同地区多个路灯群进行指令组播或针对单灯进行指令控制。例如在编号为YZDX的地区内,平台可通过在该地区的组播主题YZDX∕BROADCAST中发布的数据帧结构的内容进行群体指令控制。图4为组播数据帧结构。
图4 组播数据帧结构
图4中,群号代表路灯群编号,该编号为0000时代表本条指令的目标是本地区内的所有路灯群。网关接收到指令后,首先发送回复信息,报告平台已接收到指令,再通过ZigBee Mesh网络在群内广播该指令[8],之后进行轮询检查所有单灯状态,确保该指令下发到每一个终端,保证组播的可靠性。
指令类别和指令内容是该指令的具体内容,图4中的Light Ctrl:0132的含义为开灯且亮度设为50%。在本文系统的单灯终端中,调光是通过PWM方式控制灯头亮度与PWM波的占空比成正比;指令中,使用十六进制的00~64代表MCU生成的PWM波占空比为0~100%,所以图4组播数据帧结构中的32代表亮度50%。值得注意的是,PWM调光的方式在占空比低于15%时,灯头的功率因数将剧烈下降,如表1所示,故本文系统设计亮度下限为15%。
表1 PWM调光的占空比与功率因数
本文系统中设计的MQTT指令内容如表2所示。
在MQTT通信协议中,使用了纵向冗余校验(LRC)的方法进行数据校验,低位在前,高位在后。LRC方法适用于基于ASCII码传输的协议的数据校验。
单灯控制是本文系统的另一项主要业务,可配合摄像头的实时路况分析实现智能调光。平台实现单灯控制的数据帧结构如图5所示。平台发布指令的主题为YZDX∕0001∕SIGNELCTRL,主题中的群号0001代表目标单灯所在群,群内单灯ID是控制目标单灯的15位ID号。指令类别和内容如表2所示,可在同一条下发消息中下发多个指令,最后进行LRC校验。
图5 单灯控制数据帧结构
表2 平台下发的MQTT指令内容
3.3 闹钟机制
城市路灯单灯的主要业务就是定时开关灯[8]。在同一地区,开关灯的时间是相对固定的,且这个动作一般是所有单灯同时进行的。目前市场上的智慧路灯控制系统[10]实现该业务的做法一般是在对应时间由平台下发开关灯的广播信息对所有下辖单灯进行控制,但是这种同一时间的大量信息下发的可靠性不能得到保证,为此必须建立指令回复机制,但是同一时间对大量的广播消息进行回复又会导致服务器数据处理压力的激增。为了解决该问题,本文系统设计了闹钟机制。
系统的单灯[11]终端内置RTC,从网关获取实时时间,由高精度32.768 kHz晶振提供时钟源,且按一定周期校准;单灯终端提供了4个可配置的闹钟位,一般作2组成对使用。每个闹钟位由闹钟时间和闹钟事件组成,闹钟时间代表触发闹钟的时间点,只有时、分信息,不区分日期;闹钟事件包含开关灯和灯亮度信息,在闹钟触发时执行该开关灯和调光动作。闹钟配置内容如表3所示。
表3 闹钟配置内容
单灯终端的闹钟配置信息在接收到配置指令进行更新后固化在MCU的FLASH中,设备重新上电后可重新读取,即使设备掉电也能永久保存。
单灯终端的闹钟配置与2.1节所述一致,可由平台组播进行配置,也可针对单灯配置[12]。一般在路灯群中,所有终端配置相同的闹钟内容,那么在对应时间点,所有单灯会同时执行闹钟内容,这一机制解耦了灯控信息下发时平台与单灯终端的实时连接。由于日照时长变化,智慧路灯系统需要更改定时开关灯的时间点或亮度,本文系统只需要在事件时间到来的前数个小时完成闹钟配置更改即可,避免了大量数据拥塞的问题。
3.4 心跳机制
NB-IoT模组在连接基站时,如果长时间无动作,模组和基站会断开连接。在智慧路灯系统有平台实时下发指令的需求,所以必须保证连接的可靠性,为此本文利用MQTT协议的特点设计了心跳机制,以维持网络长连。
MQTT的订阅发布结构决定了如果一个终端订阅自身发布消息的主题,在发送消息时也能从MQTT服务器收到该消息。利用这个机制,本文系统为每个网关终端设置了心跳主题,网关每隔30 s向该主题发布一条心跳消息,并等待接收该消息,收到消息代表连接正常;未收到则代表连接状态异常。连续地检测到异常时,网关将重启NB模组并重新连接MQTT服务器。
本文系统中,平台也订阅了每个网关的心跳主题,以该主题内有无消息来判断网关的在线与否状态。
4 结 语
该智慧城市路灯管理系统实现了平台对地区、路灯群控制和单灯控制[13-14],具体有开关、调光、状态监控、传感器数据读取等功能;设计的闹钟机制很好地解决了组播数据拥塞问题;利用MQTT协议特点设计的心跳机制解决了NB网络闲置掉线问题。另外,在实际项目中,考虑到产品灌胶后更改配置困难的问题,该系统还搭载了蓝牙模组,利用专门设计的蓝牙通信协议可在灯杆下对灯控器进行直接配置,极大地降低了后期维护成本。本文所设计的两层异构网络通信的智慧路灯管理系统可以在各大城市广泛应用,为城市路灯的管理员提供极大的便利,响应国家推进智慧城市路灯的号召,为社会做出一定的贡献。