一种基于STM32的智能排水系统设计
2022-11-23梅明杰
王 爽,肖 波,韩 涛,梅明杰
(湖北师范大学 电气工程与自动化学院,黄石 435002)
随着我国经济的快速发展,人们的生活水平不断提高,对水质量的要求也越来越高。但受水土流失、水污染等因素的影响,我国水资源问题依然严峻[1]。
目前,在工农业排水方面,最广泛的是使用继电器控制,其操作简便,但无法根据水环境参数的变化实现水泵的自动启停,若利用PLC 控制可实现排水的自动控制,运行可靠,但价格昂贵。以上方式均可完成排水操作,却无法保证在水质良好的情况下启动排水功能[2]。本设计将水质检测与排水功能融为一体并利用物联网OneNET 云平台进行远程监测,实现智能化排水,运行灵活且成本较低。
1 系统总体方案设计
本系统主要用于采集水体的温度、pH 值和浊度,并利用控制算法实现排水、报警和远程监测功能。系统由数据采集单元、主控单元、通信单元、远程监测以及执行机构组成。其中数据采集单元用来完成对水环境中部分参数的采集和传输;主控单元处理采集的数据信息,进行系统的资源调配;通信单元实现单片机与OneNET 之间的连接,将信息实时传输到云平台;远程监测由云平台搭建,在PC 端和移动端进行数据的可视化显示;执行机构为下位机显示、排水和报警。系统总体设计框图如图1所示。
图1 系统总体设计框图Fig.1 Overall system design block diagram
2 硬件系统设计
本设计的硬件系统主要由电源模块电路、传感器采集电路、ESP8266 通信电路以及执行机构电路共同构成。
2.1 传感器采集电路
传感器采集电路的功能是利用传感器模块对水环境中的温度、pH 值和浊度进行精准采集并实时传输,是系统各个功能实现的前提。
2.1.1 pH+温度传感器模块电路
温度的采集选用DS18B20 数字温度传感器,数据传输时只用一根数据线就可实现单片机与温度传感器的双向传输,优化抗干扰能力。pH 值的采集选用高效率、数字化的pH 传感器,测量时,pH 电极内缓冲溶液中的氢离子与被测溶液相互交换产生电势差,从而得到pH 值[3]。由于产品批次不同以及电位器存在的电阻误差,在使用前需对该传感器利用校正缓冲溶液进行校准。
在对温度采集时,模块的T1 口(温度传感器信号输出接口)通过单总线通信方式与单片机实现数据的实时传输;采集pH 值时,模块的模拟信号输出接口PO 与单片机相连,利用单片机内置的12 位逐次逼近型A/D 转换器使pH 传感器采集的模拟量转化成一定比例的电压数字量,pH+温度传感器模块电路如图2所示。
图2 pH+温度传感器模块电路图Fig.2 pH+temperature sensor module circuit diagram
2.1.2 浊度传感器模块电路
作为水体的重要参数,浊度可以反映水环境中杂质的含量,对水体质量和污水排放的控制具有重要意义[4]。本设计选用灵敏度高、耐用性强的热电阻型TSW-30 浊度传感器,它是利用其内部的红外线对管检测到光线的透过量来判断被检测水体的浑浊程度,水的浑浊程度越大,透过的光线越少,被光接收端转换成的电流就小,反之电流越大[5]。不同的浊度传感器受个体差异或者环境中光强的影响导致获取的浊度值不精确,使用前也需进行校准。
与pH 值采集类似,浊度的采集也是将传感器采集的模拟量转化为电压数字量,从而获得水的浑浊程度。浊度传感器模块电路图如图3所示。
图3 浊度传感器模块电路图Fig.3 Circuit diagram of turbidity sensor module
2.2 执行机构电路
本设计的执行机构包括OLED 显示、继电器启停和声光报警,从而实现下位机数据显示、排水和报警功能。
OLED 显示功能利用0.96 寸OLED 屏幕来实现,其为IIC 通信方式[6];排水功能通过1 路5 V 电磁继电器模块控制水泵的启停来完成,是执行机构电路的核心部分;报警功能由LED 灯与蜂鸣器模块实现,当传感器检测到水体中温度、pH 值和浊度超过设定的阈值时,提醒工作人员监视水环境中基本参数的变化,进而采取相应的措施。
3 软件系统设计
基于STM32 的智能排水系统的软件系统是设计的关键部分,主要分为STM32 单片机程序设计、OneNET 上位机软件设计以及ESP8266 通信模块程序设计3 个部分,软件系统设计流程如图4所示。
图4 软件系统设计流程Fig.4 Software system design flow chart
3.1 STM32 单片机程序设计
3.1.1 温度采集与处理
DS18B20 向MCU 传输数据时,采集到的信息经处理转化为12 位的数据,分别存储在温度传感器的2 个8 位RAM 中:LS Byte(存储bit0~bit7)和MS Byte(存储bit8~bit10)。MS Byte 剩余5 位为符号位,温度大于零时其值为0,则可得实际温度为0.625倍测得的数值;温度小于零时其值为1,此时测得的数值取反再乘以0.625 则为实际温度。
3.1.2 pH 值和浊度采集与处理
pH 传感器和浊度传感器采集的模拟信息通过单片机的ADC1 控制器转换为电压值。首先,进行ADC1初始化:单片机PA6 和PA7 口设置为模拟输入(浊度传感器、pH 传感器分别为ADC1 通道6、通道7),由于ADC 最小转换时间为1 μs,故ADC1 分频因子设置为6 分频,此时时钟为72 MHz/6=12 MHz;其次,获得ADC 值:通过配置规则序列1 的内容,启动软件转换,转换结束便可读取ADC 转换结果值。最后,为了减小误差,求取ADC1 多次转换结果的平均值。
ADC 转换值为数值,要将它转化为电压值。以pH 传感器为例,ADC 参考电压为3.3 V,12 位对应数值为4096,再由校正pH 传感器时得到的3.3 V ADC 采集系统标准公式y=-5.7541x+16.654,然后将得到的值乘以100,这样就保证了OLED 屏幕上显示的pH 值精确到两位小数。以下为main 函数中pH值计算的部分代码,浊度传感器与pH 传感器的数据采集与处理基本一致。
3.2 OneNET 平台软件设计
通过在OneNET 平台上创建设备、建立可视化View 界面实现PC 端上数据显示和远程监测功能。本设计选用仪表盘和折线图显示数据。在数据源管理中,通过建立数据源的名称、输入产品ID、填写access_key、导入数据流等步骤实现数据源的接入;在数据源与图表的互联中,先通过JAVA 脚本中过滤函数观察数据处理结果,然后再根据OneNET 平台的开发文档中提供的常用过滤器代码更改JAVA 脚本中的函数,以此来实现所选图表对于温度、pH 值和浊度数据的显示。这里特别说明,OneNET 平台还可对一段时间内的数值进行可视化分析。
3.3 ESP8266 模块与OneNET 平台通信程序设计
本系统中ESP8266 通信模块的程序设计主要用来实现STM32 单片机、PC 端OneNET 平台、移动端设备云APP 之间的通信功能。
在ESP8266 初始化配置过程中,利用AT 指令将其设置为station 模式并设置WiFi 的名称和密码,进行WiFi 热点的连接(此时手机、电脑和ESP8266模块构成局域网),然后进行TCP 连接,在代码中设置TCP 协议和端口号为云平台的接入做准备,之后配置OneNET 云平台上建立的设备ID 和ADIKEY,将设备ID 和APIKEY 封包并利用“AT+CIPSEND”指令和for 循环将打包好的数据依次发送给云平台,等待平台响应后获取返回的数据,这样便完成了WiFi 模块与OneNET 平台之间的连接。
该系统通过程序设计定时周期,每当到达一个定时周期,系统各个传感器采集的数据信息经主控程序算法处理后就会以数据流的形式上传至云平台,进行数据的实时传输。WiFi 通信模块接入OneNET 云平台的具体流程如图5所示。
图5 WiFi 模块接入OneNET 云平台流程Fig.5 Flow chart of WiFi module accessing OneNET cloud platform
4 系统调试与验证
经过多次的调试与验证,本系统中温度在0~30 ℃、pH 值在6~9、浊度大于40%时实现排水功能;反之,当温度、pH 值和浊度值不在上述范围内进行声光报警,从而提醒工作人员进行相关操作[7]。同时,系统不仅可使温度、浊度和pH 值在OLED 屏幕上显示,而且数据可在PC 端以及移动端上实时显示。
系统建立通信连接后,上传至OneNET 平台的数据流就在可视化View 界面以及移动端实时显示。从图6中可以看到温度、浊度和pH 值分别在折线图和仪表盘上显示,折线图可观测到几个定时周期内的数据显示和变化程度,仪表盘则可观测当前的数值。从图7中可以观察到手机端显示的数据与PC 端仪表盘中显示的当前数据相同,由此便实现了PC 端和移动端数据显示和远程监测功能。
图6 PC 端数据显示Fig.6 PC terminal data display
图7 手机端数据显示Fig.7 Mobile terminal data display
5 结语
本文介绍了一种基于STM32 单片机的智能排水系统设计,主要分为硬件系统设计和软件系统设计。硬件系统主要为电源模块电路、传感器采集电路、执行机构电路;软件系统包括下位机程序设计、OneNET 上位机软件设计以及ESP8266 通信程序设计。在团队成员和学校老师的共同努力下,经过多次调试和验证,实现了水体基本参数的采集、数据显示、排水、报警和远程监测等功能,不仅实现了智能化排水,而且为工作人员提供了更加人性化的服务。