本帖最后由 Kara 于 2022-12-9 16:46 编辑
摘要:针对远程环境监测需求的问题,设计一种基于STM32的远程环境实时监测系统。该系统由信息采集、电器控制和协调器等3个子系统组成,各子系统以STM32F103C8T6单片机为主控芯片,通过LoRa无线通信技术进行星型组网,完成环境信息和控制指令的传输。
信息采集子系统通过传感器网络对环境中温度、湿度、烟雾、一氧化碳、空气质量和光照强度等信息进行实时采集;电器控制子系统通过继电器和电机完成控制功能;协调器子系统通过Wi-Fi模块将系统接入云平台,利用手机APP对环境信息进行远程监控,同时对系统进行远程控制。测试结果表明,该系统可稳定完成实时采集、远程监控和远程控制等功能。
目前,已有的环境监测系统如利用ZigBee通信技术可实现对报警按钮、门磁、窗磁以及红外感应模块的实时监测,但是系统覆盖范围小[5-6];通过无线传感器网络实现了对室内二氧化碳浓度的检测,但检测信息单一[7];全球移动通讯系统(globalsystemformobilecommunications,GSM)模块仅对温室的异常环境信息远程报警,不能远程对温室实时环境进行监控[8];在无线传感器网络中,利用Wi-Fi技术对环境参数进行多跳数据传输,网络复杂度高[9]。
针对上述问题,拟设计一个基于STM32的远程环境实时监测系统,用于对室内环境进行远程监测。该系统先利用通信距离远、功耗低的LoRa技术[10-11]对各子系统进行星型组网,再通过Wi-Fi模块将系统接入物联网云平台,以期实现对环境信息的远程实时监控以及对系统的远程控制。
1系统总体设计
基于STM32的远程环境实时监测系统主要由信息采集子系统、协调器子系统、电器控制子系统和物联网监控管理平台组成,各子系统间通过LoRa无线通信技术进行星型组网。系统总体设计如图1所示。
图1系统总体设计
1.1 信息采集子系统
信息采集子系统作为节点,通过传感器网络对环境中光照、温度、湿度、烟雾、一氧化碳和空气质量等信息进行采集并将数据发送给协调器子系统。
1.2 协调器子系统
协调器子系统作为网关,通过Wi-Fi模块连接到无线路由器接入互联网,将系统信息上传至互联网上的物联网云平台,同时从物联网云平台获取控制指令。当环境信息异常时,蜂鸣器进行报警,避免火灾或一氧化碳中毒等意外情况带给人们伤害。此外,协调器子系统的工作模式分为自动模式与手动模式。当处于自动模式时,系统通过对比实际环境信息与设置的阈值,决策出对用电器的控制指令,提供智能的控制服务。当处于手动模式时,通过手机APP或按键对用电器进行控制。协调器子系统根据工作模式决策出控制指令后,将控制指令发送给电器控制子系统。
1.3 电器控制子系统 电器控制子系统作为节点,负责对控制指令数据包进行解析并对用电器进行控制,用电器的控制包括对继电器的控制和步进电机的驱动。
1.4 物联网监控管理平台
物联网监控管理平台负责对环境信息进行远程监控并对系统进行远程控制,由机智云物联网云平台的手机APP和Web端组成。机智云物联网云平台是互联网上的第三方云服务器,手机APP通过移动网络与云平台进行通信,对系统上传的信息进行查看。同时,通过移动网络将控制指令发送至云平台,实现系统参数的修改和用电器的控制。通过Web端的通信日志查询协调器子系统上传的历史数据,对数据进行统计与分析。
2硬件设计
通过STM32单片机最小系统对3个子系统进行控制和数据处理。STM32单片机最小系统由STM32F103C8T6单片机[12-13]、电源电路、晶振电路、复位电路和Boot电路组成。子系统间通过LoRa无线通信模块进行通信,LoRa无线通信模块采用SX1268芯片。
2.1信息采集子系统硬件设计
信息采集子系统硬件部分主要包括STM32单片机最小系统、传感器电路和无线通信模块等3个部分,硬件结构如图2所示。
图2信息采集子系统硬件结构
传感器电路包括温湿度传感器、光照传感器、烟雾传感器、一氧化碳传感器和空气质量传感器。温湿度传感器选用DHT11模块,与单片机之间进行单总线通信,其湿度精度±5%RH,温度精度±2℃,湿度量程20%~90%RH,温度量程0~52℃。光照传感器、烟雾传感器、一氧化碳传感器和空气质量传感器分别选用光敏电阻传感器和MQ-2、MQ-7、MQ-135气敏传感器,4个传感器均输出模拟信号,与单片机的模数转换器(analogtodigitalconverter,ADC)引脚相连,对输出信号进行A/D转换即可得到环境数据。
2.2协调器子系统硬件设计
协调器子系统硬件主要包括STM32单片机最小系统、无线通信模块、按键电路、显示模块、Wi-Fi模块和报警模块等6个部分,硬件结构如图3所示。
图3协调器子系统硬件结构
按键电路负责切换屏幕显示内容、开关用电器、修改系统工作模式和阈值信息等;显示模块采用0.96寸有机发光二极管(organiclight-emittingdiode,OLED)屏幕对环境信息和系统参数进行显示,与单片机之间采用IIC(inter-integratedcircuit)通信协议进行通信;Wi-Fi模块采用esp8266[14],将环境信息上传至机智云物联网云平台,与单片机之间进行串口通信;报警模块使用有源蜂鸣器对异常情况进行报警。
2.3电器控制子系统硬件设计
电器控制子系统的硬件主要由STM32单片机最小系统、无线通信模块、步进电机控驱动电路和继电器等4部分组成,硬件结构如图4所示。
图4电器控制子系统硬件结构
步进电机控驱动电路采用ULN2003芯片[15],通过放大电流对步进电机进行驱动,步进电机的顺时针转动和逆时针转动可以控制窗帘打开与关闭。继电器采用低电平触发继电器对照明系统进行控制。
3软件设计 3.1信息采集子系统软件设计
信息采集子系统主要完成对环境中光照、温度、湿度、一氧化碳和空气质量等信息的采集与封装,并发送给协调器子系统,具体工作流程如图5所示。为了降低功耗,主控芯片设置为睡眠模式,通过定时器中断的方式唤醒主控芯片。系统上电并完成初始化后,主控芯片进入睡眠模式,等待定时器中断进行唤醒。当发生5s的定时器中断时,单片机执行定时器中断函数,对温度、湿度、光照、烟雾、一氧化碳和空气质量等信息进行采集并进行封装,最后将环境信息数据包发送给协调器子系统。发送完毕后主控芯片再次进入睡眠模式等待定时器中断发生。
图5信息采集子系统工程流程
3.2协调器子系统软件设计
协调器子系统主要完成对环境信息数据包的接收、解析与显示,环境信息异常报警,控制指令决策,系统参数修改,与云平台通信及控制指令发送至电器控制子系统等工作,具体工作流程如图6所示。
图6协调器子系统工作流程
系统上电并初始化后,判断串口2是否收到环境信息数据包,若收到数据包则根据帧格式对数据包进行解析,即可得到环境信息,将环境信息显示在OLED屏幕上。当环境信息异常时,通过蜂鸣器进行报警。当系统处于自动模式时,若光照强度大于阈值时,则打开窗帘,关闭灯光;当光照强度小于阈值时,则关闭窗帘,打开灯光。随后进入按键扫描程序,通过按键可以对系统参数进行修改,也可以控制灯光和窗帘。与云平台进行通信时,将环境信息与系统参数上传至机智云物联网云平台,并从云平台获取控制指令。最后,将控制指令进行封装发送给电器控制子系统。
3.3电器控制子系统软件设计 电器控制子系统主要完成对控制指令数据包的接收与解析,根据控制信息对继电器和步进电机进行驱动,具体工作流程如图7所示。
图7电器控制子系统工作流程
系统上电并初始化后,等待串口2接收到控制信息数据包,然后对控制信息进行解析,根据控制信息对步进电机进行驱动以及对继电器进行控制。
3.4物联网监控管理平台接入 物联网监控管理平台由机智云物联网云平台的手机APP和Web端组成。在机智云官网进行注册并建立产品后,创建产品对应的数据点,数据点将设备的实际功能抽象化,描述产品的参数及功能。创建的数据点如表1所示。数据点与设备的功能一一对应,云平台与设备以及手机APP用确定的数据格式进行通信。
产品创建完毕后,机智云官网根据产品所建立的数据点生成协议代码,将这部分代码移植到协调器子系统的单片机工程内即可完成设备接入。机智云协议代码主要包含4个文件,如表2所示。
gizwits_product.c和gizwits_protocol.c文件包含了将数据上传至云平台和云平台下发控制指令过程中用到的关键函数。
协调器子系统将数据上传至云平台的具体步骤如下。
步骤1调用userHandle函数将需要上传的信息赋值给数据点。 步骤2调用gizCheckReport函数判断本次上报的数据与上次上报的数据是否相同。若相同则不进行上报,若不同则进入步骤3。 步骤3调用gizDataPoints2ReportData函数将上传的数据转换为云端可以解析的上报型数据。 步骤4调用gizReportData函数将转换后的数据通过串口发送给Wi-Fi模块,Wi-Fi模块再将数据上传至云平台。
云平台下发控制指令对系统进行控制的具体步骤如下。 步骤1协调器子系统收到云平台下发的信息后,调用gizProtocolGetOnePacket函数从环形缓冲区的接收缓冲区获取1个数据包,若该数据包为控制型数据包,则进入步骤2。 步骤2调用gizDataPoint2Event函数根据协议生成控制型事件。 步骤3调用gizwitsEventProcess函数根据生成的控制型事件进行相应处理。
4系统测试 为了验证系统的可行性,分别对物联网监控管理平台功能、工作稳定性、通信距离、环境信息异常报警功能和自动控制功能进行测试。
4.1物联网监控管理平台功能测试 协调器子系统的OLED屏幕可以对环境信息、窗帘和灯光的状态、系统工作模式及阈值信息进行显示,如图8所示,此时手机APP显示的内容如图9所示。将手机APP显示的各项信息与OLED屏幕上显示的各项信息进行对比,二者保持一致。人为改变实际环境信息,OLED屏幕显示的信息和手机APP显示的信息均会同步更新。
通过手机APP对灯光和窗帘进行控制,电器控制子系统的继电器和步进电机会实时响应。通过手机APP对阈值信息和工作模式进行调节,OLED屏幕上显示的信息也会更新。测试结果表明,系统实现了对环境信息的实时采集、远程监控及对系统远程控制等功能。
图8OLED显示信息
图9手机APP显示信息
4.2系统稳定性测试
在机智云官网查看协调器子系统上传信息的通信日志,将系统在正常环境中1h内上传的光照、烟雾、一氧化碳和空气质量等信息的12位ADC采样值以及温度值和湿度值进行统计,结果如表3所示。
从表3中可以看出,设备1h上传的温湿度信息在很小的范围内变化,温度维持在30℃左右,湿度维持在45%左右,二者基本保持稳定,符合环境的实际情况。设备在1h内上传的光照强度、烟雾、一氧化碳和空气质量等环境参数的ADC采样值均在较小范围内变化,反映了环境相对稳定。系统上传的数据基本保持稳定,表明系统对数据的采集、传输和上传等功能稳定。
4.3通信距离测试
对有墙壁遮挡的情况下和视距情况下0~0.8km的点对点通信丢包率进行测试,LoRa无线通信模块的发射功率为20dBm,空中速率2.4Kbps,天线增益3dbi。每个测试距离收发500个数据包,每包数据26byte,采用偶校验。通信丢包率和传输距离的关系如图10所示。
从图10中可以看出,有遮挡的情况下比视距情况下通信丢包率高。在有遮挡的情况下,当通信距离小于0.1km时,通信丢包率小于3%,可以满足一般场景中的室内通信。在不增加功耗的基础上可以使用高增益天线提高传输距离。
图10传输距离与通信丢包率关系
4.4环境信息异常报警功能测试
将烟雾阈值修改至小于实际环境烟雾浓度,协调器子系统的蜂鸣器会通过鸣响进行报警;将烟雾阈值修改至高于实际环境烟雾浓度,协调器的蜂鸣器会停止鸣响。改变环境中烟雾浓度、一氧化碳浓度和空气质量至异常状态时均会进行报警。通过反复测试,系统报警功能稳定。
4.5自动控制功能测试
将协调器子系统的工作模式设置为自动模式后,降低环境的光照强度,使之低于光照阈值,模拟夜晚环境,此时,电器控制子系统中继电器控制的灯会自动打开,步进电机会逆时针旋转控制窗帘关闭。增大环境中的光照强度,使之高于光照阈值,模拟日间环境,此时,电器控制子系统的灯会自动关闭,步进电机会顺时针旋转控制窗帘打开。测试结果表明,该系统完成了当环境中光照强度变化时,对灯光和窗帘进行自动控制的功能。
5结语
基于STM32的远程环境实时监测系统,采用传感器网络对环境中温度、湿度、烟雾、一氧化碳、空气质量和光照强度等信息进行采集,监控信息丰富。通过LoRa无线通信技术对各子系统进行星型组网,网络复杂度低,系统覆盖范围大。通过WiFi模块将环境信息上传至机智云物联网云平台,实现了对环境的远程监控。
测试结果表明,该系统可以稳定地对环境信息进行采集、传输与上传,手机APP通过移动网络可远程查看环境信息及远程控制系统;当环境信息异常时,蜂鸣器可自动报警;子系统间通信距离可达0.5km以上;系统在自动模式时,可根据环境中光照强度的变化自动对用电器进行控制,控制方式智能;功能分离的系统架构也有利于系统的维护与升级。该系统满足远程环境监测的需求。 |