这是针对上一篇的智能系统的设计方案,在列出的设备之外,还有微单和专业摄像机的采集部分,这些过度设计是为了满足上一篇提到的场景。
本方案基于树莓派4B+Arduino Nano V3.1架构,整合水质参数实时监测与水下影像采集功能,通过NFS协议直接存储至TrueNAS,实现完整的鱼缸生态数据采集与监控系统。该方案采用低功耗设计,确保7×24小时稳定运行,同时具备完善的异常检测与告警机制,为观赏鱼缸或小型水族箱提供全方位健康监测。
一、系统架构与硬件选型
1. 系统拓扑结构
2. 硬件组件清单
| 组件 | 型号 | 数量 | 价格(元) | 关键特性 |
| 主控制器 | 树莓派4B(4GB) | 1 | 450 | 1.5GHz四核CPU,4GB内存,千兆以太网,四USB端口 |
| 传感器采集器 | Arduino Nano V3.1 | 1 | 0(已有) | 8路10-bit ADC,USB-CDC通信,低功耗 |
| pH传感器 | DFRobot SEN0395 | 1 | 120 | 0-14pH量程,0.01-3.0V模拟输出,含温度补偿 |
| 氨氮传感器 | DFRobot SEN0396 | 1 | 150 | 0-10ppm量程,0.5-3.0V模拟输出 |
| 温度传感器 | DS18B20 | 1 | 5 | 数字温度传感器,-10℃~85℃,精度±0.5℃ |
| 水下摄像头 | Arducam IMX477 | 1 | 400 | 1296万像素,支持1080p@30fps,带防水外壳 |
| 显示屏 | 10.1″ HDMI IPS屏 | 1 | 500 | 1280×800分辨率,支持横竖屏切换 |
| 供电设备 | 5V/3A电源适配器 | 1 | 100 | 树莓派主电源,需通过USB-C接口供电 |
| USB HUB | 带独立电源的USB HUB | 1 | 150 | 为外接摄像头和传感器提供额外电力 |
| 杜邦线 | 40根(不同颜色) | 1 | 10 | 传感器连接,电源连接 |
| 防水外壳 | Sub海洋级透明罩 | 1 | 150 | 保护摄像头,兼容1080p分辨率 |
| LED灯 | 可控温LED灯带 | 1 | 200 | 基于环境光线自动调节亮度,辅助拍摄 |
| 散热片 | 树莓派CPU散热片 | 1 | 30 | 降低系统温度,避免过热降频 |
| 备用SD卡 | 32GB Class 10 | 1 | 50 | 系统镜像备份,快速恢复 |
| 总计 | 2085 | 完整生态监测系统 | ||
| 数据来源: |
3. 硬件连接细节
3.1 Arduino Nano与传感器连接
连接注意事项:
- pH传感器和氨氮传感器均使用3.3V供电可降低功耗
- DS18B20温度传感器通过单总线连接至D4引脚
- 所有传感器共地连接,确保数据采集一致性
- 确保供电稳定,避免因电压波动导致数据异常
3.2 树莓派与Arduino Nano连接
- Arduino Nano通过USB-C线连接树莓派4B的USB-A或USB-C接口
- 树莓派会自动识别为或端口
- 确保树莓派的USB供电稳定,建议使用5V/3A电源适配器
3.3 树莓派与摄像头连接
- 摄像头通过CSI接口连接至树莓派4B的CSI接口
- 摄像头需额外连接防水外壳与电源
- 配置启用摄像头支持
3.4 显示屏与树莓派连接
- 树莓派4B通过Micro HDMI线连接至10.1″ HDMI IPS屏
- 配置设置屏幕分辨率与方向
- 显示屏可选择独立供电或通过USB接口取电
二、软件环境配置
1. 树莓派系统配置
基础系统更新:
串口通信配置:
摄像头配置:
2. 树莓派服务安装
数据采集服务:
NFS客户端服务:
Grafana监控服务:
视频流服务:
3. TrueNAS存储配置
存储池创建:
- 在TrueNAS Web界面中创建RAID-Z1存储池,至少3块硬盘
- 推荐使用3块4TB硬盘,可用容量为6TB,可容忍1块硬盘故障
- 在存储池中创建数据集,设置和
NFS共享配置:
- 在TrueNAS的”共享→NFS”中创建新NFS共享
- 共享路径设置为
- 访问权限添加树莓派IP,设置为
- 启用选项以允许树莓派访问
- 不要勾选以确保权限正确
挂载配置文件:
验证挂载:
三、数据采集与处理流程
1. 传感器数据采集
Arduino Nano代码:
树莓派数据接收服务:
2. 影像数据采集与处理
树莓派视频流服务配置:
视频流Python脚本:
轻量级行为分析模型部署:
四、数据可视化与监控
1. Grafana仪表盘配置
安装Prometheus与Telegraf:
配置Telegraf读取CSV数据:
配置Grafana数据源:
- 登录Grafana(默认用户名/密码:admin/admin)
- 导航至”Configuration → Data Sources”
- 点击”Add data source”,选择”Prometheus”
- 配置URL为
- 点击”Save & Test”验证连接
创建传感器数据监控面板:
- 导航至”Dashboards → Create Dashboard”
- 点击”+”添加新面板
- 选择数据源为Prometheus
- 使用查询语句:,,
- 选择时间序列图表类型
- 设置阈值告警:pH<6.5或pH>8.5、NH4>10ppm、温度<20℃或温度>28℃
- 保存仪表盘并设置自动刷新
2. 视频流与图像展示
配置mjpg-streamer服务:
配置Chromium KiOSk模式:
在Grafana中展示图像:
- 创建新面板
- 选择”Image”面板类型
- 配置URL为
- 设置刷新间隔为10分钟
- 调整面板尺寸以适应显示屏
五、异常检测与告警机制
1. 传感器阈值告警
Python告警服务:
配置systemd服务:
2. 鱼类行为异常检测
行为分析Python脚本:
3. 系统可靠性增强
NFS故障自动回退:
配置systemd服务监控:
系统看门狗配置:
六、系统部署与优化
1. 系统部署流程
步骤1: 硬件准备与连接
- 准备树莓派4B并烧录Raspberry Pi OS
- 连接Arduino Nano至树莓派USB端口
- 连接pH传感器至Arduino Nano的A0引脚
- 连接氨氮传感器至Arduino Nano的A1引脚
- 连接DS18B20温度传感器至树莓派的GPIO4引脚
- 连接水下摄像头至树莓派CSI接口
- 连接显示屏至树莓派Micro HDMI接口
- 连接LED灯带至树莓派GPIO引脚
步骤2: 基础系统配置
- 更新系统:
- 配置SSH: → 启用SSH
- 配置WiFi: → 网络选项 → WiFi
- 配置摄像头: → 接口选项 → Camera
- 配置串口:禁用控制台,确保使用
步骤3: 安装核心服务
- 安装传感器数据接收服务
- 安装视频流服务
- 安装NFS客户端
- 安装Grafana与Prometheus
- 安装告警服务
- 安装行为分析模型
步骤4: 配置数据采集
- 上传Arduino代码并烧录
- 启动传感器数据接收服务
- 配置数据采集频率与存储路径
- 配置传感器校准参数
步骤5: 配置影像采集
- 配置摄像头参数与分辨率
- 启动视频流服务
- 配置图像保存路径与频率
- 配置视频编码参数
步骤6: 配置存储与监控
- 在TrueNAS上创建存储池与NFS共享
- 配置树莓派挂载NFS
- 配置Grafana仪表盘
- 配置传感器阈值告警
- 配置行为分析任务
步骤7: 优化系统性能
- 配置轻量级桌面环境
- 设置内存缓存区域
- 优化Python脚本性能
- 配置系统看门狗服务
- 设置定期校准任务
2. 系统优化与调优
电源管理优化:
- 使用5V/3A电源适配器确保树莓派稳定供电
- 为高功耗外设(如摄像头)使用带独立电源的USB HUB
- 降低摄像头分辨率至640×480,帧率至15fps
- 使用低功耗模式运行LED灯带,仅在需要时开启
性能优化:
- 配置使用挂载选项减少I/O操作
- 为Grafana和Chromium浏览器分配合理内存
- 使用设置无限制
- 禁用不必要的服务与后台进程
数据采集优化:
- 传感器数据采集频率设置为30秒一次,避免传感器极化
- 使用3.3V参考电压提高ADC读取精度
- 配置传感器定期校准任务,每月一次
- 使用硬件看门狗防止系统卡死
视频流优化:
- 使用较低的JPEG质量(60%)减少CPU使用
- 调整视频编码参数,降低码率
- 限制视频流客户端数量,避免过载
- 使用轻量级图像处理库,减少内存占用
七、系统维护与数据管理
1. 定期维护计划
每日维护:
- 检查系统日志,和
- 监控NFS挂载状态,
- 检查传感器数据,确保无异常值
- 清理临时文件,
每周维护:
- 用RO水冲洗传感器探头
- 检查摄像头防水外壳是否完好
- 验证LED灯带功能正常
- 检查存储空间使用情况,
- 执行系统更新,
每月维护:
- 校准pH和氨氮传感器
- 检查存储池健康状态
- 执行一次完整的系统备份
- 清理过期快照,保留最近7天的每日快照
- 检查硬件连接,确保无松动或腐蚀
季度维护:
- 执行一次完整的存储池自检
- 检查所有硬件组件的性能状态
- 验证备份恢复流程
- 更新所有软件至最新稳定版本
- 执行一次完整的系统健康检查
2. 数据管理策略
传感器数据管理:
- 每日生成一个CSV文件,命名格式为
- 每周生成一个汇总文件,包含平均值、最大值和最小值
- 每月执行一次数据压缩,使用工具压缩旧CSV文件
- 设置自动清理策略,保留最近365天的原始数据
- 使用ZFS快照功能保护传感器数据,每日一次快照
影像数据管理:
- 视频文件按小时存储,命名格式为
- 图像文件按分钟存储,每10分钟保存一张,命名格式为
- 每月执行一次视频转码,将高码率视频转换为低码率版本用于长期存储
- 设置自动清理策略,保留最近30天的原始视频,365天的低码率视频
- 使用ZFS压缩功能优化存储空间,对图像文件启用压缩
数据备份与恢复:
- 在TrueNAS上配置每日自动快照,保留最近7天
- 每周配置一次增量备份,保留最近4周
- 每月配置一次完整备份,保留最近12个月
- 配置异地备份,可使用TrueNAS的CloudSync功能将关键数据备份至云存储
- 设置定期备份验证任务,确保备份可恢复
八、系统故障处理与应急预案
1. 常见故障处理
传感器数据丢失:
- 检查Arduino与树莓派的USB连接是否正常
- 验证传感器供电是否稳定,电压是否在0.01-3.3V范围内
- 检查传感器校准参数是否正确
- 重启传感器数据接收服务:
视频流中断:
- 检查摄像头电源与连接状态
- 确认NFS挂载是否正常
- 检查mjpg-streamer服务状态:
- 重启视频流服务:
- 检查CPU使用率是否过高,必要时降低分辨率或帧率
NFS连接问题:
- 检查网络连接:
- 检查NFS服务状态:
- 尝试重新挂载:
- 检查TrueNAS的NFS服务是否正常
- 若持续失败,检查是否已自动切换
系统崩溃:
- 检查看门狗服务是否已触发重启
- 若未自动重启,手动重启系统
- 检查SD卡状态,必要时更换
- 从备份恢复系统,
- 检查所有外设连接,确保稳定
2. 应急预案
NAS宕机应急预案:
- 配置NFS故障自动回退脚本,将数据临时存储至本地缓存
- 启用系统看门狗,防止因NAS故障导致系统卡死
- 设置定期备份至外部存储设备
- 配置警报服务,当NAS宕机超过1小时时发送通知
- 准备备用存储方案,如将数据临时存储至移动硬盘
传感器失效应急预案:
- 配置多路传感器冗余,当一路失效时自动切换
- 设置传感器失效阈值,连续10次读取失败则触发告警
- 准备备用传感器,可在传感器失效时快速更换
- 设置传感器数据异常检测,当数值剧烈波动时触发检查
- 配置手动数据采集接口,允许通过手机APP临时读取数据
系统升级与维护:
- 在维护期间,配置自动回退到本地缓存
- 使用锁定关键系统包,防止意外更新
- 在升级前创建系统快照:
- 使用环境进行系统升级,避免直接升级导致系统不稳定
- 升级后验证所有服务功能正常,再删除快照
九、总结与扩展建议
本方案提供了一个完整的鱼缸生态数据采集与影像监控系统,整合了Arduino Nano的传感器采集能力与树莓派4B的影像处理能力,通过直接挂载TrueNAS实现数据的长期安全存储。系统采用低功耗设计,确保7×24小时稳定运行,同时具备完善的异常检测与告警机制。
方案优势:
- 数据安全:直接写入TrueNAS的ZFS存储池,享受RAID-Z1冗余保护
- 实时监控:Grafana仪表盘与视频流展示,提供全面的系统状态
- 异常检测:传感器阈值告警与鱼类行为分析,确保及时发现问题
- 低功耗设计:合理配置硬件与软件,确保系统长期稳定运行
- 可扩展架构:模块化设计,便于未来添加更多传感器或功能
未来扩展建议:
- 添加更多传感器:如溶解氧传感器、盐度传感器等,丰富水质监测数据
- 集成AI识别:部署更复杂的鱼类识别模型,区分不同鱼类种类与健康状态
- 添加自动控制:根据水质数据自动调节过滤系统、温控设备等
- 扩展视频分析:实现鱼类计数、活动模式分析等高级功能
- 添加远程访问:通过内网穿透或云服务实现远程监控与管理
- 集成环境控制:根据光照条件自动调节LED灯带亮度,模拟自然环境
- 添加多鱼缸支持:扩展系统支持多个鱼缸的监测与管理
注意事项:
- 确保所有传感器和摄像头都使用防水设计,避免水损坏
- 定期校准传感器,确保数据准确性
- 监控系统温度,避免过热导致性能下降
- 定期备份系统与配置,确保可恢复性
- 遵循安全最佳实践,防止系统被未授权访问
通过本方案,用户将获得一个全面、可靠且易于扩展的鱼缸生态监测系统,不仅能够实时监控水质参数,还能捕捉水下影像,为鱼类健康与鱼缸生态平衡提供数据支持,实现对微观生命的深度共情与科学管理。
参考来源
[1]鱼群健康AI影像拍摄方案_分析_监测_养殖户
http://www.sohu.com/a/878592778_100229004
[2]树莓派+MCC 118 实现数据采集|树莓派实验室
[3]TrueNASM-Series-Scalable Storage for Maximum Uptime
[4]鱼缸测试手机性能介绍
[5]边缘计算鱼类识别:如何实现高效精准的智能识别方案?水族_智灵_模型
[6]两个 USB摄像头(OV4689)接入树莓派3B+,并通过 WiFi 实时上传到服务器,在网页上查看实时视频流。使用树莓派3视频采集接口-CSDN博客
[7]云计算-教程:在Linode平台上用TrueNAS搭建大规模存储系统-Akamai中国-SegmentFault 思否
[8]关于图形处理单元(GPU)的全部内容-Microsoft 支持
[9]鱼群健康AI影像拍摄方案|体表|养殖|拍摄方案|观赏鱼|饲料_手机网易网
[10]树莓派行业应用案例|树莓派实验室
[11]TrueNASCommunity Edition|Free Open Source Storage
[12]不只为游戏!实测独显在网络应用的重要性-太平洋电脑网
[13]GStreamer|树莓派实验室
[14]树莓派4B-快懂百科
[15]RAID Organizations for Improved Reliability and Performance: A Not Entirely Unbiased Tutorial (1st revision)
[16]A Wearable RFID-Based Navigation System for the Visually Impaired
[17]PVE下安装TruenasScale_NAS存储_什么值得买
[18]FLEdge: Benchmarking Federated Machine Learning Applications in Edge Computing Systems
[19]Raspberry4b启动摄像头_树莓派4b打开摄像头-CSDN博客
[20]RAIDZ1/Z2/Z3最少需要多少硬盘?故障容忍度分别是多少?编程语言-CSDN问答
[21]Distributed Gesture Controlled Systems for Human-MACHINE Interface
[22]树莓派摄像头硬件选型建议:接口匹配新手教程-CSDN博客
[23]教程:在Linode平台上用TrueNAS搭建大规模存储系统-CSDN博客
[24]RAIDZ1/Z2/Z3最少需要多少硬盘?故障容忍度分别是多少?编程语言-CSDN问答
[25]再谈树莓派供电不足解决方案-今日头条
[26]关于树莓派4B的碎碎念,供电不足和64位RDP的坑-哔哩哔哩
[27]NAS最新消息:免费升到企业级,威联通QuTS Hero系统正式下放-今日头条
[28]树莓派ARM架构下如何解决USB外设供电不足问题?编程语言-CSDN问答
[29]树莓派4B电源问题怎么办?ZOL问答
[30]与Prometheus集成
[31]MultiStream: A Simple and Fast Multiple Cameras Visual Monitor and Directly Streaming
[32]Metrics监控数据导出格式:JSON、CSV与Prometheus格式对比-CSDN博客
[33]构建高效家庭与商业监控系统:mjpg-streamer实战教程-CSDN博客
[34]从命令行运行Prometheus查询
[35]MJPG-Streamer:轻量级视频流传输工具的深度解析-百度开发者中心
[36]手把手教你做一个物联网视频监控项目(二)MJPG-streamer方案实现_摄像头mjpg 模式 保存视频-CSDN博客
[37]树莓派通过tftp加载zImage和nfs挂载文件系统的配置_树莓派支持 tftp-CSDN博客
[38]Real-time Lane detection and Motion Planning in Raspberry Pi and Arduino for an Autonomous Vehicle Prototype
[39]树莓派4B监控CPU占用率、内存使用率、磁盘使用量以及CPU温度_python_旺仔牛奶opo-GitCode-AI社区
[40]在树莓派上部署NFS文件存储服务器-今日头条
[41]Resilient Edge: Can we achieve Network Resilency at the IoT Edge using LPWAN and WiFi?
[42]【LEDE】树莓派上玩LEDE终极指南-64-挂载UVC摄像头-MJPG-…
[43]【ROS学习】ROS主从机通信的利器—NFS文件系统挂载_ros 主机从机-CSDN博客
[44]树莓派串口通信数据丢失如何解决?编程语言-CSDN问答
[45]玩转Python」搭建远程监控系统,从此小偷绕道走!哔哩哔哩
[46]群辉挂载linuxnfs,树莓派挂载群晖NFS分区-CSDN博客
[47]树莓派的mjpeg-streamer实现简单的监控功能_mjpegstreamer-CSDN博客
[48]Telegraf远程文件插件CSV头写入机制优化解析-CSDN博客
[49]树莓派程序systemd 服务开机自启动/暂停/检查_树莓派systemd-CSDN博客
[50]接入Telegraf数据_日志服务(SLS)阿里云帮助中心
[51]基于树莓派摄像头的实时视频流服务器完整指南-CSDN博客
[52]Telegraf介绍和使用_大数据_鲁先生.-云原生
[53]树莓派5-学习笔记5:树莓派+群辉NAS搭建个人监控中心_树莓派搭建黑群晖-CSDN博客
[54]Telegraf指标采集器全指南:从入门到企业级实战 在云原生和物联网时代,指标数据的采集与监控成为系统可观测性的基石。掘金
[55]TrueNAS作为海康摄像头NAS存储的详细配置指南-百度开发者中心
[56]Evaluation of ZFS as an efficient WLCG storage backend
[57]TrueNAS无法舍弃,虚拟机nfs挂载邪修解决方案_truenas虚拟机-CSDN博客
[58]TrueNAS做为海康摄像头NAS储存详细配置_truenasnfs-CSDN博客
[59]A Conversation with Jeff Bonwick and Bill Moore
[60]NFS挂载失败常见原因及解决方法?编程语言-CSDN问答
[61]TrueNASM-Series-Scalable Storage for Maximum Uptime
[62]zfs文件系统详解-freebsd-zfs初体验-(原创不易一键三连)
[63]TrueNAS中文显示乱码如何解决?编程语言-CSDN问答
[64]ZFS_百度百科
http://baike.baidu.com/view/959414.htm
[65]ZFS实际性能比BTRFS/EXT4性能差距不小,看实测你再决定是否迁移!哔哩哔哩_bilibili
[66]TrueNAS_百度百科
[67]Design, Implementation, and Evaluation of an External Pose-Tracking System for Underwater Cameras
[68]Design, Configuration, Implementation, and Performance of a Simple 32 Core Raspberry Pi Cluster
[69]TrueNAS25.10 正式发布:NVMe-oF 支持+OpenZFS 性能飞升!今日头条
[70]UWA360CAM: A 360° 24/7 Real-Ti Streaming Camera System for Underwater Applications
[71]在树莓派上部署NFS文件存储服务器|树莓派实验室
[72]我的TrueNASSCALENAS,ZFS加速这块有点小坑
[73]教你一招,轻松实现TNAS和云盘数据同步!厂商动态-中关村在线
[74]Jetson nano NFS挂载配置_jetson nano 不能挂载-CSDN博客
[75]TrueNAS25.10 正式发布:NVMe-oF 支持+OpenZF._什么值得买
[76]【ROS学习】ROS主从机通信的利器—NFS文件系统挂载_ros 主机从机-CSDN博客
[77]挂载文件系统失败故障排查
[78]Data-centric FinGPT: Democratizing Internet-scale Data for Financial Large Language Models
[79]如何配置开机自动挂载NFS共享
[80]Applications of Deep Neural Networks with Keras
[81]2.7.网络|迁移规划指南|Red Hat Enterprise Linux|7|Red Hat …
[82]Employing AI and ML for Data Analytics on Key Indicators: Enhancing Smart City Urban Services and Dashboard-Driven Leadership and Decision-Making
[83]树莓派上OpenCV部署指南:从安装到图像识别实战-百度开发者中心
[84]python读取csv报错_reas_csv positional argument-CSDN博客
[85]IoT Ground Sensing Systems for Early Wildfire Detection Technologies, Challenges and Opportunities
[86]1.4 实现鱼类识别/检测模型_深度学习案例精粹最新章节-QQ阅读女生网
[87]树莓派USB设备自动挂载-CSDN博客
[88]python邮件告警SMTP服务-CSDN博客
[89]树莓派+OpenCV,打造物品识别与动物识别系统!与非网
[90]树莓派USB存储设备自动挂载-CSDN博客
[91]零基础玩转边缘计算:30分钟搭建你的第一个边缘节点-CSDN博客
[92]基于深度学习的鱼类目标及死亡状态检测方法研究与应用-豆丁网
[93]树莓派挂载移动硬盘-腾讯云开发者社区-腾讯云
[94]配置阈值-Amazon ManagedGrafana
[95]SpaceYLO: A Human-Inspired Model for Real-time, On-board Spacecraft Feature Detection
[96]Grafana告警配置:基于 Prometheus 指标设置阈值,实现短信 / 邮件告警
[97]在树莓派上部署Yolov5模型实现目标检测-开发者社区-阿里云
[98]grafana 配置告警规则-CSDN文库
[99]叙述YOLOv5部署在树莓派的全部过程-CSDN文库





