APP下载

基于ZigBee和WiFi的温湿度无线监测系统

2019-11-05樊星男

自动化与仪表 2019年10期
关键词:上位串口温湿度

樊星男

(太原学院 机械与电气工程系,太原030032)

温湿度监控在农业、医疗、建筑、文物保存和档案管理等领域都有广泛的应用[1]。传统的有线布线方式应用在较大空间范围内进行多点分布式测量时容易对空间内建筑造成损坏,影响美观且费用较高。因此,设计一个组网方便、数据传输及时可靠的分布式无线温湿度采集系统具有良好的实用价值。

随着物联网技术的不断成熟和发展,针对上述需求,在此采用ZigBee 无线局域网实现多点分布式温湿度测量,采用WiFi 无线局域网实现数据与上位机之间的无线的传输。ZigBee 技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术,其使用的2.4 GHz 频段全球通用[2];WiFi技术是目前应用非常广泛的一种无线上网技术,通过传输控制协议TCP(transmission control protocol)连接,可以方便、稳定地实现温湿度监测系统与上位机软件的数据通信。

1 系统整体设计

所设计的基于ZigBee 和WiFi 的温湿度无线监测系统,上位机软件采用VB 6.0 设计开发,可以实时地将数据显示到界面上,同时还可以将数据保存到Access 数据库中,方便查询历史数据;针对WiFi局域网中IP 地址不固定导致TCP 无法连接问题,上位机软件利用用户数据报协议UDP(user datagram protocol)组播实现了“系统发现”功能,当监测系统的WiFi 模块和上位机软件在同时接入IP 局域网的情况下,二者之间能自动地建立TCP 连接而无需进行IP 地址设置等操作。

该监测系统由监测终端节点、 协调器、WiFi 模块和上位机软件等4 个部分组成。①监测终端根据预设参数接入ZigBee 局域网,实时监测被测空间的温度和湿度并将数据送到协调器;②协调器根据预设参数建立ZigBee 局域网,接收各终端发送来的数据,并将数据通过串口发送到WiFi 模块;③WiFi 模块根据预设值接入WiFi 网络,然后通过 “系统发现”功能连接到远端的TCP 服务器,并将从串口接收到的数据发送到远端;④上位机软件建立TCP 服务器,并通过“系统发现”功能将自身的IP 地址和TCP 服务器端口号发送到WiFi 模块,当建立TCP连接后将TCP 客户端发送来的数据实时显示到界面,同时将这些数据保存到数据库。系统的整体设计框图如图1所示。

图1 无线监测系统整体设计框图Fig.1 Overall design block diagram of wireless monitoring system

2 系统硬件设计

2.1 终端节点硬件设计与实现

终端节点的硬件组成如图2所示,终端节点由CC2530、传感器、指示、电源、串口及天线等6 个模块组成。

图2 终端节点的硬件构成Fig.2 Hardware composition of terminal node

CC2530 是一个ZigBee 片上解决方案芯片,该芯片结合领先的RF 收发器,内有一个业界标准的增强型8051CPU,系统内8 kB 运存、256 kB 闪存。该芯片还结合了德州仪器的ZigBee 协议栈Z-Stack,提供了一个强大和完整的ZigBee 解决方案[3-4]。

节点传感器模块选用SHT11 温湿度传感器。该传感器将温湿度检测、信号放大调理、A/D 转换、I2C总线、CRC 数据校验集于一体,能够实现温湿度值的精确测量和传输[5-6]。SHT11 与CC2530 电路原理如图3所示。

图3 SHT11 电路连接原理Fig.3 Principle of SHT11 circuit connection

电源和串口模块选用PL2303 芯片。该芯片是一个高度集成的RS232-USB 接口转换器,解决了PC 上只有USB 口而没有RS232 口的问题,同时也解决了供电问题,利用常见的5 V 输出电源适配器就能供电。用户通过这个串口可以使用PC 设置终端节点的一些运行参数。

指示模块包括LED1 和LED2 指示灯,当节点通电后LED1 常亮,当节点接入ZigBee 网络后LED2常亮,否则LED2 周期闪烁[7]。

2.2 协调器节点硬件设计与实现

协调器节点硬件组成如图4所示,协调器节点的硬件组成与终端节点基本一致。为了能够方便对协调器进行设置,在串口部分使用了跳线,协调器串口跳线原理如图5所示。当开关拨到上部时,PL2303 与CC2530 相连,实现上位机对CC2530 的设置;当开关拨动到中部是CC2530 与RTL8710 相连,实现CC2530 和RTL8710 的数据传输;当开关拨动到下部时,PL2303 与RTL8710 相连,实现上位机对RTL8710 的设置。系统正常工作时应将开关拨到中部位置。当协调器通电后LED1 常亮,当协调器创建网络完毕后LED2 常亮,否则LED2 周期闪烁。

图4 协调器节点硬件组成Fig.4 Hardware composition of coordinator node

图5 协调器串口跳线原理Fig.5 Principle of coordinator serial port jump

2.3 WiFi 模块硬件设计与实现

