鱼缸生态数据采集与影像监控系统完整方案

这是针对上一篇的智能系统的设计方案,在列出的设备之外,还有微单和专业摄像机的采集部分,这些过度设计是为了满足上一篇提到的场景。


本方案基于树莓派4B+Arduino Nano V3.1架构,整合水质参数实时监测与水下影像采集功能,通过NFS协议直接存储至TrueNAS,实现完整的鱼缸生态数据采集与监控系统。该方案采用低功耗设计,确保7×24小时稳定运行,同时具备完善的异常检测与告警机制,为观赏鱼缸或小型水族箱提供全方位健康监测。

一、系统架构与硬件选型

1. 系统拓扑结构

2. 硬件组件清单

组件型号数量价格(元)关键特性
主控制器树莓派4B(4GB)14501.5GHz四核CPU,4GB内存,千兆以太网,四USB端口
传感器采集器Arduino Nano V3.110(已有)8路10-bit ADC,USB-CDC通信,低功耗
pH传感器DFRobot SEN039511200-14pH量程,0.01-3.0V模拟输出,含温度补偿
氨氮传感器DFRobot SEN039611500-10ppm量程,0.5-3.0V模拟输出
温度传感器DS18B2015数字温度传感器,-10℃~85℃,精度±0.5℃
水下摄像头Arducam IMX47714001296万像素,支持1080p@30fps,带防水外壳
显示屏10.1″ HDMI IPS屏15001280×800分辨率,支持横竖屏切换
供电设备5V/3A电源适配器1100树莓派主电源,需通过USB-C接口供电
USB HUB带独立电源的USB HUB1150为外接摄像头和传感器提供额外电力
杜邦线40根(不同颜色)110传感器连接,电源连接
防水外壳Sub海洋级透明罩1150保护摄像头,兼容1080p分辨率
LED灯可控温LED灯带1200基于环境光线自动调节亮度,辅助拍摄
散热片树莓派CPU散热片130降低系统温度,避免过热降频
备用SD卡32GB Class 10150系统镜像备份,快速恢复
总计  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数据源:

  1. 登录Grafana(默认用户名/密码:admin/admin)
  2. 导航至”Configuration → Data Sources”
  3. 点击”Add data source”,选择”Prometheus”
  4. 配置URL为
  5. 点击”Save & Test”验证连接

创建传感器数据监控面板:

  1. 导航至”Dashboards → Create Dashboard”
  2. 点击”+”添加新面板
  3. 选择数据源为Prometheus
  4. 使用查询语句:,,
  5. 选择时间序列图表类型
  6. 设置阈值告警:pH<6.5或pH>8.5、NH4>10ppm、温度<20℃或温度>28℃
  7. 保存仪表盘并设置自动刷新

2. 视频流与图像展示

配置mjpg-streamer服务:

配置Chromium KiOSk模式:

在Grafana中展示图像:

  1. 创建新面板
  2. 选择”Image”面板类型
  3. 配置URL为
  4. 设置刷新间隔为10分钟
  5. 调整面板尺寸以适应显示屏

五、异常检测与告警机制

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仪表盘与视频流展示,提供全面的系统状态
  • 异常检测:传感器阈值告警与鱼类行为分析,确保及时发现问题
  • 低功耗设计:合理配置硬件与软件,确保系统长期稳定运行
  • 可扩展架构:模块化设计,便于未来添加更多传感器或功能

未来扩展建议:

  1. 添加更多传感器:如溶解氧传感器、盐度传感器等,丰富水质监测数据
  2. 集成AI识别:部署更复杂的鱼类识别模型,区分不同鱼类种类与健康状态
  3. 添加自动控制:根据水质数据自动调节过滤系统、温控设备等
  4. 扩展视频分析:实现鱼类计数、活动模式分析等高级功能
  5. 添加远程访问:通过内网穿透或云服务实现远程监控与管理
  6. 集成环境控制:根据光照条件自动调节LED灯带亮度,模拟自然环境
  7. 添加多鱼缸支持:扩展系统支持多个鱼缸的监测与管理

注意事项:

  • 确保所有传感器和摄像头都使用防水设计,避免水损坏
  • 定期校准传感器,确保数据准确性
  • 监控系统温度,避免过热导致性能下降
  • 定期备份系统与配置,确保可恢复性
  • 遵循安全最佳实践,防止系统被未授权访问

通过本方案,用户将获得一个全面、可靠且易于扩展的鱼缸生态监测系统,不仅能够实时监控水质参数,还能捕捉水下影像,为鱼类健康与鱼缸生态平衡提供数据支持,实现对微观生命的深度共情与科学管理。

参考来源

[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文库

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。