基于物联网的水质监测系统设计与实现
2023-10-25毕伟伟贾雨奇孙大奇
祝 鹏,毕伟伟,贾雨奇,孙大奇
(内蒙古农业大学职业技术学院,内蒙古自治区 包头 014109)
0 引言
水质问题历来是人们关注的热点问题,水质状况对生产生活会产生很大的影响。由于水污染引起的社会问题时常见诸于报端,因此及时、准确地掌握水环境的具体情况是十分必要和迫切的。以往水质监测主要采取人工方式开展,既耗时费力,又具有随机性,不能实现对水质的全面分析[1],而随着物联网技术以及传感技术的发展,水质监测的信息化程度逐步提升,现有水质监测的方法大都是将若干个传感器采集到的信息进行融合后得到相对较为全面的分析结果[2,3],依托平台大都是ARM 平台,少部分是STM32 平台,无论是硬件成本,还是开发效率、复杂度等方面,STM32 更为简单、实用[4]。因此,以STM32F103C8T6 为控制核心设计了一套基于物联网的水质监测系统,实时采集并同步显示pH 值、温度、浊度、TDS等参数信息,解决了传统监测时空间的限制,具有实时性高,可靠性强,扩展性好等优点。
1 系统整体结构设计
系统以STM32F103C8T6 微控制器为控制核心,以pH传感器、温度传感器、浊度传感器和TDS 传感器等设备采集pH 值、温度、浊度、TDS 等参数,经过数据处理后将相应数据信息显示到OLED 屏上,同时采集的数据利用ESP8266 wifi 模块上传到阿里云物联网平台服务器,通过手机APP 对水质参数进行远程监测。系统的总体硬件结构框图如图1 所示,由主控模块(STM32F103C8T6 芯片)、信息采集模块(pH 值传感器和温度传感器模块、TDS 传感器模块、浊度传感器模块)、通信模块、人机交互模块、电源模块5 部分组成。
图1 系统整体结构图Fig.1 The system structure diagram
2 系统硬件设计
2.1 主控模块
主控模块选用STM32F103C8T6 芯片,该芯片是基于ARM Cortex-M3 内核的32 位CPU,具有功耗低、电压低(2V ~3.6V)、性能优良、实时性好等特点,主频72MHz,64KB 的FLASH 存储器,20KB 的SRAM 存储器,具有两个12 位ADC,7 通道DMA 控制器,3 个通用定时器和1 个高级控制定时器,37 个快速I/O 端口,通讯接口丰富,可连接2 个SPI、2 个I2C、3 个USART、1 个USB 和1 个CAN接口。
2.2 信息采集模块
信息采集模块主要完成pH 值、温度、浊度、TDS 等参数的采集工作,除温度传感器采集的数据是数字量外,pH 值传感器模块、TDS 传感器模块、浊度传感器模块采集的数据均为模拟量[5],需要由主控芯片内部的ADC 转换成数字量,随后发送到芯片内部的数据缓冲区,供后续OLED 显示、通信模块等使用。
2.2.1 pH值传感器和温度传感器模块
pH 值传感器和温度传感器模块由DS18B20 防水型温度探头、E-201-C 型pH 复合电极和处理电路组成。其中,DS18B20 防水型温度探头采用“一线总线”接口(1-Wire),测温范围为-55℃~+125℃,检测精度为±0.5℃,采用XH2.54 接口与处理电路连接,方便进行软件温度补偿设计;E-201-C 型pH 复合电极采用BNC 接口与处理电路连接,测量范围0pH ~14pH,精度±0.01pH(25℃),响应时间为≤1min;处理电路由TLC4502 自校准运算放大器、LM285D 电压基准芯片等组成,实现对pH 值信号的电压跟随、信号放大以及整个0 ~14 采集区间内的pH 值的完整采集。整个模块采用5V 供电,pH 值输出(模拟量输出,输出电压范围为0V ~2.5V)连接主控芯片的PA0 引脚,对应主控模块ADC1 采集通道0,温度传感器输出连接主控芯片的PB12 引脚。
2.2.2 TDS传感器模块
TDS 传感器模块由TDS 探头和处理电路组成,其中TDS 探头采用XH2.54 接口与处理电路连接,测量范围为0ppm ~1000ppm,测量精度为±5%,激励源为交流信号,有效防止探头老化,同时采取防水设计,可长期浸入水中测量。处理电路由LMV342ID 运算放大器、CD4060BM96计数器和ME6206 降压型电压稳压器组成,实现对TDS 信号的采集。整个模块采用5V 供电,TDS 信号输出(模拟信号输出,输出电压范围为0V ~2.3V)连接主控芯片的PA5 引脚,对应主控模块ADC1 采集通道5。
2.2.3 浊度传感器模块
浊度传感器模块由浊度传感器探头TSW-30 和处理电路组成,其中TSW-30 主要由发光二极管和光电晶体管等组成。基于光学原理,通过发光二极管光源发出的光经过污水反射,部分光传播到光电晶体管,根据接收到的光线量计算出水的浊度。其测量的比率范围(NTU)为0 ~1000,精度为±30,需要的电压为5V,输出电压为0 ~5V。处理电路主要由LMV342ID 运算放大器、电平转换器等器件组成,浊度传感器的信号输出(模拟信号输出,输出电压范围为0V ~3.3V)连接主控芯片的PA1 引脚,对应主控模块ADC1 采集通道1。
2.3 通信模块
通信模块由ESP8266 模块、阿里云物联网平台和手机APP 组成。其中,ESP8266 模块是物联网常用模块,兼容3.3V、5V 电压输入,采用串口(LVTTL)与单片机(或其它串口设备)通信,内置TCP/IP 协议堆栈,可实现串口和wifi 间的转换,其使用传输指定命令实现控制,手机端可以通过wifi 连接ESP8266 所提供的wifi 进行相应命令的收发,把提前设置好的命令参数通过连接ESP8266 的wifi 传入模块,再通过ESP8266 与单片机间的串口连接进行通讯,把数据传入单片机并执行相应指令。
2.4 电源模块和人机交互模块
电源模块提供整个电路工作的电压,主要由3.3V 电压、5V 电压组成,其中3.3V 电压由5V 电压利用电压比较器生成,主要给主控模块和ESP8266 供电,5V 电压主要给信息采集模块的各传感器模块、OLED 显示模块等供电。人机交互模块由OLED 组成,采用0.96 英寸OLED 显示屏为数据采集终端的显示区,采用I2C 协议与主控模块进行通信,SCL 连接主控芯片的PB6 引脚,SDA 连接主控芯片的PB7引脚。
3 软件设计
基于物联网的水质监测系统软件设计,主要由主控模块程序设计、云平台及APP 的设计组成。主控模块程序设计主要完成各传感器模组数据采集,OLED 显示屏通信,ESP8266 模块底层通信和控制,以及将采集的数据上传到云端。云平台负责从ESP8266 接收采集,提供数据访问服务,APP 负责与云平台通信,呈现水质监控数据信息。
3.1 主程序设计
以主程序为核心框架,总体程序流程为系统上电运行,执行系统及设备初始化,接着执行传感器数据采集程序采集温度、浊度、TDS、pH 等参数信息,由OLED 进行显示,并且通过wifi 通信模块上传到云端,由云平台及APP 显示,具体如图2 所示。
图2 程序主流程图Fig.2 The system main program flow chart
3.2 云平台及APP设计
云平台采用阿里云物联网平台,兼容多种通信协议,例如MQTT、CoAP、HTTP 等,并提供了数据存储、设备管理、规则引擎、消息通信等全方位物联网服务,方便快速建立和部署物联网应用。首先在平台上创建设备,在设备管理中查看设备的三元组(ProductKey、DeviceName、DeviceSecret),然后在ESP8266 上安装MQTT 客户端库,最后编写程序,连接阿里云MQTT 服务器,使用三元组进行认证,并发布/订阅需要的主题[6,7]。
APP 采用云智能APP,先开通阿里云云智能APP 服务,其次在云智能APP 控制台中创建应用,设置应用名称、图标、描述等信息,配置相关服务和权限,随后下载并集成SDK,最后在本地环境中测试应用功能和性能。设计使用的APP 界面如图3 所示。
图3 云智能APP显示界面Fig.3 Cloud intelligence APP display interface
4 系统测试结果与分析
为便于快速集成和满足后续升级以及二次开发的需求,信息采集模块全部采用传感器模块实现,将各传感器控制板和元器件焊接到洞洞板上,具体实物图如图4 所示。为保证监测系统采集数据的准确性,对系统进行了测试,采取自来水加不同混合物的方式查看监测系统给出的温度、pH 值、TDS、浊度等测量值。当水质改变时,OLED 端的测量值和服务器端显示的测量值能够同步发生响应变化,灵敏度符合设计要求。
图4 实物图Fig.4 Acticality picture
5 结束语
基于物联网的水质监测系统以STM32F103C8T6 微控制器为控制核心,以pH 传感器、温度传感器、浊度传感器和TDS 传感器等设备采集pH 值、温度、浊度、TDS 等参数,通过OLED 屏实现水质参数的现场显示,通过wifi 通信模块、阿里云物联网平台和APP 实现水质参数的远程监测和人机的高效交互,完成了产品功能和设计需求,但针对远距离跨区域数据采集、多传感器深度数据融合等方面还存在不足,需进一步提高和改进。