news 2026/5/9 6:02:56

基于STM32的智能水质监测系统(TDS/PH/水温检测+WiFi远程传输+多终端显示)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于STM32的智能水质监测系统(TDS/PH/水温检测+WiFi远程传输+多终端显示)

1. 项目背景与核心功能

家里养鱼的朋友应该都有过这样的经历:明明按时换水喂食,鱼却莫名其妙生病甚至死亡。后来我发现,水质问题才是罪魁祸首。水温波动、PH值异常、水中杂质过多,这些肉眼看不见的变化都会影响水生生物健康。这就是为什么我决定用STM32开发一套智能水质监测系统。

这套系统的核心功能非常实用:

  • 三合一检测:同时监测水体的TDS(总溶解固体)、PH值和水温三个关键指标
  • 双屏显示:本地OLED屏幕实时刷新数据,手机APP或电脑上位机远程查看
  • 智能预警:当水质参数超出设定范围时,系统会自动发出提醒

实测下来,这套方案成本不到200元,但效果堪比专业水质检测仪。我把它用在鱼缸、家庭饮用水和实验室培养液监测等多个场景,稳定性都很不错。

2. 硬件选型与电路设计

2.1 核心元器件清单

这是我反复测试后确定的最佳配置方案:

  • 主控芯片:STM32F103C8T6(性价比之王,72MHz主频完全够用)
  • 显示模块:0.96寸OLED(I2C接口,省IO口)
  • 传感器组合
    • TDS检测:工业级TDS传感器模块(0-1000ppm量程)
    • PH检测:E201-C PH电极+信号放大板
    • 水温检测:DS18B20(防水封装版)
  • 通信模块:ESP8266-01S(支持AT指令,便宜好用)

特别说一下传感器选择要点:

  • TDS模块要选带温度补偿的,实测误差能控制在±10%以内
  • PH电极一定要配专用放大电路,直接接单片机ADC会读不到有效数据
  • DS18B20记得买不锈钢外壳的防水版本,我用普通版坏过两个

2.2 关键电路设计

PH检测电路最容易被忽视。这里分享一个实测可用的设计:

// PH值读取代码示例 float Read_PH() { int buf[10], temp; for(int i=0;i<10;i++) { buf[i] = analogRead(PH_PIN); delay(10); } // 中值滤波 for(int i=0;i<9;i++) { for(int j=i+1;j<10;j++) { if(buf[i]>buf[j]) { temp = buf[i]; buf[i] = buf[j]; buf[j] = temp; } } } float avgValue = 0; for(int i=2;i<8;i++) avgValue += buf[i]; float phValue = (float)avgValue*5.0/1024/6; // 转换为电压值 phValue = 3.5 * phValue; // 根据校准结果调整系数 return phValue; }

TDS模块的供电要注意稳定性,建议单独用LDO稳压到3.3V。我在PCB上加了0.1uF去耦电容,数据波动明显减小。

3. 软件架构与关键代码

3.1 主程序逻辑设计

系统采用多任务调度架构:

  1. 传感器数据采集:每2秒轮询一次
  2. 本地显示刷新:OLED每1秒更新
  3. 无线数据传输:通过ESP8266定时上报
  4. 异常检测:实时判断阈值告警
