1. 项目概述:STM32智能鱼缸监控投喂系统设计
养鱼爱好者常面临水质管理、定时投喂和远程监控三大难题。传统鱼缸需要人工定期检测pH值、水温等参数,投喂时间也难以精确控制。这个基于STM32的智能鱼缸系统,通过传感器网络和自动控制模块,实现了鱼缸环境的24小时无人值守管理。
我在实际测试中发现,系统核心价值在于将离散的环境参数采集、设备控制和用户交互整合为闭环系统。主控采用STM32F103C8T6最小系统板,搭配5种关键传感器和3类执行机构,通过WiFi模块实现手机App远程监控。整套硬件成本控制在200元以内,比市售成品智能鱼缸便宜60%以上。
2. 系统架构设计
2.1 硬件组成框图
系统采用模块化设计,主要包含:
- 控制中枢:STM32F103(72MHz主频,64KB Flash)
- 传感模块:
- DS18B20防水温度传感器(±0.5℃精度)
- PH-4502C pH传感器(0-14量程)
- TDS水质检测模块(0-1000ppm)
- 光敏电阻(检测光照强度)
- 水位开关(防溢出保护)
- 执行机构:
- 5V微型潜水泵(流量1L/min)
- SG90舵机控制的投食装置
- 12V LED补光灯带(PWM调光)
- 通信模块:ESP8266 WiFi(AT指令模式)
- 人机交互:0.96寸OLED+按键
关键选型原则:传感器优先选择数字输出型号,减少STM32的ADC资源占用。执行机构需考虑防水性能,特别是投喂机构要避免饲料受潮。
2.2 软件架构设计
系统采用前后端分离架构:
- 嵌入式端:FreeRTOS实时操作系统
- 任务1:传感器数据采集(1Hz)
- 任务2:设备控制(事件触发)
- 任务3:通信处理(MQTT协议)
- 手机端:Android原生开发
- 数据可视化(折线图+仪表盘)
- 远程控制界面
- 异常报警推送
3. 核心功能实现细节
3.1 多传感器数据融合
环境参数采集面临的主要挑战是信号干扰。我们的解决方案:
c复制// 温度采样示例(均值滤波)
float Get_Temperature() {
float sum = 0;
for(uint8_t i=0; i<5; i++){
sum += DS18B20_ReadTemp();
delay_ms(100);
}
return sum/5.0f;
}
// pH值校准算法
float pH_Calibration(float raw) {
// 三点校准公式
static float calib[3][2] = {{4.0,2.8}, {7.0,3.2}, {10.0,3.6}};
return ((raw-calib[1][1])*(calib[2][0]-calib[0][0])/
(calib[2][1]-calib[0][1])) + calib[1][0];
}
3.2 投喂机构精准控制
饲料投放量控制是系统难点。我们采用:
- 机械设计:3D打印的旋转式料仓(直径6cm)
- 控制算法:
- 每次旋转90°投放约0.5g饲料
- 通过光电传感器计数确保不卡料
- 防潮措施:硅胶密封圈+干燥剂仓
3.3 水质异常处理流程
当检测到异常时的处理序列:
- TDS>500ppm → 启动换水泵(持续5分钟)
- pH<6.5 → 添加碱性调节剂(需外接药剂瓶)
- 温度>30℃ → 开启冷却风扇
- 水位过低 → 关闭所有水泵并报警
4. 通信协议设计
4.1 数据传输格式
采用JSON格式压缩传输:
json复制{
"devID":"FISH-001",
"temp":26.5,
"ph":7.2,
"tds":320,
"food":85,
"alarm":0
}
数据包大小控制在150字节以内,适合WiFi模块传输。
4.2 通信异常处理
实测发现的典型问题及解决方案:
| 问题现象 | 排查方法 | 解决方案 |
|---|---|---|
| ESP8266频繁掉线 | 测量3.3V电源纹波 | 增加100μF电容 |
| 数据包丢失 | Wireshark抓包分析 | 加入重传机制 |
| 指令响应延迟 | 查看任务堆栈使用 | 优化FreeRTOS任务优先级 |
5. 电源管理系统
5.1 多电压转换设计
系统包含三种电压等级:
- 12V(LED灯带)
- 5V(主控板、传感器)
- 3.3V(WiFi模块)
电源树设计要点:
- 主输入:12V/2A适配器
- 第一级:LM2596降压到5V
- 第二级:AMS1117降压到3.3V
- 关键模块增加π型滤波电路
5.2 低功耗优化
在无人操作时进入节能模式:
- 关闭OLED背光
- 传感器采样间隔从1s延长到10s
- WiFi模块切换为UART休眠模式
实测功耗可从3.5W降至1.2W
6. 常见问题排查指南
根据三个月实地测试,整理出高频问题:
-
pH值读数漂移
- 现象:每次上电读数不同
- 原因:电极未充分浸泡
- 解决:首次使用前浸泡24小时
-
投喂机构卡死
- 现象:舵机抖动但不转动
- 检查:饲料是否受潮结块
- 维护:每周清理料仓
-
WiFi频繁重连
- 查看:ESP8266固件版本
- 升级:AT固件到v2.2.0
- 配置:设置静态IP避免DHCP冲突
-
TDS值异常偏高
- 校准:用342ppm标准液重新校准
- 检查:传感器电极是否清洁
这套系统在毕业答辩中获得优秀评价的关键在于:
- 硬件设计全部开源(立创EDA工程)
- 提供完整的测试数据集
- 手机App具有创新性的AR查看功能
- 论文包含详细的功耗分析章节
实际部署时建议增加UPS备用电源,防止停电导致系统复位。对于大型鱼缸,可将水泵功率提升至15W,并相应调整电源设计。
