【物联网毕设】基于Arduino与树莓派的智能鱼缸系统设计与实现
1. 项目背景与整体设计养鱼爱好者都知道维持鱼缸环境稳定是个技术活。水温忽高忽低、水中含氧量不足、水位不稳定等问题都可能让心爱的观赏鱼遭殃。传统的人工监测方式不仅费时费力还容易因疏忽造成损失。这正是我选择智能鱼缸系统作为毕业设计的原因——用物联网技术解决实际问题。整个系统的设计思路很明确用Arduino作为感官系统负责采集鱼缸环境数据用树莓派作为大脑处理数据并做出决策最后通过微信小程序让用户随时查看鱼缸状态。这种分层设计既保证了系统响应速度又实现了远程监控功能。硬件配置上我选择了性价比最高的方案Arduino UNO开发板克隆版价格只有原版的1/3DS18B20防水温度传感器低成本水位传感器电位器模拟溶解氧传感器真品要3000学生党伤不起树莓派3B作为主控制器四个继电器模块控制各类水泵2. 硬件搭建与传感器连接2.1 温度监测模块DS18B20防水温度传感器是我的首选它有三个突出优点防水性能好可以直接浸入水中测量精度达±0.5℃采用单总线协议节省IO口资源接线时有个坑要注意DS18B20需要上拉电阻。我直接买了配套模块省事否则得自己接个4.7kΩ电阻。接线方式很简单VCC接5VGND接地DATA接数字引脚2需在代码中定义实际测试时发现个有趣现象加热棒工作时会干扰传感器读数。解决方法是在加热棒和传感器之间加个隔板减少热传导影响。代码中设置了25℃的阈值低于这个值就启动加热棒。2.2 水位控制模块水位传感器我选了最便宜的型号学生预算有限但使用时发现两个问题长期通电会导致探针腐蚀读数波动较大±50的误差我的解决方案很巧妙通过数字引脚7控制传感器供电只在读数时通电在代码中加入滤波算法取10次读数的平均值设置550-640的阈值区间防止继电器频繁动作水位控制逻辑分为三档低于550水位过低启动注水泵550-640正常范围水泵全停高于640水位过高启动抽水泵2.3 溶解氧模拟模块真正的溶解氧传感器贵得离谱3000和导师商量后决定用电位器模拟。虽然不够精确但作为毕业设计演示完全够用。关键是要做好标定电位器旋钮最小位置对应0mg/L最大位置对应10mg/L5mg/L作为阈值控制充氧泵接线时注意电位器中间引脚接模拟输入A1两侧引脚分别接5V和GND使用map()函数将模拟值映射到氧浓度值3. 树莓派数据处理中心3.1 硬件连接与通信Arduino和树莓派通过USB连接是最简单的方案但要注意供电问题树莓派单独使用5V/2.5A电源Arduino外接独立电源树莓派USB供电不足所有执行机构水泵/加热棒单独供电通信协议选择Serial波特率设为9600。我在代码中添加了特殊标识符来区分不同传感器数据T开头表示温度W开头表示水位O开头表示氧浓度3.2 数据库设计与Web服务选用MySQL存储历史数据表结构设计如下字段名类型说明idINT自增主键timestampDATETIME记录时间tempFLOAT水温(℃)water_levelINT水位值oxygenINT氧浓度(mg/L)用Django搭建Web服务提供两个API接口POST接口接收Arduino上传的数据GET接口为小程序提供最新数据关键代码片段# views.py from django.http import JsonResponse from .models import SensorData def post_data(request): if request.method POST: temp request.POST.get(temp) level request.POST.get(level) oxygen request.POST.get(oxygen) new_data SensorData.objects.create( temptemp, water_levellevel, oxygenoxygen ) return JsonResponse({status:success}) def get_data(request): latest SensorData.objects.last() return JsonResponse({ temp: latest.temp, level: latest.water_level, oxygen: latest.oxygen })4. 微信小程序开发小程序界面设计遵循KISS原则Keep It Simple, Stupid顶部显示当前水温、水位、氧浓度中间区域用仪表盘展示数据趋势底部预留手动控制按钮后续扩展关键实现步骤注册微信开发者账号使用wx.request调用树莓派API每30秒自动刷新数据使用ECharts-for-WeChat实现数据可视化遇到的最大坑是HTTPS问题微信要求所有网络请求必须使用HTTPS。我的解决方案是在树莓派上配置Nginx反向代理并使用Lets Encrypt免费证书。5. 系统优化与问题排查实际运行中发现几个典型问题供电不足问题现象多个水泵同时工作时系统重启原因Arduino的5V引脚输出电流有限解决为每个执行机构单独配置5V电源数据丢包问题现象树莓派偶尔收不到Arduino数据原因USB接触不良解决更换高质量USB线并加固接口继电器误动作现象水泵无故启动原因电磁干扰导致解决在继电器线圈两端并联续流二极管6. 项目扩展与改进方向虽然基本功能已经实现但还有很大优化空间增加摄像头监控使用树莓派官方摄像头模块定时拍摄鱼缸照片通过小程序查看实时画面改进溶解氧检测使用光学法传感器价格适中加入温度补偿算法定期自动校准添加喂食功能舵机控制的自动喂食器定时投喂或远程手动控制记录喂食日志这个项目让我深刻体会到物联网开发的乐趣——从硬件选型到代码编写从通信协议到界面设计每个环节都充满挑战。最开心的时刻莫过于看到系统稳定运行所有传感器数据准确显示在小程序上。如果你也在做类似项目建议先从核心功能入手再逐步扩展这样更容易获得成就感。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2426635.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!