基于STM32的智能水质检测鱼缸监测系统设计与实现
本文设计了一种基于STM32F103C8T6单片机的智能水质监测系统,可实时检测鱼缸水体温度、TDS值、PH值和浊度等关键参数。系统采用模块化设计,集成DS18B20、TDS、PH和浊度传感器,通过OLED显示屏实现本地数据可视化,并支持板载按键设置报警阈值。通过ESP8266 WiFi模块接入机智云物联网平台,实现手机APP远程监控。测试结果表明,该系统数据采集精度高(温度误差±0.5℃、PH误
基于STM32的智能水质检测鱼缸监测系统设计与实现
摘要
针对水产养殖、水族观赏、水培农业等领域对水质实时监测、智能化管理的需求,本文设计并实现了一套基于STM32单片机的多参数智能水质检测鱼缸监测系统。系统以STM32F103C8T6为主控核心,集成DS18B20温度传感器、TDS电导率传感器、PH酸碱度传感器及浊度传感器,可精准采集水体四项关键指标。通过0.96寸OLED显示屏实现本地数据可视化,支持板载按键设置参数阈值,异常时触发蜂鸣器声光报警;搭载ESP8266 WiFi模块接入机智云物联网平台,实现手机APP远程数据监控与管理。本文详细阐述系统的总体设计、硬件选型与电路设计、软件流程设计、系统测试与验证等内容。实际测试结果表明,该系统数据采集精度高、响应速度快、通信稳定可靠,操作简便且支持功能定制,能为不同场景下的水质管理提供可靠技术支撑,具有较高的实用价值与推广前景。目前,本系统已完成硬件调试,提供价格实惠的成品板子及完善的使用指导,欢迎有需求的用户咨询了解。
关键词
STM32F103C8T6;水质监测;多参数采集;机智云平台;ESP8266;OLED显示


资料内容
-》1 开发软件下载链接说明
-》3 程序 (文件夹及压缩包)
-》4 电路
-》7 图片
-》8 器件资料
-》9 ESP8266FLASH烧写工具
-》10 ESP8266固件
-》11 机智云APK
-》WiFi版水质检测元件清单.xls
1 引言
1.1 研究背景与意义
随着水产养殖产业的规模化发展、水族观赏文化的普及以及水培农业技术的推广,水质环境的稳定性与安全性对养殖物存活、生长质量及观赏效果起着决定性作用。水体温度、酸碱度(PH值)、电导率(TDS值)、浊度等参数是反映水质状况的核心指标,其数值偏离适宜范围会直接导致养殖物应激反应、病害滋生,甚至死亡,给从业者带来经济损失。传统水质监测方式多依赖人工采样、实验室检测,存在操作繁琐、实时性差、无法及时预警、人力成本高等弊端,难以满足现代化水质管理的智能化、远程化需求。
基于此,研发一套能够实时、精准采集多参数水质数据,兼具本地监控与远程管理功能的智能监测系统具有重要现实意义。该系统可实现水质参数的24小时不间断监测,及时反馈异常信息,帮助用户快速采取调控措施,降低养殖风险;同时简化操作流程,减少人力投入,推动水产养殖、水族观赏等领域向智能化、高效化转型。本设计基于STM32单片机搭建核心控制架构,融合传感器技术、物联网技术与显示交互技术,兼顾实用性、稳定性与经济性,适配不同场景的水质监测需求,且支持功能定制,可根据用户实际需求优化系统性能。
1.2 国内外研究现状
在国外,水质监测技术起步较早,已形成较为成熟的智能化监测体系。欧美等发达国家依托先进的传感器技术与物联网技术,研发出多款高精度、多参数水质监测设备,广泛应用于水产养殖、环境监测等领域。此类设备多支持无线通信、云平台数据管理,具备数据分析、趋势预测等功能,但存在价格昂贵、操作复杂、适配性差等问题,难以在中小型养殖场景及家庭水族领域普及。
在国内,随着物联网技术的快速发展与政策扶持,智能水质监测技术得到迅猛推广。国内企业与科研机构纷纷聚焦低成本、高适配性的监测系统研发,推出了一系列基于单片机、嵌入式系统的水质监测设备。这些设备多集成基础水质参数采集与本地报警功能,部分支持手机APP远程监控,价格相对亲民,符合国内中小型场景的需求。但目前多数产品仍存在参数采集精度不足、通信稳定性欠佳、功能单一等问题,且针对不同场景的定制化服务较为匮乏,难以满足用户多样化需求。
本设计针对现有产品的不足,优化硬件选型与系统架构,选用高精度传感器与稳定的通信模块,提升数据采集精度与通信可靠性;同时兼顾本地交互与远程管理,丰富系统功能,支持参数阈值自定义与功能定制,弥补市场产品的适配性缺陷,为用户提供高性价比、高实用性的水质监测解决方案。
1.3 研究内容与组织结构
本文围绕基于STM32的智能水质检测鱼缸监测系统展开设计与实现,核心研究内容包括:系统总体架构设计、硬件电路选型与搭建、软件流程设计与优化、系统集成与功能测试验证。具体研究内容如下:
- 梳理系统核心需求,设计“感知层-控制层-通信层-交互层”的四层总体架构,明确各模块功能与数据流向;
- 完成硬件选型与电路设计,包括STM32主控模块、多传感器采集模块、OLED显示模块、ESP8266通信模块、按键输入模块及报警模块的搭建与调试;
- 基于模块化思想设计软件流程,实现传感器数据采集与处理、本地显示与交互、WiFi联网与云平台对接、异常报警等功能;
- 搭建测试环境,对系统数据采集精度、通信稳定性、报警响应速度、交互功能完整性等进行测试验证,优化系统性能。
本文的组织结构如下:第1章为引言,阐述研究背景、意义、国内外研究现状及研究内容;第2章为系统总体设计,明确系统需求、总体架构与核心功能;第3章为硬件系统设计,详细介绍各硬件模块的选型、电路设计与连接;第4章为软件系统设计,阐述软件总体流程与各功能模块的程序逻辑;第5章为系统测试与结果分析,通过实际测试验证系统性能;第6章为结论与展望,总结研究成果,提出系统优化方向。
2 系统总体设计
2.1 系统需求分析
2.1.1 功能需求
结合水产养殖、家庭水族等场景的实际需求,本系统需具备以下核心功能:
- 多参数采集功能:精准采集水体温度、TDS电导率、PH酸碱度、浊度四项核心指标,确保数据准确性与实时性;
- 本地交互功能:通过OLED显示屏实时展示各项监测数据,支持板载按键设置参数阈值,操作简便;
- 异常报警功能:当某项水质参数超出设定阈值时,系统触发蜂鸣器声光报警,及时反馈异常信息;
- 远程监控功能:通过WiFi模块接入互联网与机智云平台,支持手机APP远程查看实时数据,实现无人值守管理;
- 定制化功能:支持根据用户场景需求,优化传感器类型、参数阈值范围、报警方式等功能模块。
2.1.2 性能需求
为保证系统稳定运行与实用价值,需满足以下性能指标:
- 数据采集精度:温度误差≤±0.5℃,PH值误差≤±0.1,TDS值误差≤±5%,浊度误差≤±5%;
- 响应速度:传感器数据采集周期≤1秒,报警响应时间≤0.5秒,远程数据同步延迟≤3秒;
- 通信稳定性:WiFi模块联网成功率≥99%,连续运行24小时无断连、数据丢失现象;
- 工作环境:适应温度范围0-50℃,湿度范围20%-90%(无冷凝),可在室内外常规场景稳定工作;
- 功耗:系统工作功耗≤5W,支持外接电源供电,适配家庭、养殖场等场景的供电需求。
2.1.3 经济性需求
系统硬件选型兼顾性能与成本,选用性价比高的元器件与模块,控制整体硬件成本,推出价格实惠的成品板子,同时提供完善的使用指导,降低用户使用门槛,满足中小型场景与家庭用户的消费需求。
2.2 系统总体架构设计
本系统采用分层架构设计,自上而下分为感知层、控制层、通信层与交互层,各层相互协作,实现水质参数的采集、处理、传输与展示全流程管控。系统总体架构如图1所示(此处为论文表述,实际排版时可插入架构图)。
2.2.1 感知层
感知层是系统数据采集的核心,负责将水体物理、化学指标转化为电信号,为后续处理提供原始数据。本层集成DS18B20温度传感器、TDS电导率传感器、PH传感器与浊度传感器,各传感器探头直接浸入待测水体,实时采集对应参数,具备响应速度快、精度高、稳定性强等特点。
2.2.2 控制层
控制层以STM32F103C8T6单片机为核心,承担数据处理、模块控制、逻辑判断等核心任务。其主要功能包括:接收感知层传输的传感器信号,进行滤波、校准等数据处理;驱动OLED显示屏展示数据;响应按键输入,处理参数阈值设置请求;判断水质参数是否超出阈值,触发报警模块;控制ESP8266模块联网与数据传输,协调各层模块有序工作。
2.2.3 通信层
通信层负责实现系统与云平台、用户终端的无线通信,搭建本地与远程的数据传输通道。本层采用ESP8266 WiFi模块作为通信核心,支持IEEE 802.11 b/g/n协议,可稳定接入家庭WiFi网络,实现与机智云物联网平台的双向通信,将本地采集的水质数据上传至云平台,同时接收云平台转发的用户指令(如参数设置同步)。
2.2.4 交互层
交互层负责实现系统与用户的信息交互,分为本地交互与远程交互两部分。本地交互通过0.96寸OLED显示屏与板载按键实现,显示屏实时展示各项水质参数,按键支持用户本地设置阈值、切换显示界面;远程交互通过机智云APP实现,用户可在手机端查看实时数据、参数变化趋势,远程掌握水质状况。此外,蜂鸣器与指示灯组成的报警模块也属于交互层,用于异常状态的声光提示。
2.3 系统核心功能流程设计
系统上电后,各模块完成初始化,进入正常工作状态,核心功能流程如下:
- 初始化阶段:STM32主控芯片启动,完成OLED显示屏、ESP8266模块、传感器、按键、蜂鸣器等模块的初始化配置,系统自检无异常后进入数据采集状态;
- 数据采集与处理:各传感器实时采集水体温度、TDS值、PH值、浊度数据,传输至STM32主控芯片,主控芯片对原始数据进行滤波、校准,去除干扰信号,得到精准的监测数据;
- 本地数据展示:主控芯片将处理后的监测数据发送至OLED显示屏,按预设格式清晰展示各项参数,方便用户本地查看;
- 阈值判断与报警:主控芯片将监测数据与用户预设的阈值进行对比,若某项数据超出阈值范围,立即驱动蜂鸣器鸣叫、指示灯闪烁,触发声光报警,直至参数恢复正常或用户手动复位;
- 远程数据传输:ESP8266模块接入WiFi网络,登录机智云平台,主控芯片将监测数据通过WiFi上传至云平台,实现数据同步;
- 用户交互响应:若用户通过板载按键设置阈值,主控芯片接收按键指令,进入设置界面,保存用户设定的阈值并生效;若用户通过手机APP查看数据,云平台将同步的数据推送至APP端,实现远程交互。
3 硬件系统设计
硬件系统是本设计的基础,其选型与电路设计直接影响系统的性能、稳定性与成本。本系统硬件由主控制器模块、传感器采集模块、显示模块、通信模块、输入模块、报警模块及电源模块组成,各模块相互配合,实现系统核心功能。目前,本系统硬件板子已完成全部调试,元器件选型兼顾性能与性价比,成品价格实惠,同时提供详细的使用指导与技术支持,支持根据用户需求定制硬件模块。
3.1 主控制器模块设计
3.1.1 主控芯片选型
主控制器作为系统的核心,需具备运算速度快、接口丰富、功耗低、性价比高等特点。本设计选用STM32F103C8T6单片机,该芯片属于意法半导体STM32F1系列,基于ARM Cortex-M3内核,主频最高72MHz,具备强大的运算能力,可高效处理多传感器数据与模块控制逻辑。
STM32F103C8T6拥有64KB Flash存储空间与20KB RAM,可满足系统程序存储与数据处理需求;接口资源丰富,包括多个通用输入/输出端口(GPIO)、串口(USART)、模数转换器(ADC)、定时器等,可灵活对接传感器、WiFi模块、显示屏等外设;工作电压范围为2.0-3.6V,功耗较低,适配多种供电场景;此外,该芯片市场保有量高,技术资料完善,价格亲民,非常适合中小型智能设备的开发。
3.1.2 主控模块电路设计
STM32F103C8T6主控模块电路主要包括电源电路、复位电路、时钟电路,为芯片稳定工作提供保障。
电源电路:采用5V外接电源供电,通过AMS1117-3.3V稳压芯片将5V电压转换为3.3V,为STM32芯片及其他外设供电。AMS1117-3.3V稳压芯片具备输出电流大、稳压精度高、纹波小等特点,可有效避免电压波动对系统的影响。电路中加入滤波电容,进一步减小电源噪声,确保供电稳定。
复位电路:采用上电复位与手动复位相结合的设计,上电时通过电容充电实现自动复位,确保系统上电后正常初始化;同时设置手动复位按键,用户可在系统异常时手动重启,提升系统可靠性。复位信号接入STM32的NRST引脚,低电平有效。
时钟电路:STM32F103C8T6需外部晶振提供时钟信号,分为高速外部晶振(HSE)与低速外部晶振(LSE)。本设计选用8MHz HSE晶振,通过倍频电路将主频提升至72MHz,满足系统高速运算需求;选用32.768kHz LSE晶振,为实时时钟(RTC)提供时钟信号,便于记录数据采集时间。时钟电路中加入负载电容,保证晶振稳定振荡。
3.2 传感器采集模块设计
传感器采集模块负责水质参数的实时采集,是系统数据来源的核心。本模块集成四款高精度传感器,分别对应温度、TDS电导率、PH值、浊度四项参数的采集,各传感器电路独立设计,避免相互干扰。
3.2.1 温度传感器模块(DS18B20)
温度是水质监测的核心参数之一,直接影响养殖物的代谢与存活。本设计选用DS18B20数字温度传感器,该传感器采用单总线通信协议,只需一根数据线即可实现与主控芯片的双向通信,接线简单,可有效减少电路复杂度。
DS18B20的测量范围为-55℃~125℃,在-10℃~85℃范围内测量精度可达±0.5℃,完全满足水产养殖、家庭水族等场景的温度监测需求;支持多点测温,可通过单总线连接多个传感器,便于扩展;采用寄生电源模式或外部电源供电,本设计选用外部3.3V电源供电,提升测量稳定性。DS18B20的数据线通过上拉电阻接3.3V,确保总线空闲时为高电平,接入STM32的GPIO引脚,由主控芯片通过单总线协议读取温度数据。
3.2.2 TDS电导率传感器模块
TDS(总溶解固体)值反映水体中溶解的固体物质含量,直接关联水体纯度与矿物质含量,是判断水质是否适宜养殖的重要指标。本设计选用通用型TDS电导率传感器,采用电极式测量原理,将水体电导率转化为模拟电压信号,通过STM32的ADC接口采集并转换为数字信号。
该传感器测量范围为0~1000ppm,测量精度≤±5%,响应时间≤1秒,适配淡水养殖、水族等场景;工作电压为5V,输出0~2.5V模拟信号,可直接接入STM32的ADC输入引脚。电路中加入RC滤波电路,过滤模拟信号中的高频干扰,提升数据采集精度;同时设置校准电位器,可根据实际需求校准传感器输出,确保测量准确性。
3.2.3 PH传感器模块
PH值反映水体酸碱度,不同养殖物对PH值的适宜范围不同,超出范围会导致养殖物生理机能紊乱。本设计选用模拟型PH传感器,测量范围为0~14PH,测量精度≤±0.1PH,具备高精度、高稳定性的特点,可满足精准监测需求。
PH传感器工作电压为5V,输出0~5V模拟信号,由于STM32的ADC接口输入电压范围为0~3.3V,需通过电压分压电路将传感器输出信号降至3.3V以下,再接入ADC引脚,避免损坏芯片。同时,电路中加入运算放大器构成缓冲电路,提升信号驱动能力,减少传输过程中的信号衰减;设置温度补偿电路,降低温度变化对PH测量精度的影响,确保不同温度环境下的数据准确性。
3.2.4 浊度传感器模块
浊度反映水体中悬浮颗粒物的含量,浊度过高会影响水体透光性与溶氧量,滋生有害微生物。本设计选用红外浊度传感器,基于光散射原理,通过检测红外光穿过水体后的散射强度判断浊度,测量范围为0~200NTU,测量精度≤±5%,响应速度快,抗干扰能力强。
该传感器工作电压为5V,输出0~5V模拟信号,同样需通过分压电路将输出信号降至3.3V以下,接入STM32的ADC引脚。电路中加入遮光设计,避免外界光线干扰测量结果;通过滤波电路优化输出信号,提升数据稳定性。传感器探头采用防水设计,可直接浸入水体,适配长期监测场景。
3.3 显示模块设计
显示模块负责本地数据可视化,需具备显示清晰、功耗低、体积小、接口简单等特点。本设计选用0.96寸OLED显示屏,分辨率为128×64,采用I2C通信协议,接线简单,仅需两根信号线(SDA、SCL)即可与STM32主控芯片通信,有效节省IO口资源。
OLED显示屏具备自发光、对比度高、响应速度快、视角广、功耗低等优势,无需背光,在强光与弱光环境下均可清晰显示内容,适配不同使用场景;工作电压为3.3V,可直接由主控模块供电,无需额外电源电路。显示屏分为四个显示区域,分别展示温度、TDS值、PH值、浊度四项参数,同时显示参数单位与系统状态(如联网状态、报警状态),界面简洁直观,便于用户快速读取信息。STM32主控芯片通过I2C协议向显示屏发送数据,控制显示内容的更新与切换。
3.4 通信模块设计
通信模块负责系统与云平台、手机APP的远程数据传输,本设计选用ESP8266 WiFi模块(型号ESP-01),该模块基于ESP8266芯片,支持IEEE 802.11 b/g/n协议,工作在2.4GHz频段,具备联网速度快、通信稳定、功耗低、价格亲民等特点,广泛应用于物联网智能设备。
ESP8266模块工作电压为3.3V,通过串口(USART)与STM32主控芯片通信,实现数据收发。模块支持AT指令集,主控芯片通过发送AT指令控制模块联网、连接机智云平台、上传数据等操作。电路中加入电平转换电路,由于ESP8266的串口引脚为3.3V电平,而STM32的串口引脚可兼容3.3V电平,无需额外电平转换芯片,直接对接即可;同时设置复位引脚与模式选择引脚,便于模块初始化与固件升级。模块通过WiFi接入家庭路由器,与机智云平台建立稳定连接,实现本地数据与远程终端的实时同步。
3.5 输入与报警模块设计
3.5.1 输入模块(板载按键)
输入模块用于用户本地设置参数阈值、切换显示界面,本设计选用3个独立按键,分别对应“确认”“加”“减”功能,接线简单,操作便捷。按键一端接入STM32的GPIO引脚,另一端接地,引脚通过上拉电阻接3.3V,实现电平检测。当按键按下时,引脚电平变为低电平,主控芯片通过检测电平变化识别按键指令,进入参数设置界面,用户可通过“加”“减”按键调整阈值,通过“确认”按键保存设置并退出界面。电路中加入去抖电容,避免按键按下时的电平抖动导致指令误识别,提升操作可靠性。
3.5.2 报警模块(蜂鸣器+指示灯)
报警模块用于水质参数异常时的声光提示,本设计选用有源蜂鸣器与LED指示灯组成报警电路。有源蜂鸣器工作电压为3.3V,通过NPN三极管驱动,三极管基极接入STM32的GPIO引脚,由主控芯片控制导通与截止。当参数异常时,主控芯片输出高电平,三极管导通,蜂鸣器鸣叫;参数恢复正常后,输出低电平,蜂鸣器停止鸣叫。
LED指示灯选用红色高亮LED,一端通过限流电阻接入3.3V,另一端接入STM32的GPIO引脚。参数异常时,主控芯片输出低电平,指示灯点亮并闪烁;正常状态下,指示灯熄灭。声光报警相结合,可确保用户及时发现水质异常,采取调控措施。
3.6 电源模块设计
电源模块为整个系统提供稳定供电,本设计采用外接5V/2A直流电源供电,适配家庭插座与养殖场供电场景。电源模块核心为AMS1117-3.3V稳压芯片,将5V输入电压转换为3.3V稳定电压,为STM32主控芯片、OLED显示屏、ESP8266模块、传感器等外设供电;同时预留5V输出接口,为需要5V供电的传感器(如TDS传感器、PH传感器、浊度传感器)提供电源。
电路中加入保险丝,当电路电流过大时,保险丝熔断,保护元器件免受损坏;加入多个滤波电容(电解电容与瓷片电容组合),滤除电源中的高频噪声与纹波,确保供电稳定;设置电源指示灯,当电源正常接入时,指示灯点亮,便于用户判断电源连接状态。
3.7 硬件整体连接与调试
根据各模块电路设计,完成硬件焊接与连接,整体连接关系如下:STM32F103C8T6的GPIO引脚分别连接DS18B20数据线、按键、蜂鸣器驱动三极管、LED指示灯;ADC引脚连接TDS传感器、PH传感器、浊度传感器的输出信号(经分压与滤波后);I2C引脚连接OLED显示屏的SDA、SCL引脚;串口引脚连接ESP8266模块的TX、RX引脚;电源模块输出的3.3V与5V分别为各模块供电。
硬件连接完成后,进行调试工作:首先检查电路焊接是否存在虚焊、短路问题,确保供电正常;然后通过万用表测量各模块供电电压、传感器输出信号,验证电路正确性;最后接入主控程序,测试各模块与主控芯片的通信是否正常,传感器数据采集是否稳定,显示屏是否正常显示,报警功能是否触发,WiFi模块是否正常联网。目前,本系统硬件板子已完成全部调试,无硬件故障,各项功能均能正常实现,可直接投入使用。
4 软件系统设计
软件系统是系统功能实现的核心,基于Keil MDK开发环境,采用C语言编程,遵循模块化设计思想,将系统功能划分为多个独立模块,包括主程序模块、传感器数据采集与处理模块、OLED显示模块、ESP8266通信模块、按键交互模块、报警模块、机智云平台对接模块等。各模块独立开发、调试,再进行集成,提升程序的可读性、可维护性与扩展性。本设计全程不涉及代码编写,仅阐述软件流程与逻辑设计。
4.1 软件开发环境与工具
本系统软件开发环境选用Keil MDK-ARM V5,该环境是针对ARM内核单片机的集成开发环境,支持STM32系列芯片的程序编写、编译、链接、调试,具备强大的代码编辑功能、编译优化能力与调试工具,可有效提升开发效率。
调试工具采用ST-Link调试器,通过SWD接口与STM32主控芯片连接,实现程序下载、在线调试、断点设置、变量查看等功能,便于排查程序逻辑错误,优化程序性能。此外,需使用机智云平台提供的开发工具,完成设备注册、产品创建、数据点定义,生成适配ESP8266模块的联网与数据传输协议,实现系统与云平台的对接。
4.2 软件总体流程设计
系统软件总体流程遵循“初始化-采集-处理-展示-判断-传输”的逻辑,上电后完成各模块初始化,随后进入循环工作状态,具体流程如下:
- 系统上电,STM32主控芯片复位,初始化系统时钟、GPIO引脚、ADC、串口、I2C等外设;
- 初始化各功能模块:OLED显示屏初始化,清屏并显示系统启动界面;ESP8266模块初始化,发送AT指令配置模块参数,尝试连接预设WiFi网络;传感器初始化,完成自检与校准;按键与报警模块初始化,设置引脚初始状态;
- 系统自检:检查各模块初始化是否成功,若ESP8266联网失败、传感器故障,OLED显示屏显示故障信息,同时LED指示灯闪烁提示;若自检通过,显示“启动成功”,进入正常工作界面;
- 数据采集:主控芯片依次控制各传感器采集数据,通过单总线读取DS18B20温度数据,通过ADC采集TDS、PH、浊度模拟信号,转换为数字信号;
- 数据处理:对采集的原始数据进行滤波处理(采用滑动平均滤波算法),去除随机干扰信号;对PH、TDS、浊度数据进行校准,将数字信号转换为实际物理量(如PH值、ppm值、NTU值);
- 本地显示:将处理后的参数数据发送至OLED显示屏,按预设界面格式展示温度、TDS值、PH值、浊度、联网状态等信息,每1秒更新一次;
- 阈值判断与报警:读取用户预设的各项参数阈值,将当前监测数据与阈值对比,若超出范围,触发蜂鸣器与LED指示灯声光报警,同时在OLED显示屏标注异常参数;若数据正常,报警模块处于待机状态;
- 远程数据传输:ESP8266模块若已联网,主控芯片将处理后的参数数据通过串口发送至模块,由模块上传至机智云平台,实现数据同步;
- 按键交互:检测按键状态,若有按键按下,进入对应功能界面(如参数设置界面),响应用户操作并保存设置;若无按键操作,返回正常工作界面;
- 循环执行步骤4-119,实现水质参数的不间断监测与交互。
4.3 各功能模块软件逻辑设计
4.3.1 传感器数据采集与处理模块
该模块负责各传感器的数据采集、信号转换与数据校准,确保监测数据的准确性与稳定性。
温度数据采集:DS18B20采用单总线协议,主控芯片通过GPIO引脚发送复位脉冲、存在脉冲,然后发送读数据指令,读取传感器返回的温度数据。温度数据为16位数字,需进行格式转换,计算得到实际温度值(单位:℃),同时采用滑动平均滤波算法,对连续5次采集的数据取平均值,减少随机干扰。
TDS、PH、浊度数据采集:三者均为模拟信号,通过STM32的ADC模块采集。ADC模块初始化后,对传感器输出信号进行多次采样(每次采集10次数据),去除最大值与最小值后取平均值,得到原始数字信号;再根据传感器的校准曲线,将数字信号转换为实际物理量,如TDS值(ppm)、PH值、浊度(NTU)。例如,PH传感器输出0~2.5V模拟信号对应0~14PH,通过线性插值计算得到实际PH值。
4.3.2 OLED显示模块
OLED显示模块采用I2C通信协议,主控芯片通过发送控制指令与数据,控制显示屏的显示内容。模块初始化时,发送清屏指令、显示模式设置指令,配置显示屏的亮度、对比度等参数。正常工作时,将监测数据按预设分区显示:屏幕上半部分显示温度与TDS值,下半部分显示PH值与浊度,每个参数标注对应单位;屏幕右上角显示联网状态(“联网成功”/“联网失败”),右下角显示报警状态(无异常时不显示,异常时显示“异常报警”)。数据更新周期为1秒,每次更新前先清屏,再刷新显示内容,避免残影。
4.3.3 ESP8266通信模块
ESP8266模块通过串口与主控芯片通信,采用AT指令控制。模块初始化时,主控芯片发送AT指令检测模块是否正常响应,若响应正常,依次发送指令设置模块工作模式(Station模式)、连接预设WiFi(输入WiFi名称与密码)、设置TCP连接参数,连接机智云平台的服务器地址与端口。联网成功后,模块向主控芯片返回确认信息,OLED显示屏更新联网状态;若联网失败,等待5秒后重新尝试连接。
数据传输阶段,主控芯片将处理后的水质参数按机智云平台规定的格式打包,通过串口发送至ESP8266模块,模块将数据上传至云平台;同时,模块接收云平台下发的指令(如用户通过APP修改阈值),转发至主控芯片,实现双向通信。
4.3.4 按键交互模块
按键交互模块负责识别用户按键指令,实现参数阈值设置、界面切换等功能。系统设置三个按键:K1(确认)、K2(加)、K3(减)。正常工作状态下,短按K1进入参数设置界面,依次显示温度、TDS值、PH值、浊度的阈值设置选项;选中某一参数后,通过K2(加)、K3(减)调整阈值大小,阈值范围可根据场景预设(如温度阈值5~35℃,PH值阈值6.5~8.5);调整完成后,短按K1确认保存,返回正常工作界面;长按K1 3秒可退出设置界面,不保存修改。
按键检测采用中断方式,避免占用主程序资源,同时加入软件去抖逻辑,确保按键指令识别准确。
4.3.5 报警模块
报警模块的软件逻辑与参数阈值判断相结合,主控芯片将每次采集处理后的参数与用户预设阈值对比,若某项参数低于下限阈值或高于上限阈值,立即设置报警标志位,驱动蜂鸣器鸣叫、LED指示灯闪烁;同时在OLED显示屏标注异常参数,上传异常状态至机智云平台,APP端同步显示报警信息。当参数恢复至正常范围后,清除报警标志位,报警停止,界面与APP端状态更新。此外,用户可通过短按K1手动关闭报警,但异常状态未解除时,报警会持续触发。
4.3.6 机智云平台对接模块
机智云平台为系统提供远程数据传输与APP交互支持,需先在平台创建产品与设备,定义数据点(温度、TDS值、PH值、浊度、报警状态),生成设备ID、产品密钥等信息,写入系统程序。系统上电后,ESP8266模块携带设备信息登录机智云平台,完成设备激活与连接。
数据上传时,主控芯片将参数数据按平台规定的JSON格式打包,通过ESP8266模块上传,平台接收数据后存储并推送至手机APP;数据下发时,用户通过APP修改参数阈值或发送指令,平台将指令下发至ESP8266模块,主控芯片解析指令后执行对应操作,实现远程交互。APP端以数值与折线图结合的方式展示数据,支持查看历史数据趋势,便于用户分析水质变化规律。
4.4 软件集成与优化
各功能模块独立调试完成后,进行软件集成,将各模块代码整合到主程序中,协调模块间的时序与数据交互,避免模块冲突。集成过程中,重点优化以下内容:一是优化主程序循环时序,确保数据采集、显示、传输、报警等功能并行执行,无卡顿;二是优化数据滤波与校准算法,提升数据采集精度;三是优化ESP8266联网逻辑,增加断线重连功能,提升通信稳定性;四是优化按键交互逻辑,提升用户操作体验。
软件集成完成后,进行整体调试,模拟不同水质场景(正常、异常),测试各功能是否正常实现,数据是否准确,交互是否流畅,报警是否及时,远程通信是否稳定,确保系统软件满足设计需求。
5 系统测试与结果分析
为验证基于STM32的智能水质检测鱼缸监测系统的功能完整性、性能稳定性与数据准确性,搭建模拟测试环境,从功能测试、性能测试、稳定性测试三个维度开展测试,记录测试数据并分析结果。测试所使用的硬件板子为已调试完成的成品,操作流程严格遵循使用指南,确保测试结果真实可靠。
5.1 测试环境与准备
5.1.1 测试环境
模拟家庭水族场景,搭建测试平台:准备一个容量为50L的鱼缸,注入自来水,通过加热棒调节水温,添加适量食盐调节TDS值,添加酸碱调节剂调节PH值,添加少量泥沙调节浊度;配备5V/2A直流电源、智能手机(安装机智云APP)、家庭WiFi网络;准备标准水质检测仪器(精度高于本系统传感器),用于校准测试数据。
5.1.2 测试准备
测试前完成以下准备工作:将系统硬件板子固定,各传感器探头浸入鱼缸水体中,连接电源与WiFi;通过板载按键设置各项参数阈值(温度:20~28℃,TDS值:50~500ppm,PH值:6.5~8.5,浊度:0~50NTU);打开机智云APP,扫描设备二维码完成配网,绑定设备;启动标准水质检测仪器,校准后用于对比测试。
5.2 功能测试
功能测试旨在验证系统各核心功能是否正常实现,包括数据采集与显示、参数设置、报警功能、远程监控功能,测试内容与结果如下:
5.2.1 数据采集与本地显示功能测试
测试方法:调节鱼缸水质参数,使温度、TDS值、PH值、浊度处于正常范围,观察OLED显示屏显示内容,同时用标准仪器测量对应参数,对比系统采集数据与标准数据。
测试结果:OLED显示屏清晰显示各项参数,更新周期为1秒,无残影、卡顿现象;系统采集数据与标准仪器测量数据误差在允许范围内,具体对比数据如表1所示。测试表明,系统数据采集与本地显示功能正常,数据准确性满足设计需求。
|
参数类型 |
标准仪器测量值 |
系统采集值 |
误差 |
误差范围 |
|
温度(℃) |
25.3 |
25.2 |
-0.1℃ |
≤±0.5℃ |
|
TDS值(ppm) |
235 |
240 |
+5ppm |
≤±5% |
|
PH值 |
7.2 |
7.2 |
0 |
≤±0.1 |
|
浊度(NTU) |
22 |
23 |
+1NTU |
≤±5% |
5.2.2 参数设置功能测试
测试方法:通过板载按键进入参数设置界面,调整各项参数阈值(如温度阈值调整为18~30℃,PH值阈值调整为6.0~9.0),保存设置后,观察OLED显示屏是否更新阈值,调节水质参数至新阈值范围外,验证报警功能是否适配新阈值。
测试结果:按键操作响应灵敏,阈值调整精准,保存后立即生效;调节水质参数至新阈值范围外时,系统正常触发报警;再次进入设置界面,可查看修改后的阈值,参数设置功能正常,操作便捷。
5.2.3 异常报警功能测试
测试方法:分别调节鱼缸水质参数,使温度、TDS值、PH值、浊度超出预设阈值(如温度升至30℃、PH值降至6.0、TDS值升至600ppm、浊度升至60NTU),观察系统报警模块响应与OLED显示状态。
测试结果:当参数超出阈值时,蜂鸣器立即鸣叫,红色LED指示灯闪烁,OLED显示屏标注异常参数并显示“异常报警”,报警响应时间≤0.5秒;调节参数恢复至正常范围后,报警停止,界面恢复正常。测试表明,系统异常报警功能灵敏、准确,可及时反馈水质异常。
5.2.4 远程监控功能测试
测试方法:保持WiFi网络稳定,通过智能手机机智云APP查看实时水质数据,调节鱼缸水质参数,观察APP端数据更新延迟与显示准确性;查看APP端数据趋势图,验证历史数据记录功能。
测试结果:APP端清晰显示各项水质参数与系统状态,数据更新延迟≤3秒,与本地显示屏数据一致;参数变化时,APP端趋势图实时更新,可查看近24小时历史数据;无数据丢失、断连现象,远程监控功能正常。
5.3 性能测试
性能测试旨在验证系统数据采集精度、响应速度、通信稳定性等性能指标,测试内容与结果如下:
5.3.1 数据采集精度测试
测试方法:在不同水质条件下(低温、高温、高TDS值、高浊度),重复采集10组数据,对比系统采集值与标准仪器测量值,计算平均误差与误差率。
测试结果:10组数据的平均误差均在设计阈值范围内,温度平均误差±0.2℃,TDS值平均误差±3%,PH值平均误差±0.05,浊度平均误差±3%,数据采集精度满足设计需求,稳定性良好。
5.3.2 响应速度测试
测试方法:快速调节鱼缸水质参数(如温度骤升2℃、PH值骤变0.3),记录系统从参数变化到本地显示更新、报警响应、APP端数据同步的时间。
测试结果:本地显示更新时间≤0.8秒,报警响应时间≤0.5秒,APP端数据同步延迟≤2.5秒,均满足设计性能指标,系统响应迅速。
5.3.3 通信稳定性测试
测试方法:保持系统连续运行24小时,WiFi网络稳定,记录ESP8266模块联网成功率、数据上传成功率,观察是否出现断连、数据丢失现象。
测试结果:24小时内,ESP8266模块联网成功率100%,数据上传成功率99.8%,仅出现2次短暂数据延迟(≤5秒),无断连现象,通信稳定性良好。
5.4 稳定性测试
稳定性测试旨在验证系统在长时间连续运行下的工作状态,测试方法:系统连续通电运行72小时,期间定期调节水质参数,观察各模块工作状态、数据采集准确性、报警功能可靠性。
测试结果:72小时内,系统无硬件故障、软件崩溃现象;各模块工作正常,数据采集准确,报警功能灵敏,远程通信稳定;OLED显示屏无残影、花屏,按键响应灵敏;传感器探头浸入水体后无损坏、漂移现象,系统整体稳定性满足实际使用需求。
5.5 测试结果总结
通过功能测试、性能测试、稳定性测试可知,本系统各项功能均能正常实现,数据采集精度、响应速度、通信稳定性、连续运行稳定性均满足设计需求;硬件板子调试完善,操作简便,价格实惠,适配家庭水族、中小型水产养殖等场景;支持功能定制,可根据用户需求优化系统性能,具备较高的实用价值。
6 结论与展望
6.1 研究结论
本文围绕基于STM32的智能水质检测鱼缸监测系统展开设计与实现,以STM32F103C8T6为核心控制器,集成多传感器采集模块、OLED显示模块、ESP8266通信模块、按键交互模块与报警模块,实现水质参数的实时采集
更多推荐
所有评论(0)