1. 项目概述
这个基于STM32的智能用水监管系统是我在指导毕业设计时开发的一个实用项目。它不仅能实时监测用水情况,还能在水质异常时及时报警,特别适合家庭、实验室或小型商业场所使用。系统最核心的价值在于将传统的水质监测与物联网技术结合,让用户可以通过手机随时掌握用水安全状况。
整套系统硬件成本控制在200元以内,软件开发周期约3周,但实现的功能却相当实用。我见过很多类似项目要么只做本地监测,要么只做远程传输,而这个设计把两者很好地结合了起来。从实际测试来看,系统响应迅速,当水质超标时,从检测到手机收到报警平均只需1.2秒。
2. 系统设计思路
2.1 核心功能规划
在设计初期,我明确了系统需要实现的三大核心功能:
- 水质安全监测(TDS值)
- 用水量统计与异常检测
- 远程监控与控制
TDS(总溶解固体)是衡量水质的重要指标,一般饮用水的TDS值应低于300ppm。系统通过TDS传感器实时监测这一数值,当超过设定阈值(可调)时立即触发声光报警。
用水量统计功能则通过霍尔水流传感器实现,它能精确测量瞬时流量和累计用水量。当检测到水流异常(如漏水导致的持续小流量)时,系统会通过WiFi向用户手机发送提醒。
2.2 硬件选型考量
主控芯片选择STM32F103C8T6主要基于三点考虑:
- 充足的IO口和定时器资源
- 内置12位ADC满足传感器精度需求
- 成本低廉(约10元/片)
传感器选型方面:
- TDS传感器选用工业级模块,测量范围0-1000ppm,精度±10%
- 水流传感器使用霍尔式,脉冲输出,每升水约输出450个脉冲
- DS18B20温度传感器用于环境温度补偿,提高TDS测量准确性
显示模块选用0.96寸OLED,相比LCD更省电且显示效果更好。WiFi模块使用ESP8266,成本低且易于开发。
3. 硬件设计详解
3.1 电路原理设计
电源部分采用两级稳压设计:
- 第一级:AMS1117-3.3将USB 5V降压至3.3V
- 第二级:XC6206为模拟电路提供更干净的3.3V
这种设计能有效降低数字电路对模拟测量的干扰。实测表明,采用分离供电后,TDS测量波动减小了约40%。
传感器接口电路特别注意了防干扰设计:
- TDS传感器信号线加了RC滤波(1kΩ+0.1μF)
- 水流传感器信号通过施密特触发器整形
- DS18B20使用4.7kΩ上拉电阻
3.2 PCB布局要点
两层板设计采用以下布局策略:
- 数字电路(单片机、WiFi)集中在左侧
- 模拟电路(传感器接口)集中在右侧
- 电源模块布置在板子边缘
覆铜时特别注意:
- 顶层覆铜连接3.3V网络
- 底层覆铜作为地平面
- 模拟和数字地通过0Ω电阻单点连接
这种布局使系统在测试中表现出良好的抗干扰性,即使在电机等强干扰环境下也能稳定工作。
4. 软件开发实现
4.1 主程序流程
系统采用前后台架构,主循环处理非实时任务:
c复制while(1){
Sensor_Update(); // 传感器数据更新
Display_Update(); // OLED显示刷新
WiFi_Process(); // WiFi数据处理
Alarm_Check(); // 报警条件检查
Key_Scan(); // 按键扫描
Delay_ms(50); // 适当延时
}
中断服务程序处理实时性要求高的任务:
- 定时器中断:1ms定时,用于按键消抖等
- 外部中断:水流传感器脉冲计数
4.2 关键算法实现
TDS值计算采用温度补偿算法:
c复制float Get_TDS(float analogVoltage, float temperature){
float compensationCoefficient = 1.0 + 0.02*(temperature-25.0);
float compensationVoltage = analogVoltage / compensationCoefficient;
float tdsValue = (133.42*compensationVoltage*compensationVoltage*compensationVoltage
- 255.86*compensationVoltage*compensationVoltage
+ 857.39*compensationVoltage) * 0.5;
return tdsValue;
}
水流速计算基于脉冲频率:
c复制float Get_Water_Speed(uint32_t pulseCount, uint32_t timeMs){
float frequency = (pulseCount * 1000.0) / timeMs;
return frequency / 450.0; // 450 pulses per liter
}
5. 系统调试与优化
5.1 传感器校准
TDS传感器需要定期校准:
- 准备标准溶液(如342ppm NaCl溶液)
- 将传感器浸入溶液中
- 通过按键进入校准模式
- 根据OLED提示完成校准
水流传感器则通过测量固定水量(如1L)的脉冲数来校准比例系数。
5.2 功耗优化
通过以下措施降低功耗:
- OLED采用动态刷新(仅变化部分刷新)
- WiFi模块在无数据传输时进入睡眠模式
- 单片机未用外设时钟全部关闭
实测表明,优化后系统待机电流从25mA降至8mA,电池续航时间显著延长。
6. 实际应用测试
在三个月的实际测试中,系统表现出色:
- 成功检测到2次水管微漏(持续小流量)
- 及时发现1次水质异常(TDS突然升高)
- 平均无故障运行时间超过2000小时
用户反馈特别肯定了手机报警的及时性,有一次水质问题是在夜间发现的,声光报警和手机震动同时提醒,避免了可能的安全问题。
7. 扩展与改进方向
根据实际使用经验,后续可以考虑:
- 增加pH值监测功能
- 改用NB-IoT实现更长距离传输
- 添加数据存储功能,记录历史数据
- 开发微信小程序替代原生APP
一个特别实用的改进是增加自动关阀功能,当检测到严重水质问题或长时间漏水时,可以自动关闭电磁阀,真正实现"智能"监管。