基于STM32的室内环境检测调节系统*
编者按:针对家庭环境存在的问题,设计了一款基于STM32的室内环境检测调节系统,利用传感器采集湿度、温度、一氧化碳浓度,借助加热片、制冷片、风扇调节,同时还配有蜂鸣器报警。除此之外,我们还通过OneNET传输到互联网,方便大家远程查看与调节。
*指导老师:王迷迷
0 引言
随着科技与经济的发展,大多数人对生活环境质量开始有了更高的追求。因此,家庭室内环境的检测与调节技术成为了一个重要项目。传统的检测装置和调节设备,不仅设备成本高,而且对家庭环境的适用性不是很强。现在物联网技术发展迅速,但大多数传统装置却无法实现远程检测与调控。因此,我们通过ESP8266 以及MQTT 协议实现单片机与云平台OneNET 的交互,以此来达到人们对环境参数的实时检测与调节的功能。在数据被OneNET 物联网开放平台所部署的产品(服务器)成功接收并存储后,用户可通过PC 或智能手机登录在OneNET 物联网开放平台开发的监测界面,实现对室内环境数据的实时监测。
1 系统设计
系统方案如图1 所示,主要以STM32F103 芯片为核心,利用传感器为外设,围绕STM32 完成对环境信息的采集。利用继电器完成对环境信息调节。利用MQTT协议,通过ESP8266 模块,使环境信息上传到OneNET 平台,可以通过设备云远程监控和调节系统所在的室内环境。
图1 系统方案
2 系统硬件/数据采集
本系统采用的是瑞士Sensirion 公司生产的SHT20温湿度传感器,其在高温、高湿环境下性能更加稳定。温度误差在0.3 ℃,湿度误差在3.0%RH,在本系统中已经达到使用标准。SHT20 温湿度传感器采用的是I2C总线通信,基本命令如表1 所示。
表1 基本命令
有害气体检测使用的是MQ-135 模块,鼠标靠近一个红色文字,可以直接查看与分句相似的情况,dout输出都是数码信号,ttl 输出的有效电压通常是一个小的低电平,aout 输出的都是模仿信号,模仿输出的电流会随着浓度的增加而逐渐减少和增加,浓度也就会变得更高,而且电压也会随之变得更高。aout 可以用来当做1个模拟信号的输入和引脚。ttl 输出的有效信号是一个较低的电平,aout 输出的是1 个模拟信号,仿真后的输出就会随着浓度的改变而逐渐增加,浓度也就越高,那么电压就会逐渐变得更高。aout 可以作为1 个模拟信号的输出引脚。aout 引脚直接与STM32 的AD 转换和输入引脚相连,ADC 将采集后得到的模拟信号转换成1 个数字信号。在正常环境(即没有收到检测气体)下,将该传感器所需的输入和参考电压设置为正常输入和参考电压。此时aout 端的检测电压大约为1 V,当传感器检测到被检测气体时,检测电压额定值增加为0。在正常环境下,即没有检测到气体的情况下,将该传感所需的输入和参考电压设置为正常输入和参考电压。此时aout 端的模拟浓度电压约为1 V,当单片机传感器在模拟浓度检测时得到被用于模拟浓度检测的气体时,当模拟浓度电压额定值变化增加0.1 V 时,被用于模拟浓度检测气体的实际浓度额定值将会增加2×10-5。根据该参数,单片机可以把测量出来的模拟浓度电压额定值自动变成模拟浓度额定值。这个模块的浓度变换公式定义为:
使用2 路继电器模块来控制风扇等温度调节设备和蜂鸣器。在STM32 上定义出2 个输出口用于判断温湿度是否达到给定阈值。第1 个继电器的常闭触点接升温设备,第2 个继电器的常开触点为降温设备。当温度低于最低温度时,2 个输出口均输出低电平,2 个继电器都处在常闭触点上,第1 个继电器控制升温设备;当温度处于阈值给定的区间内,第1 个输出口为高电平,第1 个继电器处在常开触点上,提供电源给第2 个继电器,第2 个输出口为低电平,处于常闭触点,没有设备打开;当温度高于最高温度时,两个输出口输出高电平,继电器都处在常开触点上,第1 个继电器提供第2 个继电器的电源,使第2 个继电器可以打开降温设备。无线网络模块使用的ESP8266 芯片,运用AT 指令选择运行模式即可实现无线网络和单片机之间的数据连接。为了存储环境数据变送器所采集上传的室内环境数据,接入OneNET 流程时,需要对OneNET 物联网开放平台进行相应的部署,具体可分为创建产品、添加设备和数据上传3 个步骤。首先,登录OneNET 物联网开放平台进入控制台,在OneNET 产品目录选择“多协议接入”服务,并创建一个用于接收和存储监测数据的产品。值得注意的是,一个产品可以拥有多个设备。产品创建成功后点击进入该产品,并打开该产品的设备列表,使用“添加设备”功能为该产品添加设备。然后使用AT 指令将ESP8266连接到自己设定的路由器上,根据说明文档,接入AP的AT 指令为:
AT + CWJAP = ssid,pswd;
其中ssid 为路由器名称,pswd 为路由器密码。设备登陆的AT 指令为:
AT + IOTCFG = devide.proiduct,auth_info;
其中devide 为设备DI,proiduct 为产品ID,auth_info 为鉴权信息。在烧录完成后刷新设备页面,可以发现设备已经在线。之后就要上传数据,可以在平台建立一个数据,数据类似程序中的一个变量,用来存数值,也可以使用固件上报功能,若这个数据不存在,会自动新建一个,根据手册:
尝试自己定义一个数字,输入指令AT+IOTSEND=0,test,125;此时可以发现,设备数据流(设备列表→数据流)中新增1 个数据125。由此可以实现定周期向云平台上传数据。
3 系统软件设计
本系统采用OneNET 云平台服务实现网络监控室内环境数据。云平台也提供了相应的手机APP,帮助实现远程监测的功能。本系统使用MQTT 协议实现数据上传。需要用到安信可ESP8266 IDE、ESP8266 官方SDK等官方提供的文件,需要注意的是,要在云平台上创建产品并选择协议,得到设备认证三元组:ProductKey、DeviceName 和DeviceSecret,在官方提供的文件中改变相应的部分。进行编译、烧录,即可连接到OneNET平台。关于ESP8266 传输数据的格式,MQTT 协议中给出了与数据相关的基本内容,其基本格式分别为:固定报文头(fixed header)、可变报文头(variable header)、有效负荷(payload)。其中,有效负荷为实际检测的数据。由于设备原因,我们采用的是网络带宽占用较低的QoS0。
4 系统实际效果
在打开电源后,可以在PC 端或手机上看到设备已连接在无线网中。通过手指按压测温湿度模块可以看到OneNET 平台和移动端的设备云上监测数据的变化。但由于MQTT数据传输质量问题,有些数据不会实时更新,但总体上可以看出温度的大致走向,在网络较好的地方会体现得更加明显。
5 结束语
本文设计了以STM32F103 为核心的室内环境信息监测和调节系统。测试结果表明,系统能够准确检测出室内的温度、湿度、一氧化碳等环境量,可以利用继电器操控风扇和制冷片,制热片对对环境量进行调节。利用OneNET 物联网平台,通过MQTT 协议,完成了对环境量的远程操控和报警功能。该设计符合系统设计的最初目标,给远程环境监控和调节提供了新的思路,有一定实用价值。
参考文献:
[1] 刘万元,黄连清,黄方连,等.基于OneNET物联网开放平台的智慧农业监测系统设计[J].农业科技与信息,2021(05):82-85.
[2] 王鹏,王发言,刘龙龙.基于物联网的“OneNET病房”监测与信息反馈平台[J].数码世界,2021(1):218-219.
[3] 李丽荣,薄立康.STM32技术下单片机的通信技术实验系统设计与实现[J].电子测试,2021(7):30-31.
[4] 李威,王宏涛.基于NB-IoT的酒窖环境远程监测系统[J].应用科技,2020,47(4):32-36.
[5] 张晨,王玉槐,韩齐,等.基于OneNET云平台的智能家居远程控制系统设计[J].信息技术与信息化,2020(10):223-226.
(本文来源于必威娱乐平台
杂志2021年9月期)
关键词: STM32 家庭室内环境检测与调节 OneNET 202109
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码