1. 项目概述
这个基于STM32的智能鱼缸监控投喂系统是我去年指导的一个本科毕业设计项目,经过三个月的开发和调试,最终实现了一套完整的自动化鱼缸管理方案。系统能够实时监测水温、水质等关键参数,根据预设条件自动投喂饲料,并通过手机APP远程查看和控制。整套系统成本控制在200元以内,非常适合作为电子类专业学生的毕业设计选题。
在实际应用中,我们发现这个系统不仅能解决传统鱼缸管理中的诸多痛点,比如忘记喂食、水质恶化等问题,还能通过数据记录帮助用户分析鱼类的生长状况。相比市面上动辄上千元的商用产品,这个DIY方案在功能和性价比方面都有明显优势。
2. 系统设计与核心功能
2.1 硬件架构设计
系统采用模块化设计思路,核心控制器选用STM32F103C8T6最小系统板,这款芯片具有72MHz主频、64KB Flash和20KB RAM,完全能满足我们的需求。外围设备包括:
-
传感器模块:
- DS18B20数字温度传感器(精度±0.5℃)
- TDS水质检测模块(测量范围0-1000ppm)
- 水位检测模块(基于红外对管)
-
执行机构:
- SG90舵机控制的投喂机构
- 5V潜水泵用于换水
- 12V LED灯带提供照明
-
通信模块:
- ESP8266 WiFi模块(AT指令固件)
- 0.96寸OLED显示屏(本地状态显示)
提示:在选择传感器时,我们特别考虑了防水性能。DS18B20和TDS探头都需要做防水处理,可以使用热缩管和防水胶进行密封。
2.2 软件功能规划
系统软件采用前后端分离架构:
-
下位机程序(STM32):
- 传感器数据采集(定时/触发)
- 执行机构控制(PWM输出)
- 异常状态检测与报警
-
上位机应用:
- Android手机APP(基于MQTT协议)
- Web管理后台(可选功能)
核心业务逻辑包括:
- 定时投喂策略(可设置多个时间段)
- 温度异常自动调节(联动加热棒)
- 水质恶化预警(TDS值超标报警)
- 远程手动控制(应急操作)
3. 关键技术实现
3.1 多传感器数据融合
传感器数据的准确性和稳定性直接影响系统可靠性。我们采用了以下优化措施:
- 数据滤波算法:
c复制#define SAMPLE_SIZE 5
float tempFilter() {
float sum = 0;
for(int i=0; i<SAMPLE_SIZE; i++){
sum += DS18B20_ReadTemp();
delay(100);
}
return sum/SAMPLE_SIZE;
}
- 异常值剔除:
- 设置合理的数据范围(如水温10-35℃)
- 采用滑动窗口比较法识别突变数据
- 传感器校准:
- TDS模块需要定期用标准溶液校准
- 水位传感器需要根据鱼缸高度调整阈值
3.2 低功耗设计
考虑到系统需要7×24小时运行,我们做了以下低功耗优化:
- 硬件层面:
- 选用低功耗元器件(如STM32在空闲模式仅1.5mA)
- 分时供电设计(传感器仅在采集时上电)
- 软件层面:
- 采用中断唤醒机制(RTC定时唤醒)
- 动态调整采集频率(正常模式1次/分钟,睡眠模式1次/10分钟)
实测表明,整套系统在待机状态下功耗仅3.5W,按0.6元/度电费计算,年运行成本不到20元。
4. 系统搭建与调试
4.1 硬件组装步骤
- PCB设计:
- 使用Altium Designer绘制双面板
- 预留所有接口的测试点
- 特别注意电源走线宽度(建议≥1mm)
- 机械结构:
- 3D打印饲料仓和投喂机构
- 使用亚克力板制作防水外壳
- 所有线缆采用防水接头
- 安全措施:
- 主电路加入自恢复保险丝
- 水泵控制使用光耦隔离
- 做好所有接地的防腐蚀处理
4.2 软件开发要点
- 嵌入式程序框架:
c复制void main() {
Hardware_Init();
WiFi_Connect();
while(1) {
Sensor_Update();
Feed_Check();
Alarm_Check();
OLED_Display();
System_Sleep(500); // 500ms周期
}
}
- 通信协议设计:
- 自定义轻量级JSON格式
- 关键字段包括:
json复制{ "devID":"FISH-001", "temp":26.5, "tds":120, "cmd":"feed_now" }
- 手机APP开发:
- 使用Android Studio开发
- 主要界面:
- 实时数据仪表盘
- 历史曲线图表
- 参数设置页面
- 手动控制面板
5. 常见问题与解决方案
5.1 硬件问题排查
| 故障现象 | 可能原因 | 解决方法 |
|---|---|---|
| 温度读数异常 | 传感器接触不良 | 检查连接线,重做防水 |
| 投喂机构卡死 | 饲料受潮结块 | 更换干燥剂,清理料仓 |
| WiFi频繁断开 | 信号干扰 | 更换2.4G信道,添加屏蔽罩 |
5.2 软件调试技巧
- 传感器数据不准:
- 先单独测试每个传感器
- 检查供电电压是否稳定
- 确认采样时序符合规格书要求
- 通信丢包问题:
- 增加重传机制
- 添加数据校验(CRC16)
- 优化MQTT的QoS等级
- 内存泄漏检测:
- 定期打印堆栈使用情况
- 使用STM32CubeMonitor工具分析
6. 项目扩展方向
在实际使用过程中,我们发现还可以进一步优化系统:
- AI图像识别:
- 添加摄像头模块
- 使用TensorFlow Lite实现鱼类行为分析
- 识别疾病早期症状
- 太阳能供电:
- 增加18650电池组
- 配套10W太阳能板
- 实现完全离网运行
- 多鱼缸组网:
- 开发集中控制器
- 支持最多8个鱼缸协同管理
- 统一数据分析和报表生成
这个项目不仅完成了基本的监控投喂功能,更重要的是建立了一个可扩展的智能鱼缸平台。后续可以根据需要添加更多传感器和执行器,比如PH值检测、自动换水等高级功能。