WiFi 模块硬件组成如图6所示。WiFi 模块采用RTL8710 芯片,该芯片集成了一个ARM Cortex M3 MCU,802.11n 无线网络控制器,串口等外设于一体,内置了轻量级TCP/IP 协议,为一个完整且自成体系的WiFi 网络解决方案。

图6 WiFi 模块硬件组成Fig.6 Hardware composition of WiFi module

3 系统软件设计

3.1 终端节点软件设计与实现

当终端节点上电后,首先从Flash 固定地址读取系统参数,如果能正常读取且校验成功则使用参数进行系统初始化,如果不能正常读取则等待串口命令。终端节点的串口只有在设置系统参数时与PC连接,PC 按照一定的数据格式向节点发送命令,数据格式见表1。

表1 数据包格式Tab.1 Packet format

根据数据包格式,整个数据包以“帧头”0x1B 开始。“类型”表示数据包的类型,如0x00 表示当前数据包是温湿度值(该数据格式同样用于ZigBee 数据传输);0x01 表示当前数据包是设置设备编号参数。“长度”表示数据包中数据内容的长度,一个完整的数据包长度为(N+4)B。“净荷”为实际传输的数据内容,在应用中根据需要可以继续扩展,如在传输温湿度值时净荷的首字节用于表示设备编号,其后才是温湿度测量值。“校验位”为该字节前面(N+3)B数据之和的最低位字节。

当参数检查通过后,终端节点进入正常程序运行,流程如图7所示,定时器设置为10 s。

图7 终端节点程序流程Fig.7 Terminal node program flow chart

SHT11 传感器输出的温度数据需要经过一定的转换才能使用。

①温度转换公式

式中:T 为温度值,℃;SoT为主控芯片从SHT11 中读取到的温度数据;d1和d2为温度转换系数,其取值见表2。

表2 温度转换系数Tab.2 Temperature conversion coefficient

②相对湿度转换公式

式中:RHlinear为相对湿度;SoRH为主控芯片从SHT11中读取到的湿度数据;c1,c2和c3为湿度转换系数,其取值见表3。

③温度补偿公式 由于湿度的测量受温度影响,所以在测量湿度时还应考虑到传感器的温度补偿。该补偿公式为

式中:RHtrue为绝对湿度;t1,t2为温度补偿系数,其取值见表3。

表3 湿度转换系数和温度补偿系数Tab.3 Humidity conversion coefficient and temperature compensation coefficient

结合该系统设计,SHT11 电压VDD为3.5 V,温度精度SoT为14 bit,湿度精度SoRH为12 bit,将系数结果代入式(1)—(3),可得

3.2 协调器软件设计与实现

协调器是整个ZigBee 网络的核心,它需要具有创建ZigBee 网络,为节点分配地址,将从节点收到的数据通过串口透传到WiFi 模块,等功能,此外协调器同样支持从串口接收PC 命令。其命令格式同表1,协调器软件流程如图8所示。

图8 协调器程序流程Fig.8 Coordinator program flow chart

3.3 WiFi 模块软件设计与实现

WiFi 模块是ZigBee 网络和IP 网络的转换模块,它将ZigBee 协调器发来的数据通过TCP 连接发送到上位机,同时WiFi 模块还是“系统发现”功能的客户端。WiFi 模块程序流程如图9所示。

图9 WiFi 模块程序流程Fig.9 WiFi module program flow chart

传统的服务调用需要客户端明确知道目标服务的地址,并基于这个地址创建服务调用。但是目前网络接入设备和路由设备之间一般均为动态路由,所以网络接入设备的IP 地址不固定,而IP 地址一旦发生变化就会使客户端与服务器之间的服务调用无法建立。故在此设计了“系统发现”功能,即以WS_Discovery 机制Ad_Hoc 操作模式为基础,通过简化其协商流程和内容而来。

标准WS_Discovery(web services dynamic discovery)由服务器端(WS_Serve)和客户端(WS_Client)组成。其协商流程如图10所示。

图10 WS_Discovery 协商流程Fig.10 WS_Discovery negotiation flow chart

当服务器启动后,通过UDP 广播定时向网络发送Hello 消息报文,客户端收到该报文后通过UDP广播发送Probe 消息报文,该消息中包含客户端所需要调用的服务;而服务端在收到Probe 消息后首先判断能否满足该消息中的条件,如果可以满足则通过UDP 单播的形式向该客户端发送PM(probe match)消息,该消息中包含目标服务的相关信息。当客户端收到PM 消息后,就根据消息中携带的信息与目标服务建立连接,而如果客户端从PM 消息中得到的信息还不足以建立服务,就会进一步向服务器发送Resolve 消息,并在消息中携带想要向服务器查询的内容,服务器则会回复RM(resolve match)消息并在消息中携带被查询内容;当服务器下线时,会向客户端发送Bye 消息,通知客户端服务停止。

标准WS_Discovery 机制需要经过多次消息交换,而且是以简单对象访问协议SOAP(simple object access protocol)对协商内容进行封装,此协议为一种基于XML 的文本协议,因此会使得协商时数据量较大进而增加WiFi 模块的内存负担。所以,“系统发现”功能首先将协商流程简化,并且将协商内容由文本变为二进制,其消息格式同表1。

