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

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


本方案基于树莓派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 来减少垃圾评论。了解你的评论数据如何被处理