1. 项目背景与核心需求
泳池作为公共场所,其水质和环境参数的实时监测直接关系到使用者的健康安全。传统的人工检测方式存在效率低、数据不连续等问题,而基于单片机的自动化监测系统能够实现24小时不间断监控,大幅提升管理效率。
这个毕业设计项目的核心在于构建一个低成本、高可靠性的泳池环境监测方案。系统需要实时采集水温、PH值、余氯浓度等关键参数,并通过直观的显示界面呈现数据。当某项指标超出安全范围时,系统应能及时发出警报,提醒管理人员采取相应措施。
2. 硬件系统设计与选型
2.1 主控芯片选择:STM32F103C8T6
STM32F103C8T6作为主控芯片具有明显优势:
- 72MHz主频的Cortex-M3内核,处理性能完全满足多传感器数据采集需求
- 内置64KB Flash和20KB SRAM,为程序和数据提供充足存储空间
- 丰富的外设接口(3个USART、2个SPI、2个I2C)便于连接各类传感器
- 低功耗特性适合长期运行的监测场景
- 性价比高,开发资源丰富,适合学生项目
提示:实际采购时建议选择正版ST官方芯片或授权代理商产品,避免使用山寨芯片导致系统不稳定。
2.2 温度传感器:DS18B20
DS18B20数字温度传感器特别适合泳池环境监测:
- 防水封装型号可直接浸入水中测量
- ±0.5℃的高精度满足泳池温度监测要求(标准范围26-28℃)
- 单总线接口节省IO资源,支持多个传感器并联
- 测量范围-55℃~+125℃覆盖所有可能的水温情况
实际部署时,建议在泳池不同位置布置3-4个传感器,取平均值以提高测量可靠性。传感器应固定在距池底30-50cm处,避免直接阳光照射影响读数。
2.3 显示模块:0.96寸OLED
选用OLED而非LCD主要基于以下考虑:
- 自发光特性,在泳池边强光环境下仍保持良好可视性
- 超高对比度,数据显示清晰醒目
- 极快响应速度,实时更新无残影
- 轻薄体积(0.96寸)便于集成到控制面板
- I2C接口仅需4线连接,简化布线
显示界面设计应突出关键参数:
- 当前水温(大字号显示)
- PH值(标准范围7.2-7.8)
- 余氯浓度(安全范围1-3ppm)
- 系统运行状态指示
3. 系统架构与电路设计
3.1 整体系统框图
code复制[传感器层] --> [信号调理电路] --> [STM32主控] --> [显示/报警]
↑ ↓
[电源管理] [数据存储]
3.2 关键电路设计要点
电源电路:
- 采用AMS1117-3.3V稳压芯片为STM32和传感器供电
- 增加100μF电解电容和0.1μF陶瓷电容组成π型滤波
- 为DS18B20设计4.7KΩ上拉电阻保证信号质量
传感器接口:
- DS18B20数据线串联100Ω电阻防止信号过冲
- PH传感器采用差分放大电路,运放选用低噪声的OP07
- 余氯传感器接口增加TVS二极管保护
抗干扰设计:
- 所有信号线采用双绞线传输
- 模拟地和数字地通过0Ω电阻单点连接
- 关键芯片电源引脚就近放置去耦电容
4. 软件系统实现
4.1 主程序流程图
code复制初始化硬件 --> 传感器校准 --> 进入主循环
↑ ↓
└-- 数据采集 -- 数据处理 -- 显示更新 -- 报警判断 <--
4.2 关键代码实现
DS18B20温度读取(基于HAL库):
c复制float DS18B20_ReadTemp(void) {
uint8_t tempL, tempH;
uint16_t temp;
HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_RESET);
HAL_Delay(480); // 复位脉冲
HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_SET);
// 跳过ROM命令(0xCC) + 启动转换(0x44)
DS18B20_WriteByte(0xCC);
DS18B20_WriteByte(0x44);
HAL_Delay(750); // 等待转换完成
// 读取温度值
DS18B20_WriteByte(0xCC);
DS18B20_WriteByte(0xBE);
tempL = DS18B20_ReadByte();
tempH = DS18B20_ReadByte();
temp = (tempH << 8) | tempL;
return temp * 0.0625; // 转换为摄氏度
}
OLED显示驱动优化:
为避免屏幕闪烁,采用局部刷新策略:
- 只更新变化的数据区域
- 使用双缓冲机制
- 关键参数采用反色显示增强对比度
4.3 报警逻辑实现
采用三级报警机制:
- 初级预警(黄色):参数接近临界值
- 中级报警(橙色):参数超出安全范围
- 紧急报警(红色):参数严重超标
报警触发后,系统会:
- OLED显示闪烁的报警信息
- 触发蜂鸣器鸣响
- 通过GSM模块发送短信通知(可选扩展)
5. 系统调试与优化
5.1 传感器校准
DS18B20校准步骤:
- 准备标准温度计和恒温水槽
- 设置0℃(冰水混合物)、25℃(室温)、50℃三个校准点
- 记录传感器读数与标准值偏差
- 在代码中添加补偿系数
PH传感器校准:
- 使用PH4.01、PH6.86、PH9.18标准缓冲液
- 调节运放增益使输出匹配预期值
- 建立三点校准曲线
5.2 抗干扰实测
在泳池实际环境中遇到的典型干扰及解决方案:
- 水泵启停造成的电源波动 → 增加LC滤波电路
- 无线设备导致的信号干扰 → 采用屏蔽线缆
- 温度传感器读数跳变 → 添加软件滤波算法
5.3 低功耗优化
通过以下措施使系统平均功耗降至15mA:
- 使用STM32的Stop模式,间隔唤醒(每分钟唤醒10秒)
- OLED仅在数据更新时刷新
- 关闭未使用的外设时钟
- 传感器采用分时供电策略
6. 项目扩展方向
基础系统完成后,可以考虑以下增值功能:
1. 云端数据监控
- 增加ESP8266 WiFi模块
- 对接腾讯云IoT平台
- 开发微信小程序实时查看数据
2. 自动加药控制
- 增加蠕动泵驱动电路
- 根据余氯浓度自动调节加氯量
- 设置安全互锁防止过量投药
3. 视频监控集成
- 通过串口连接摄像头模块
- 异常情况自动拍照存档
- 人脸识别统计泳客流量
4. 能源管理
- 监测水泵运行状态
- 记录能耗数据
- 提供节能优化建议
在实际部署中,我发现防水处理是容易被忽视的关键点。所有电路板应喷涂三防漆,接插件使用防水型号,外壳达到IP68防护等级。曾有一个案例因冷凝水导致电路短路,后来在PCB底部增加加热电阻解决了这个问题。
