基于STM32温湿度环境监测系统的设计
2022-11-10曾海燕潘有椿庞承诺
韦 燚 曾海燕* 潘有椿 庞承诺
(广西民族师范学院,广西 崇左 532200)
0 引言
随着现代科学技术飞速地发展和普及,对设备的性能、精度要求越来越高,各类行业对生产所需要的原材料及成品保存管理更为精细。传统的方式主要是靠人工去检测温湿度数据,如今,采用人工轮流值班的方式已不能满足当前的需求。通过人工轮流查询数据的方式效率不仅低下,而且不能实时对某一环境下的温湿度数据进行有效的测量。当温度或者湿度超出指标时,会影响到成品的质量。设计一款环境温湿度检测系统,能够及时对环境内的温湿度进行检测,确保货物在环境内安全存放。通过设计,实现远程查看数据,可以在手机或者电脑查看当前环境参数值,查看不同位置的环境参数。
1 系统设计思路
根据需求设计这一系统,能够实时监测仓库及其他环境的温湿度参数,通过多点的方式,对环境系数进行判断与测量,并将数据上传到云平台。设计一款手机App读取云平台的数据,当数据超过限定值则做报警处理。
2 系统硬件设计
系统框架图主要包含四个子系统、客户端App以及云平台。每个子系统均包含STM32单片机主控模块、报警处理模块、按键控制模块、传感器模块、无线通信模块、液晶显示模块。系统框架图如图1所示。子系统电路原理图如图2所示。单片机主控模块采用的是STM32F1系列的最小系统-STM32F103C8T6,传感器模块采用的SHT30温湿度传感器,按键模块采用的是轻触开关,液晶显示模块主要采用的是轻量级的OLED,报警模块主要是采用LED和蜂鸣器,无线通信模块采用的是ESP8266,云平台采用的是OneNET提供的云平台服务。多个主控模块分别通过多个无线通信模块与云平台相连接。子系统的主控模块接收传感器采集的数据,并对数据分析与处理,通过液晶显示屏将数据展现给用户,所显示的就是当前环境的温湿度系数。经过处理后的数据使用无线通信模块上传到云平台,在电脑进行登录就可以查看当前环境的温度和湿度。通过手机App读取云平台的数据,实现数据的同步。使用手机或者电脑都可以获取当前环境的温湿度系数。
图1 系统框架图
图2 系统电路原理图
2.1 STM32单片机主控模块
单片机主控模块采用的是STM32F1系列的最小系统——STM32F103C8T6,需要提供的工作电压在2~3.6 V之间,超出该范围电压会导致芯片烧坏。选用这款类型的芯片主要是低功耗,封装体积小,性价比较高,运行速度快。这款型号的单片机能够实时处理传感器所接收的数据,起到整个子系统的控制作用。通过控制IO口输出电平的高低,可对LED灯、OLED、蜂鸣器等设备做出响应。通过IIC通信方式可对数据进行有效的输入与输出,设备与设备之间进行数据的交互。在OneNET的C文件需要指定云平台的产品ID,设备ID以及鉴权信息,指定当前子系统属于产品下的子设备。
2.2 传感器模块
本设计采用的传感器是SHT30,其优点在于功耗小,体积小,易于安装,精度较高,采用的是DFN封装工艺。SHT30负责监测当前范围内的湿度系数和温度系数传送给单片机主控模块。这款传感器测量的数据精度较高,温度测量精度偏差可控制在0.3℃,湿度测量精度偏差可控制在2%之内。
2.3 按键模块
按键模块采用的是轻触开关,主要是调节温度和湿度上下限值。每个按键对应不同的功能,用户可以根据仓库环境的不同,指定限值的高低。按键的第一个引脚与单片机相接,作为输入引脚,第二个引脚接负极。当按键按下的时候,按键的两个引脚成短路状态,向单片机输入低电平。
2.4 液晶显示模块
液晶显示模块主要采用的是轻量级的OLED,主要功能是展示当前环境的温湿度数据。可以显示汉字、字符串、字符、数字等,可通过字符和数字的组合形式显示温湿度数据。
2.5 报警模块
报警模块主要是采用LED和蜂鸣器的组合方式,当湿度或者温度超出限定值的时候,就会触发报警,提醒用户。默认情况下,蜂鸣器和LED都是不通电的,处于低电平状态,蜂鸣器和LED使用并联的方式连接。报警的形式是以蜂鸣器发出警报同时LED发光,直到温湿度都低于指定值。
2.6 无线通信模块
无线通信模块采用的是ESP8266-01S,主要是将温湿度数据上传到云平台,通过无线的方式实现单片机与云平台数据的传输。这款WiFi模块在性能方面上比较稳定,工作温度适应范围较大,使用范围比较广,能够在各种操作环境下正常工作。该模块提供三种工作模式:第一种是串口无线AP模式;第二种是串口无线STA模式;第三种是串口无线AP+STA模式。在进行网络传输的时候,必须保证云平台和ESP8266都处于在线状态,才能实现数据的传输。
3 系统软件的设计
3.1 系统主程序的设计
主程序流程:首先初始化ESP8266、串口、OLED液晶显示屏、IO口、STH30温湿度传感器等设备,并尝试连接云平台,没有连接成功不会执行后面的步骤,需要在此循环重新连接。云平台连接成功之后,进行温湿度数据的监测,接着对键盘进行扫描,同时将温湿度数据、限定值上传到云平台,并通过OLED展现当前状态的数据。当程序检测到按键按下时,则修改温湿度的限定值。当检测的温度或者湿度超出指定阈值就会做报警处理。其流程如图3所示。
图3 系统主程序流程
3.2 按键控制的设计
按键的主要功能是控制温湿度限定值的修改,当按下1、2键修改温度的阈值,当按下3、4键修改湿度的阈值,如图4所示。
图4 按键控制流程
3.3 云平台的设计
云平台采用的是OneNET提供的云平台服务,在平台上面需创建对应的产品及其设备。云平台与设备之间使用多协议接入下的MQTT协议,MQTT协议能够更长的维持平台与设备之间的连接,保持云平台与设备的数据有效传输,满足项目通信的需求。每一个设备需对STM32单片机提供鉴权信息、产品ID、设备ID等相关信息;对手机App提供APIKEY和API访问地址。通过无线通信模块连接OneNET的设备,将数据推送到云平台,实时显示当前温湿度数据,并提供历史数据存储功能。ESP8266与OneNET采用JSON类型的数据格式进行传输,云平台会自动解析JSON格式的数据。数据可以转成图形界面,图形数据信息是通过硬件程序命名的,如图5所示。在同一个产品下,创建多个设备,每个设备对应一个子系统,用来接收子系统上传的数据,实现仓库环境的多点监测,如图6和图7所示。
图5 数据流
图6 多点监测设备
图7 多点监测子系统
本系统采用云平台的方式,用户可通过电脑登录平台查看温湿度数据,就可以解决人工现场勘察数据,实现对数据的远程监测,监测结果如表1所示。
表1 数据监测结果
3.4 手机App的设计
客户端使用的是手机App,根据系统需求在Android Studio进行界面设计和开发。通过网络读取云平台上的数据,将接收的数据进行分析与处理,并在手机页面显示。设计手机App提供多个数据页,每个数据页对应一个子系统。避免数据全部堆在一起,可读性差。在数据记录的后面提供一个按键,当点击某一个时间段时,可跳转到当前时间段的历史数据页。手机App所呈现的数据有当前温湿度数据、温湿度指定报警值、历史数据。获取数据时需连接可用网络,进入到App页面,就可以实时刷新当前监控环境的温度和湿度的数据。当指定环境的数据超出预先设定的数值时,也就是某一个设备的监测的数据超标时,会以短信发送的方式来通知用户。短信内容包含超出数据、上限值以及当前时间,如图8所示。保证在一定的环境下,环境的数据偏高或者偏低,都能对指定的QQ邮箱发送消息。在开发手机App的时候,需要提供云平台的设备的密钥、设备的地址,采用的是GET请求方式,直接从URL地址获取参数和数据信息。接收数据时,需要指定参数名,要与设备的某一个数据流的名称一一对应。在手机App中,需要创建多个界面,需指定一个界面对应一个子系统,为其每一个界面提供对应的设备密钥和数据接收的地址,方便观察数据的流动。提供历史数据的查看,以确定当前平台环境的安全。从云平台接收数据限定值,当硬件设备对限定值进行更改,手机App也会实时同步。
图8 报警图
4 结语
本系统主要是远程监测环境温湿度数据,通过无线传输的方式,在电脑或者手机App都能实时查看数据。在一个环境下,不同位置放置一个子系统进行数据的监测,用户根据位置的不同设定初始值。该系统适用于仓库存储、农业大棚、工控行业、动物养殖、食品行业等环境。