基于ZigBee的无线温湿度采集系统设计*
2020-03-20陈新泉
陈 欢,陈新泉
(安徽工程大学计算机与信息学院,安徽 芜湖 241000)
传统的温湿度检测多采用有线传输方式,但对于监控范围广、监测点数量多等复杂的环境,有线传输方式布线困难且成本高.随着无线通信技术的发展,温湿度采集趋向于无线传输方式[1],ZigBee以其低功耗、低成本和短时延等优点,在无线数据传输中得到广泛应用[2-3].因此,设计一套使用ZigBee标准的无线温湿度数据采集系统,可为家居生活和工农业生产带来便利.
1 总体设计
图1 系统整体架构Fig.1 Overall System Architecture
基于ZigBee的无线温湿度采集系统将通过ZigBee协调器收集ZigBee终端节点发送来的数据,然后将数据传输到上位机或移动终端侧显示.系统大体可分为3个部分:(1)采集模块.包含ZigBee终端采集节点和协调器节点,采集节点上有传感器模块、终端节点与传感器通信[4],用来获取环境的温湿度数据.(2)客户端.它是上位机和小程序的统称,不同的是上位机运行在电脑上,小程序运行在移动设备上,它们都可以查看到从协调器或者从服务器加载的数据.(3)服务端.负责数据接收、转发和存储,提供设备动态注册接口.数据由联网模块上报到云平台,云平台存储数据,然后通过规则引擎转发到客户端小程序[5].系统整体架构如图1所示.
2 硬件设计
2.1 ZigBee底板
ZigBee节点上搭载的是CC2530芯片.这是TI公司开发用于解决ZigBee片上系统的芯片,内核本质是C8051,它的射频收发系统模块是2.4 GHz频带,可广泛应用于短距离无线通信组网领域[6].CC2530作为ZigBee协议实现的MCU(微控制器),主要负责创建和加入ZigBee网络;作为终端的节点,需要负责采集传感器的数据,编码转换发送给协调器节点;作为协调器的节点,要与上位机进行通信并上报数据[7-8].底板中的CC2530与其他元件连接的原理图如图2所示.
2.2 传感器主板
传感器主板是通过排母固定在底板上的,主板只需要引出几路有需要的电路,其余阵脚控制,这样设计简单.本系统选用SHT21作为传感器,可以同时采集温度和湿度.SHT21传感器在如图3所示的矩形框内,黑色的即是SHT21芯片.
SHT21的原理图如图4所示,底板上的CC2530芯片通过IIC协议与传感器通信,对应硬件设计中采用串行总线SCL(时钟线)和SDA(数据线)获得温湿度数据.
图3 传感器主板Fig.3 Sensor Board
图4 SHT21原理图Fig.4 SHT21 Principle
2.3 协调器联网模块
本系统中协调器联网模块使用的是基于乐鑫ESP8266-12F芯片的NodeMCU开发板,运行NONOS非操作系统,提供ESP8266硬件的所有接口,包含但不限于GPIO,PWM,IIC和ADC等功能,开发者无需关注繁复的硬件配置、寄存器操作等,是一款高性价比的物联网应用开发平台.NodeMCU上ESP8266的原理图如图5所示.协调器在开机上电后,NodeMCU自动初始化,按照事先烧录的代码配置连接阿里云物联网平台,协调器初始化完毕后会给NodeMCU发送初始化完毕命令,然后发送数据.NodeMCU需要解析数据帧格式并转换为MQTT的Payload报文格式发送给服务器.
图5 ESP8266原理图Fig.5 ESP8266 Principle
3 软件设计
3.1 采集模块
采集模块包含ZigBee终端采集节点、协调器节点和NodeMCU联网模块.Z-Stack是TI公司为ZigBee设计的协议栈,人们只需了解整体运行流程,在指定的地方书写用户代码就可以完成目标.NodeMCU的作用是连接网络,将数据从个域网带到互联网,程序是基于NONOS编写的,自带MQTT和UART等库函数.
采集节点上搭载SHT21温湿度传感器.节点通过IIC读取到环境温湿度数据,经ZigBee网络发给协调器,协调器再将收集到的温湿度数据上报给上位机或MQTT代理服务器.节点程序运行流程如图6所示.
图6 ZigBee节点程序运行流程Fig.6 ZigBee Node Program Running Process
3.2 服务端
服务端包含物联网IoT平台和小程序后端接口服务,两者是互相依靠的.物联网IoT平台是MQTT消息的代理服务器,由NodeMCU上报的数据在这里会存储、分析和转发.小程序后端接口是基于Flask轻量应用框架开发的,它架设在个人服务器上,调用IoT平台的接口为小程序MQTT提供设备动态注册,查询NodeMCU——伪网关状态等.
图7 小程序设备动态注册示意Fig.7 Dynamic Registration of Mini Program
物联网IoT平台选择阿里云IoT平台,开发者可以通过多种方式连接阿里云,MQTT是其中一种.本研究中NodeMCU连接阿里云是TCP方式的MQTT,而小程序中由于微信平台本身的限制,使用了一种MQTTOverWebSocket方式与阿里云完成连接.以上所有的连接都需要阿里云IoT平台提供的三元组信息(即ProductKey,DeviceName,DeviceSecret).NodeMCU中这些信息已被固化,而小程序的动态注册就是为了获得三元组.小程序动态注册示意如图7所示.
3.3 客户端
客户端主要包括Qt上位机和微信小程序.上位机是基于跨平台的Qt用户界面框架开发的,配合Qt的组件QSerialPort完成串口通信,QCharts绘制数据变化曲线;微信小程序使用Uni-App多平台开发框架,一套代码可以运行到安卓、IOS和小程序等.上位机通过串口通信接收协调器上报的数据,微信小程序则是接收MQTT代理服务器推送的主题数据.虽然它们接收数据的方式不同,但都能接收到实时的温湿度数据并显示数据的变化趋势,还可以控制节点采集开关、发送频率等运行状态.
协调器通过串口发送协议帧给上位机解析,帧检验无误后上位机上会显示具体数据,并描绘变化曲线.协调器接入NodeMCU后,NodeMCU解析协调器发来的数据并完成校验,提取具体数据后向MQTT代理服务器发送报文消息,代理服务器会按规则转发给小程序(小程序本身也是MQTT客户端),由此便完成了数据从终端采集到客户端显示的流转.上位机和小程序显示结果界面如图8所示.
图8 上位机和小程序显示结果界面Fig.8 Result Interface of Host Computer and Mini Program
4 结语
主要讨论了基于ZigBee的无线温湿度采集系统的开发过程,从最基本的ZigBee协议到Z-Stack协议栈开发,从上位机开发到协调器MQTT联网,从服务端设计到客户端显示,形成了一套基础的无线数据采集模型.该模型不仅能用于温湿度的采集,在智能家居中还可以用于二氧化碳等环境变量的采集,在工农业等生产中也可以用于监测生产车间环境和监控设备状态等.