基于物联网的智能鱼缸系统
2021-10-27徐昊明王云龙陈凯杰
徐昊明,王云龙,杨 俊,陈凯杰
(南京工程学院 机械工程学院,江苏 南京 211167)
0 引 言
随着社会经济发展,人们对美好生活的需要日益增加,使得水族宠物行业蓬勃发展。据《2019中国宠物消费趋势报告》显示,2020年中国的宠物行业市场规模将达到2 200亿元。其中水族宠物行业主导线上活体消费市场,鱼缸/水族箱及配套设备与用品消费提速。报告指出,普通的水族箱已经不能满足市场需要,养宠精细化、智能化、多元化的趋势日渐明显。
本文设计了基于物联网的智能鱼缸系统,选用Arduino MEGA作为主控板,将传感器收集到的数据通过串口发送给树莓派。摄像头模块将数据流发送给树莓派,通过基于OpenCV的算法进行处理,得出鱼类的运动状态。联网后的树莓派将水质数据和鱼类的运动状态发送到Ubitdots物联网平台[1-4],用户可在PC端和移动端查看平台上的数据,大大提升了检测的便捷性。
1 系统结构
本文设计的智能鱼缸结构示意图如图1所示。其中:图1(a)为鱼缸整体结构;图1(b)为剖视图。
图1 智能鱼缸结构示意图
2 系统总体设计方案
该智能鱼缸系统以树莓派3B+作为主控核心,通过多种传感器对水质指标和鱼缸图像进行采集,采集到的数据由树莓派实时上传到Ubidots平台。用户可通过固定在鱼缸上的显示屏、手机APP或浏览器查看鱼缸情况。由于树莓派GPIO口被显示屏占用,故由Arduino MEGA作为下位机收集来自传感器的数据。当溶解氧指标或水位指标低于规定指标时[5],Arduino MEGA控制电磁阀或氧气泵的开关打开,直到达到规定指标。系统架构如图2所示。
图2 系统架构
3 硬件模块
3.1 树莓派
树莓派是一种基于Linux系统的卡片式电脑。树莓派3B+的64位四核 ARM Cortex-A53 CPU能够以高达1.4 GHz的频率运行,它拥有40个GPIO引脚以及多种其他类型的接口,便于进行开发和部署。该鱼缸系统中树莓派可以对摄像头的图像进行视觉处理,并与Arduino MEGA,Ubidots物联网平台进行通信。
3.2 Arduino MEGA
Arduino MEGA是一个基于ATmega2560微控制器的开发板。它具有54个数字输入/输出引脚,16个模拟输入,4个串行端口,16 MHz晶体振荡器。Arduino MEGA采用类C++语言开发,用户可在专用的Arduino IDE上编写程序。本项目中利用Arduino丰富的引脚来获得传感器数据,还通过Arduino控制电磁阀和增氧泵的开关。
3.3 水质传感器模块
水质传感器模块包括水位传感器、溶解氧传感器、浑浊度传感器、pH传感器和温度传感器,分别对鱼缸内的水位、溶解氧浓度、浑浊度、pH值和水温进行监测。
3.4 摄像头模块
摄像头模块选用1 080P免驱摄像头,可以通过USB接口直接与树莓派连接。摄像头模块采集鱼缸内的图像并上传给树莓派,并分析出鱼缸内处于运动状态的鱼的数量,从而提醒用户关注鱼的健康状态。
3.5 显示模块
显示模块采用配套的3.5英寸树莓派显示屏,其成本相对较低,且体积较小。该显示屏可以方便地插在树莓派的GPIO口上,由GPIO口供电和实现触摸功能,方便用户直接观测水质数据和鱼的运动情况。
4 系统软件设计
4.1 利用OpenCV识别统计运动的鱼
本智能鱼缸采用背景减法[6-9]识别鱼缸内运动的鱼,并对其数量进行统计。如图3所示,该程序先从读取的监控图像中提取背景模型,再通过背景减法的算法将视频流中的图像与背景模型做差分。通过对差分所得的图像进行二值化处理,再对其进行滤波、膨胀等形态学处理,即可得到如图4(a)所示的图像。如图4(b)所示,通过边缘检测可以绘制出运动中的鱼的轮廓[10],并统计出鱼的数量。
图3 视觉处理过程
图4 实际检测效果图
4.2 树莓派与Ubidots平台的联网
Ubidots是一个全球性的IoT平台,它支持各类智能硬件的接入,大大降低了物联网系统的开发成本。开发者可以方便地在上面建立属于自己的数据库,设计开发可视化的应用界面,并通过网页、手机APP等平台查看物联网系统的各项数据信息[11]。开发者只需在官网上注册账号即可在Ubidots平台上创建项目,并获得对应的密钥。Ubidots平台支持HTTP和HTTPS两种网络协议,通过REST API将树莓派连接到Ubitdots的云平台[12]。整个物联网系统启动后,树莓派、Arduino及各传感器模块初始化,传感器模块数据由Arduino经USB串口发送给树莓派。在联网状态下树莓派内存储的鱼缸数据信息即可实时与云平台共享。图5为鱼缸内温度的实时变化曲线。
图5 平台效果图(手机APP)
4.3 系统测试
本系统在室内完成软硬件搭建和软件调试,并进行了测试。试验结果显示:显示屏、浏览器和手机APP均可显示实时数据,显示界面美观,传感器数据更新及时且准确(见图5);摄像头及视觉处理算法运行效果好,控制板运行稳定;当溶解氧浓度和水位低于设定值时,增氧泵和电磁阀会自动打开,达到设定值后自动关闭。
5 结 语
本文利用树莓派开发板、Arduino MEGA、Ubidots平台构建了智能鱼缸系统,并开发了基于OpenCV的鱼类运动检测算法。该系统可通过传感器获得实时水质数据并由显示器或物联网平台反馈给用户。当水质不合格时亦可通过电磁阀和增氧泵等设备进行精确调节,克服了传统鱼缸缺乏反馈环节和调节环节的缺陷。该智能鱼缸系统的功能全面、成本低廉、操作简便,易于推广应用,可创造较大市场价值。