傅鹏有,周金治,周秋宇,刘艺涵,王志文
(西南科技大学 信息工程学院,绵阳621010)
校园楼宇环境监测具有监测节点分散、干扰因素多、数据传输距离远等特点,目前,常见无线传输技术主要以Wi-Fi、ZigBee、蓝牙为主。文献[1]以Wi-Fi 通讯技术为基础,实现对于家居内部的监测;文献[2]基于蓝牙实现了实验室的安全监测;文献[3]利用ZigBee 完成了矿井环境的监测与防护。但上述设计无线传输距离均较短,且易受干扰。文献[4-6]将Wi-Fi、ZigBee 等无线技术结合,利用中继器扩展了数据传输范围实现了无线环境监测,但提高了成本;文献[7-9]基于LoRa 技术实现了广范围内的无线数据传输,具有较好使用效果,但是无法实现远程监测。
LoRa 是一种基于扩频调制技术的广域网无线通讯技术,具有通讯范围大、超低功耗和抗干扰能力强的特点,解决了传统无线通讯设计方案无法兼顾传输距离、抗干扰和功耗的难题,因而被广泛应用于大型区域的无线数据传输应用中[10]。
针对传统无线通讯技术在校园楼宇环境监测中的弊端,本文结合LoRa 无线技术特点设计了一套适用于校园广范围下的楼宇环境监测系统,实现了楼宇终端环境数据采集、云端存储和远程监测。
系统由上位机和下位机构成,其系统设计架构如图1所示,上位机与下位机间采用MQTT 协议进行通讯。下位机由环境数据监测节点和数据集中器构成,负责环境数据的监测、汇集与上传,监测节点根据实际需求具备不同的环境监测能力,分别适用于教室、机房等区域,可监测温湿度、PM2.5 等常见环境指标和火灾、漏水等异常灾害。监测节点监测相应环境数值后,对数值进行处理与组装并按照固有协议格式通过LoRa 无线通讯模块将其数据传输至数据集中器。数据集中器对各环境监测节点数据进行集中与处理后依托Wi-Fi 和路由器进行上传。
图1 系统设计架构图Fig.1 System design architecture diagram
云端数据服务器和Web 实时监测中心构成上位机。服务器以安装的MySQL 数据库为核心接收并处理下位机监测的环境数据,Web 实时监测中心基于阿里云的DataV 平台生成前端页面实现可视化环境数据显示。
数据集中终端主要由处理器、无线通讯模块和存储模块构成,采用STM32F407ZET6 芯片作为处理器,该芯片是基于Cortex-M4 架构内核的32 位处理器产品,最高工作频率可达168 MHz。无线通讯模块由LoRa 模块和Wi-Fi 模块构成,均通过串口与处理器连接,分别用于与环境监测节点和云端的数据交互,FLASH 和EEPROM 组成存储模块,用于Wi-Fi 热点名和密码等数据的存储。
环境监测节点由传感器、主控芯片、LoRa 无线模块以及电源模块构成,其架构如图2所示。由于监测节点所需资源不多,主控芯片采用STM32F103C8T6单片机以降低成本,电源可用USB 或电池供电,以方便环境监测节点的安装部署。
图2 环境监测节点架构图Fig.2 Architecture diagram of environmental monitoring nodes
Wi-Fi 数传选用WH-C120 模块,该模块是一款低成本、低功耗的集成配置串口转Wi-Fi 模块,内部集成MQTT 协议,其电路设计如图3所示。
图3 Wi-Fi 模块电路设计图Fig.3 Circuit design of Wi-Fi module
LoRa 通讯采用E22-400T22S 模块实现无线传输,该模块是一款基于sx1268 射频芯片的高稳定性、工业级无线数传模块,采用串口通讯,具有远程配置以及信道监听等功能,其连接框图如图4所示。
图4 LoRa 模块连接框图Fig.4 Connection block diagram of LoRa module
3.1.1 下位机间通讯协议
下位机间采用数据帧的格式进行数据交互,其环境数据传输数据帧格式如表1所示。
表1 环境数据传输数据帧格式Tab.1 Data frame format for environmental data transmission
1)帧头
帧头为本通讯帧的开始标志,帧头固定为0xFF。
2)设备位
设备位用于监测节点设备的区分,以方便节点的增减和故障判断。
3)环境数据
不同监测节点因其监测环境的需求不同而搭载的传感器类型与数量也不同,因此由具体设备监测功能确定其传输帧类型,其格式如表2所示。
表2 环境数据传输格式Tab.2 Environment data transfer format
监测节点根据设备所具备监测环境能力按环境标志从小到大顺序进行数据帧组装,该监测节点无法监测的环境数据不进入帧组装和发送。集中器通过环境标志判断其环境数据类型并进行数据集中上传。
4)校验
校验采用CRC 快速查表法,用于保证数据传输的准确率。
5)帧尾
帧尾为本通讯帧的结束标志,帧尾固定为0xFD。
3.1.2 下位机与上位机通讯协议
下位机与上位机采用MQTT(message queuing telemetry transport)协议并以JSON(JavaScript object notation)的数据格式进行通讯,MQTT 协议是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议[11]。MQTT 协议采用发布者/订阅者模式,该设计中,数据采集终端为信息发布者,服务器为信息订阅者,同时为与云端服务器程序物理隔离,增强系统的容灾特性,增加安装运行于另一Linux 服务器实例上消息中间件Broker,接收数据采集终端发布的消息并依据消息主题分发给服务器。
JSON 是一种轻量级的数据交换格式,易于机器解析与生成,使用sprintf 函数进行JSON 格式数据上传,利用MQTT_PUBLISH 函数为该次发布添加主题,如下所示:
该数据由环境指标、监测数值以及对应监测节点设备ID 两部分构成,MQTT_PUBLISH 函数由发布主题、长度以及内容三部分构成,实现消息发布。
环境监测节点程序设计流程如图5所示,其主要负责监测的环境数据的处理与数据帧的组装发送以及异常报警。
图5 环境监测节点程序设计流程Fig.5 Programming flow chart of environmental monitoring node
监测节点初始化时唤醒传感器组和LoRa 模块,其环境数据处理与标定由节点完成以减轻集中器端的负载量。环境正常时,节点在收到集中器指令后,利用LoRa 模块自带LBT(listen before talk)功能监听信道,在信道通畅时,向集中器发送所检测数据,噪声较大时延迟发送,以此防止信道冲突和减弱环境噪声对通讯的影响,保证数据传输质量。同时,为保证异常灾害通知的实时性,在异常灾害发生时,监测节点不等待集中器指令,直接向集中器发送数据,每次直接发送完毕均分配一段延迟时隙,以保障集中器与其他节点的正常轮询。
上位机由云端服务器和监测中心Web 客户端构成,负责集中器上传的环境数据处理、分析、存储以及可视化显示。服务器程序基于面向对象语言Java 开发,以基于Java 的Web 开发框架JFinal 为项目框架,使用Maven 进行项目开发管理,并以MySQL 为数据库。监测中心Web 客户端以网页形式设计,便于多屏显示和远程管理,提供用户登录、设备管理以及环境监测等功能,其环境监测界面采用阿里云DataV 平台进行前端友好界面设计,由服务器程序提供数据接口,监测中心提供实时的环境数据显示和历史环境数据分析,其监控中心客户端界面图如图6所示。
图6 监控中心客户端界面Fig.6 Monitoring center client Interface
系统在实验室常温环境下进行测试,部分硬件端测试图以及实验场地如图7所示。
图7 系统硬件端测试图Fig.7 System hardware end test diagram
在校园内楼宇群间进行基于LoRa 技术和基于同价段位ZigBee 模块的远距离通讯质量测试,设置LoRa 模块空中速率为62.5 kbps,发送功率22 dBm,无中继器接力转发,连续收发5000 个数据包。测试以监测节点距集中器的距离为变化量,以丢包率为系统通讯质量指标,其距离采用GPS 定位测距,其测试结果如表3所示。
表3 密集建筑区通讯质量测试表Tab.3 Test table for communication quality in dense buildings
测试结果表明,楼宇间远距离无线通讯时,LoRa相比于ZigBee 具有明显的优势,在700 m 内基本无数据丢包,在传输距离、抗干扰方面表现良好,能够满足校园内广范围的楼宇环境监测。
本文针对校园特点设计了一套楼宇环境监测系统,该系统采用LoRa 无线通讯技术进行楼宇间的长距离无线数传,利用Wi-Fi 实现数据上传云端,并基于网页构建Web 监测中心,实现远程环境监测。本文还就系统设计方案、各部分组件以及私有通讯协议进行了详细阐述,并进行了系统测试。测试结果显示该系统稳定性好、通信距离远,能够适应校园楼宇群的环境监测。