void main() { HW_Init(); // 硬件初始化 WiFi_Connect(); // 连接路由器 while(1) { Read_Sensors(); // 读取所有传感器 OLED_Display(); if(++upload_cnt >= 30) { // 每60秒上传一次 WiFi_Upload(); upload_cnt = 0; } Check_Alarm(); // 异常检测 delay(1000); } }

3.2 WiFi通信实现

ESP8266配置有几个坑要注意:

  1. 波特率建议用115200,太低会影响响应速度
  2. 每次AT指令后要加足够延时
  3. 最好做重连机制

这是我优化后的网络配置代码:

void WiFi_Init() { Serial2.begin(115200); // ESP8266通信串口 Send_AT("AT+RST", "ready", 3000); Send_AT("AT+CWMODE=1", "OK", 1000); Send_AT("AT+CWJAP=\"SSID\",\"PASSWORD\"", "OK", 5000); Send_AT("AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80", "CONNECT", 3000); } void WiFi_Upload() { String cmd = "GET /update?api_key=XXX&field1="+String(tds)+"&field2="+String(ph)+"&field3="+String(temp); Send_AT("AT+CIPSEND="+String(cmd.length()+2), ">", 1000); Serial2.println(cmd); }

4. 多终端显示方案

4.1 OLED本地界面设计

我用U8g2库实现了分级显示:

  • 第一屏:实时数值(大字体)
  • 第二屏:历史曲线(需要外扩Flash存储)
  • 第三屏:参数设置(通过按键操作)

显示效果优化技巧:

  • 使用反色显示当前选中项
  • 重要参数添加闪烁效果
  • 温度单位'°C'要特殊处理,需要自定义字模

4.2 手机APP开发

推荐三种方案:

  1. Thingspeak平台:最简单,无需编程
  2. Blynk应用:拖拽式开发,适合新手
  3. 自定义Android应用:用MIT App Inventor就能做

我用的Thingspeak配置流程:

  1. 注册免费账号
  2. 创建Channel并定义字段
  3. 复制API Key到STM32程序
  4. 即可生成实时数据看板

4.3 上位机软件

用Python+PyQt5写了个简易监控程序,核心代码如下:

class MainWindow(QMainWindow): def __init__(self): super().__init__() self.serial = SerialThread() self.serial.data_received.connect(self.update_ui) def update_ui(self, data): self.lcd_temp.display(data['temp']) self.lcd_ph.display(data['ph']) self.plot.addData(data['tds'])

5. 校准与优化经验

5.1 传感器校准方法

PH传感器校准

  1. 准备PH4.0和PH9.18标准缓冲液
  2. 将电极浸入PH4.0溶液,读取ADC值
  3. 调整代码中的斜率参数
  4. 重复步骤2-3直到读数准确

TDS校准公式

TDS = (133.42 * V^3 - 255.86 * V^2 + 857.39 * V) * 0.5

其中V为传感器输出电压

5.2 抗干扰设计

踩过几个坑后总结的优化方案:

  • 所有传感器信号线加磁珠滤波
  • ADC采样时关闭WiFi模块
  • 地线采用星型连接
  • 外壳加导电漆屏蔽

电源管理也很关键,我后来改用TP4056充电模块+18650电池的方案,续航能达到72小时以上。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 17:29:41

三步实现社区互动智能分析:快速识别用户行为特征的实用指南

三步实现社区互动智能分析&#xff1a;快速识别用户行为特征的实用指南 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分&#xff0c;支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker …

作者头像 李华
网站建设 2026/5/6 17:29:17

全链路透视:tracetcp网络路径分析与故障定位实战指南

全链路透视&#xff1a;tracetcp网络路径分析与故障定位实战指南 【免费下载链接】tracetcp tracetcp. Traceroute utility that uses tcp syn packets to trace network routes. 项目地址: https://gitcode.com/gh_mirrors/tr/tracetcp 在复杂网络环境中&#xff0c;T…

作者头像 李华
网站建设 2026/5/6 17:28:59

ChatGLM-6B惊艳案例:用自然语言生成SQL查询并解释执行逻辑

ChatGLM-6B惊艳案例&#xff1a;用自然语言生成SQL查询并解释执行逻辑 1. 这不是“会说话的数据库”&#xff0c;而是真正懂业务的SQL助手 你有没有过这样的经历&#xff1a; 盯着一张结构复杂的数据库表发呆&#xff0c;明明知道要查什么&#xff0c;却卡在写SQL的最后一步—…

作者头像 李华
网站建设 2026/5/6 18:36:08

零配置部署YOLOv10,官方镜像真的太友好了

零配置部署YOLOv10&#xff0c;官方镜像真的太友好了 你有没有过这样的经历&#xff1a;刚打开终端准备跑通YOLOv10的首个检测demo&#xff0c;结果卡在git clone上整整二十分钟&#xff1f;或者好不容易装完PyTorch&#xff0c;运行时却报错libcudnn.so.8: cannot open share…

作者头像 李华
网站建设 2026/5/4 3:58:02

国产密码工具GmSSL入门指南:5分钟搭建你的国密开发环境

国产密码工具GmSSL入门指南&#xff1a;5分钟搭建你的国密开发环境 【免费下载链接】GmSSL 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱 项目地址: https://gitcode.com/gh_mirrors/gm/GmSSL 你是否在寻找一款完全支持国产密码算法的开发工具&#xff1f;想快速掌握SM2/SM…

作者头像 李华
网站建设 2026/5/4 6:53:28

ComfyUI混元视频模型实战:从部署到性能优化的全流程指南

1. 开篇&#xff1a;混元视频模型在AIGC赛道的技术价值 混元视频模型&#xff08;HunyuanVideo&#xff09;是腾讯开源的多模态大模型&#xff0c;原生支持文本-视频、图像-视频、视频-续写三种生成模式。相比Stable Video Diffusion、AnimateDiff等单任务模型&#xff0c;混元…

作者头像 李华