WiFi 模块启动后,创建UDP 并监听3700 端口(标准WS_Discovery 为3702);当上位机启动后,会通过UDP 定时向239.255.255.250 地址的3700 端口发送Hello 消息;当WiFi 模块收到此消息,向服务器回复Probe 消息,该消息携带有与服务器约定好的服务编号;上位机收到Probe 消息并判断服务编号是否合法,如果合法则向WiFi 模块回复PM 消息,并在消息中携带TCP 连接的IP 地址和和端口号。WiFi 模块收到PM 消息后就可以与TCP 服务器建立服务连接。

“系统发现” 功能消息的示例见表4。表中,1B为帧头;A1,A2,A3 分别表示Hello 消息、Probe 消息、PM 消息的类型;类型字段后面给出消息净荷的长度;各条消息的最后一个字节为校验字节。

表4 “系统发现”协商消息示例Tab.4 Example of “system discovery”negotiation message

由表可知,Probe 示例消息中,客户端所携带的服务编码为000103040A0D0708;PM 示例消息中,TCP服务器的IP 地址为192.168.0.100,端口号为1000。

3.4 上位机软件设计与实现

上位机软件使用VB 进行设计,主要功能有数据校准和数据保存。

SHT11 在测量过程中,受到环境、电路的干扰,以及测量数据由多位小数向1 位小数转换的过程会导致测量数据精度降低,与真值之间出现偏差[8]。为了校准该偏差,在此选用精创公司的工业级温湿度记录仪RC-4HC 的测量数据作为约定真值,通过大量的试验比较SHT11 与RC-4HC 之间的测量数据,发现两者之间确实存在一个较为稳定偏差,而且不同的SHT11 与RC-4HC 之间的偏差值也有所不同,测量数据见表5。

表5 SHT11 与RC-4HC 的测量数据Tab.5 Measurement data of SHT11 and RC-4HC

通过计算测量值、真值和误差的平均值,在测量值的基础上再减去一个平均误差值,从而极大地降低整体误差。由表可知,温度平均误差为-0.19,取值为-0.2;湿度平均误差-0.95,取值为-1。所以使用校准公式对测量值Tc和RHc进行校准,即:

上位机软件的数据保存功能采用了VB 中Adodb 控件与Access 数据库连接[9-10]。Access 数据库共设计2 个表,分别用于保存测点参数、测点数据,见表6和表7。其中,表6的主键为测点号,表7的主键为编号。

表6 测点参数记录Tab.6 Parameter record of measuring point

表7 测点数据记录Tab.7 Data record of measuring point

4 测试结果及分析

系统最多有6 个测点,启用3 个测点进行丢包测试。将3 个测点分别置于协调器周围100 m 范围内,WiFi 模块和上位机在WiFi 路由器20 m 范围内。为方便统计收发包数,设置测点在发送一定数量包后停止发送,测试数据见表8。

表8 系统丢包率测试数据Tab.8 System packet loss rate test data

测试共进行3 次,测点每10 s 发送1 个包,持续时间分别约为1,12,24 h;测点发送数为3 个测点发送总和。由表可知,在100 m 范围内,ZigBee 丢包率很小,且丢包率不随测量时间的变化而变化;基于WiFi 和TCP 的连接方式稳定,IP 丢包率为0。

选取3 个测点对系统进行了功能测试,分别将测点1 置于户外、测点2 置于楼道、测点3 置于室内。3 个测点的温度报警上限均为30 ℃,下限为0 ℃;温度预警上限为40%,下限为20%。监测系统主界面如图11所示。测点1 的温度和湿度均低于下限值,分别发出温度报警和湿度报警;测点2 仅湿度低于下限,只有湿度报警。

图11 温湿度监测系统主界面Fig.11 Main interface of temperature and humidity monitoring system

用鼠标双击测点区域可以查看测点实时数据与曲线。测点的实时数据及曲线如图12,图中上方曲线为温度曲线,下方曲线为湿度曲线。

图12 测点实时数据及曲线Fig.12 Real-time data and curves of measuring points

5 结语

所设计的基于ZigBee 和WiFi 的无线监测系统,以CC2530 和RTL8710 为核心芯片,实现了测点与监测软件的无线连接。经过测试,该系统能够实现各测点温湿度的实时监测和显示,显示界面清晰明了,系统组网方便可靠,具有一定的实际应用价值。

猜你喜欢

上位串口温湿度
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
基于AT89C51的数字型蚕用温湿度计的设计
基于EM9000工控板高性能双串口通信模型设计与实现
基于温湿度控制的天气预测装置
特斯拉 风云之老阿姨上位
基于DSP和μcos的温湿度检测系统的设计
船舶电子设备串口数据的软件共享方法
PLC在计算机空调机房温湿度控制中的应用
基于ZigBee和VC上位机的教室智能监测管理系统
CSerialPort 类分析及漏洞的修正