基于STM32与树莓派的养殖水质监测无人艇系统研究

2023-10-26 11:18余钱程管延敏黄温赟韦龙虞嘉晨
渔业现代化 2023年5期
关键词:机软件树莓上位

余钱程,管延敏,黄温赟,韦龙,虞嘉晨

(1 江苏科技大学船舶与海洋工程学院,江苏镇江 212100;2 中国水产科学研究院渔业机械仪器研究所,上海 200092)

水产养殖是中国农业的重要组成部分,中国是世界最大的水产品出口国与消费国[1-2]。在水产养殖过程中,养殖水域水质好坏对养殖效益起决定作用[3]。然而,水质容易受到人类活动等因素干扰,影响水生生物生存,进而导致水产品产量下降,对养殖户经济造成损失[4-6]。因此需要对水质环境进行实时监测,方便养殖人员及时做出调整[7]。

传统水质环境监测多采用人工的方式进行,时间成本高,效率低。基于此,大批学者对水产养殖过程中的水质监测系统进行了深入研究。张琴等[8]、蔡向科等[9]、陈丽等[10]针对水质监测系统功耗高、初始能量有限等问题,设计了低功耗水产养殖水质监测系统,有效降低了节点能量的消耗。刘传领等[11]、张铮等[12]针对水产养殖覆盖面积广等特点,基于LoRa技术设计了水产养殖监测系统,实现了对水质参数的远距离无线监控。Tolentino等[13]、王鸿雁等[14]针对集约化水产养殖中的水质监控需求,设计了自动监测控制系统,实现对水质的调节控制。上述研究中,监测点位置始终固定,其覆盖范围有限,无法更为精确地反映水域内的水质环境分布情况。随着自主控制技术的飞速发展,无人艇之类的无人搭载平台逐渐应用于水体环境监测中。李昕聪等[15]、刘培学等[16]、江先亮等[17]、Jo等[18]、Demetillo等[19]、Sousa等[20]以小型无人船为载体,搭载多种水质传感器,利用物联网技术实现对水质参数的远程动态实时监测。然而这些设计存在成本高昂、组网复杂、用户操作烦琐等问题。

本研究基于STM32单片机与树莓派设计了一种用于水产养殖的水质监测无人艇控制系统,养殖人员可以通过该系统控制无人艇对养殖水域的水质进行实时定点检测,并能够在上位机软件上查看检测到的水体数据,方便用户操作。

1 系统总体框架设计

本控制系统总体框架如图1所示,由STM32单片机、树莓派4B和阿里云服务器3部分组成。

图1 系统总体框架图

STM32单片机通过串口接收由树莓派4B传递过来的上位机指令,利用PID算法控制霍尔电机的转速,从而实现水质监测无人艇的航行控制。结合温度传感器、浊度传感器、pH传感器、电子罗盘、GPS模块实现水质监测无人艇的位置数据以及水体环境数据的采集。

树莓派4B结合摄像头采集图像数据,通过串口接收STM32单片机采集到的各项数据,并利用4G网络将这些数据传输到部署于阿里云服务器上的上位机软件中显示,同时通过串口将接收到的上位机软件相应指令发送给STM32单片机。

阿里云服务器上部署的上位机软件可以对采集的水体与图像数据进行处理并可视化显示,同时保存至MySQL数据库中。上位机软件提供相应的界面用于设置航行路径,通过计算距离与方位角来对无人艇发送控制指令,从而实现水质监测无人艇的远程控制。

2 系统硬件设计

2.1 系统硬件结构总体设计

根据搭建的系统框架,对水质监测无人艇的系统硬件结构进行了设计,如图2所示。

图2 系统硬件结构框图

以STM32F103ZET6单片机与树莓派4B作为控制器,STM32单片机外围连接温度传感器、浊度传感器、pH传感器、GPS模块、电子罗盘、电机驱动模块以及霍尔编码器。树莓派4B外围连接高清摄像头与4G通信模块。

2.2 控制器模块

无人艇端选用了STM32F103ZET6单片机和树莓派4B两块控制器,并通过串口进行数据通信。STM32单片机用来采集各传感器数据以及对无人艇的运动进行控制,其采用32位内核处理器,芯片采用最佳代码密度,具有可预见的运行时间和改进的调试功能,能够在低功耗下实现高性能[21],满足本系统的基本需求。树莓派4B搭载了1.5 GHz四核ARM Cortex-A72处理器[22],高度的集成化令其在拥有强大的操作系统与丰富的接口资源的同时仅有信用卡般的大小[23]。在本系统中树莓派4B主要用于STM32单片机与服务器端上位机之间数据和指令的传输,由于其计算性能满足图像处理的需求,因此其还负责基于OpenCV库对图像信息进行采集和处理。

2.3 温度传感器

温度对于水产养殖对象的生长状况影响极大,因此本系统采用了DS18B20温度传感器来采集水体温度,该传感器是一种单总线数字温度传感器,具有体积小、精度高、抗干扰能力强的优点[24-26],其能在不影响无人艇航行的情况下工作,且满足水产养殖所需的温度测量范围。在本系统中,STM32单片机通过单总线协议读取传感器采集到的温度值,传感器外围电路如图3所示。

2.4 浊度传感器

为了测量水体的浑浊程度,避免浑浊的水体干扰养殖对象活动,本系统采用了TSW-30浊度传感器。该传感器利用光学原理,通过溶液中的透光率和散射率来综合判断浊度情况,并将输出的电流信号转换为电压信号。STM32单片机通过ADC1的通道10采样电压信号来读取水体浊度数据,传感器电路如图4所示。

图4 浊度传感器电路

2.5 pH传感器

水体pH是反映水质是否适合养殖对象生存的重要指标,因此本系统采用E-201-C型pH复合电极传感器来对pH进行采集。该电极是玻璃电极和参比电极组合在一起的塑壳可充式复合电极,用于测量水中的pH。传感器输出的微弱电压信号经过可调增益的运算放大电路进行信号放大,STM32单片机通过ADC1的通道5采集放大后的信号,经过式(1)可以计算得出水体的pH大小[27]。

(1)

式中:P为水体酸碱值;Vadc为AD通道采集的模拟电压值。

模块电路如图5所示。

图5 pH传感器电路

2.6 GPS模块

选用L76X GPS定位模块来对无人艇进行定位。其是一款具有GNSS(全球导航卫星系统)功能的模块,支持GPS、BD2和QZSS等定位系统,具有体积小、功耗低、定位快等优点。GPS模块并不播发信号,属于被动定位。其终端可以通过计算从信号发射与接收到GPS卫星信号的时间差,并且结合信号传输速度来获取位置和距离信息[28]。在本系统中,STM32单片机通过串口2与GPS定位模块进行通讯,以此来获取无人艇的GPS定位信息,其接口电路如图6所示。

图6 GPS模块电路接口图

2.7 电子罗盘

为获取无人艇当前位置朝向,本系统选用高分辨率、高集成、低成本的HMC5883L磁阻传感器进行采集。该传感器使用超低功耗微控制器MSP430G2553作为磁场数据采集、滤波和传输的主控芯片,并采用各向异性磁阻技术,具有较好的可靠性和较高的灵敏度[29]。在本系统中,该传感器通过IIC协议将采集的数据传输给STM32单片机,并由STM32单片机计算出当前位置的方位角数据,模块的外围电路如图7所示。

图7 HMC5883L传感器及外围电路

2.8 电机驱动模块

选用的无人艇为双体船型,因此选用L298N作为电机驱动模块,其可以同时驱动2个直流电机带动左右螺旋桨转动。该模块是一种高性能脉宽调制功率放大器,具有体积小、驱动能力强等特点[30]。当使能端ENA和ENB为高电平时,其所对应的通道才能对电机进行控制,否则电机处于停止状态。电机的转动方向则由IN1、IN2、IN3、IN4端口输入的电平高低来决定,其外围电路如图8所示。

图8 L298N传感器及外围电路

2.9 4G通信模块

本系统选用的4G通信模块型号为SIM7600CE 4G HAT,其搭载了SIM7600CE集成芯片。当模块工作在LTE Cat-4频段时,最大上行速率为50 Mbps,最大下行速率为150 Mbps。模块与树莓派4B通过USB数据线连接,通过插入开通GPRS联网功能的SIM卡并在树莓派4B上完成网络通信配置,树莓派4B便可利用TCP协议与上位机软件建立通信连接。

3 系统软件设计

3.1 STM32单片机程序设计

STM32单片机程序流程图如图9所示。

图9 STM32单片机程序流程图

程序使用RealView MDK软件作为开发平台,并采用C语言作为开发语言以提高程序的运行效率。程序首先进行系统资源的分配与各模块的初始化,并检查模块的各项功能,直至设备能正常工作;然后通过GPS和电子罗盘获取自身的位置数据,并打包发送给树莓派4B;通过解析接收到的树莓派4B传递过来的上位机指令来利用PID算法调节两个螺旋桨的转速,使无人艇完成前进、后退、左转、右转或者制动的动作。当无人艇到达目标位置时,程序开始读取各传感器的数值,并将这些数据打包发送给树莓派4B。整项任务结束后程序进入停止状态,否则会前往下一个目标点进行水体环境的采集。

3.2 树莓派4B程序设计

树莓派4B程序的任务处理流程如图10所示。

图10 树莓派4B程序流程图

程序使用Spyder软件进行开发,开发环境为树莓派官方系统,考虑到树莓派程序所要处理的功能以及开发难易程度,程序采用Python作为开发语言,配合各种功能强大的Python第三方类库,使得树莓派程序能用更紧凑的代码实现更加复杂的功能。程序首先进行系统的初始化,然后尝试连接上位机,直至连接成功;其次解析接收到的上位机指令,将解析出来的上位机指令发送给单片机,并将从串口接收到的单片机数据上传给上位机,判断摄像头工作状态,若摄像头开启则同时发送图像数据,否则尝试打开摄像头并上传图像数据。整个流程循环执行,直至任务结束。

3.3 上位机软件设计

上位机软件使用C#编程语言,基于.NET Framework框架开发,主要包括用户登录与注册、数据显示与路径设置、数据库显示、图像显示与手动控制等功能模块。

1)用户登录与注册界面。养殖人员通过登录界面输入账号和密码,软件会将输入信息与数据库中存储的账户信息进行遍历比对,当信息匹配,则登录成功,否则提示重新输入。若数据库中不存在该账户信息,养殖人员可以通过注册界面进行账号注册。

2) 数据显示与路径设置界面。界面如图11所示,主要功能是对采集到的各项数据进行可视化显示并能对无人艇的航行路径进行设置。根据设计要求,通过TCP协议接收数据信息,将pH、水体浊度、水体温度以动态折线图的形式展示,横纵坐标分别为时间以及具体数值。将无人艇的方位角以仪表盘的形式动态变化,使其更加直观。界面内嵌入百度地图,养殖人员可以直接在地图上手动标记所需要监测的地点,软件能够生成相应路径并发送指令给无人艇。

图11 数据显示与路径设置界面

3)数据库显示界面。为了方便养殖人员对收集到的数据进行备份和分析,软件将采集到的数据信息保存到MySQL数据库中,并且界面上提供了查询功能,养殖人员可以设置具体的日期来查询相应时间段的水体环境数据与无人艇运行状态数据。

4)图像显示与手动控制界面。通过显示无人艇上摄像头所采集到的图像画面,辅助养殖人员对无人艇进行手动控制,并提供电机转速调节功能,便于控制无人艇的航行速度。

4 测试与分析

4.1 试验方案设计

为验证各项系统功能的可行性,依据上述对整个系统的软硬件设计,搭建了整套水质监测无人艇系统,无人艇内部结构如图12所示,并在江苏科技大学长山校区的海韵湖上进行了测试,如图13所示。通过上位机软件对目标点进行标记,无人艇前往目标点进行水质测量,并将参数发送给上位机软件进行可视化显示与保存。功能测试主要包括2部分:无人艇自主航行功能;目标水域水质动态监测功能。

图12 内部结构图

图13 无人艇功能测试现场

4.2 功能试验

4.2.1 无人艇自主航行功能

通过TCP协议建立上位机软件与无人艇的通信连接,利用百度地图界面依次设置5个坐标点。上位机软件比对目标点与无人艇当前的位置信息进而控制无人艇航行运动,使其按顺序依次到达设置的目标点进行水质测量,并将水质与无人艇位置状态数据实时传输到上位机软件中。上位机软件显示的自主航行测试结果如图14a所示,坐标点1和5分别是无人艇航行的起点和终点,坐标点2、3和4是需要进行水质监测的3个目标点。图中带箭头的粗实线为软件生成的无人艇目标方向和路径,细实线则是无人艇所经过的实际航行轨迹。从图14b中可以看出,无人艇按照预期设置的目标点位置和目标顺序,较为准确地到达了目标点区域,受到风浪等外界因素影响其行径轨迹与目标路径有一定的误差,具体数据如表1所示。表1为目标点与实际点在百度坐标系下的经纬度坐标以及位置误差,从表1中可得无人艇实际到达的区域位置与预设位置误差最大为4.3 m,最小为3.4 m。由于在实际应用过程中,水体环境不会在小范围内发生突变,因此该航行精度满足水产养殖过程中水质监测所需的位置精度要求,经过轨迹路线与具体数据比对,无人艇实际航行效果符合系统的预期需求。

表1 目标点与实际点对比

图14 无人艇自主航行轨迹

4.2.2 目标水域水质动态监测功能

无人艇在到达设定的目标点后获取了该区域的水体环境数据,这些数据通过4G通信模块发送给上位机软件,上位机软件在显示这些数据的同时也将其存储至服务器上搭建的MySQL数据库中,方便养殖人员后期对数据进行查询。将异常数据剔除后,对剩余数据进行均值化处理,得到的测量数据如表2所示。表2中记录了13:00、13:30、14:00、14:30、15:00这5个时刻对3个目标点进行水质采集所得到的浊度、pH、温度数据以及测量用时。由测量结果可以直观地获取测试水域的水质状态,该水域水体温度大小在当前季节正常范围内;pH在7.0~7.5之间,属于弱碱性水;由于该水域受到生物活动等外界因素影响,浊度在100~130 NTU内波动,但仍在正常范围内;水质测量平均用时在7 min 28 s左右,而传统人工检测方式在此场地需要20 min甚至更长,与人工方式相比本系统大大缩减了检测时间,提高了作业效率。该项测试验证了水质监测无人艇上搭载的多种传感器能够对养殖水域的目标点进行实时快速测量。

表2 测量结果

以上测试结果表明,本研究所设计的水质监测无人艇系统整体运行稳定。与刘传领等[11]和Tolentino等[13]中需要固定监测节点来进行水质测量的方式相比,本系统能够动态地覆盖广阔的养殖水域,有效提高了水产养殖的智能化程度和水质监测的工作效率。与江先亮等[17]中远程控制无人艇的方式相比,虽然本系统控制精度偏大,但仍满足水质监测的需求,并且本系统在控制距离上更具优势。经过实际场地的运行测试,本研究所设计的水质监测无人艇系统能够满足水产养殖过程中对于水质监测作业的总体需求。

5 结论

以STM32单片机与树莓派4B为核心,结合多种传感器,通过上位机软件控制无人艇实现对养殖水域水体环境的实时动态采集与数据查看。试验表明,该系统各项功能运行稳定,与目前常用的水质监测方法相比自动化程度更高,在监测效率与实时性上具有显著优势,适用于对养殖水域水质进行动态实时监测。在此研究基础上,未来将在系统运行稳定性与控制精确性上进行优化。

猜你喜欢
机软件树莓上位
基于树莓派的骑行智能头盔设计
特斯拉 风云之老阿姨上位
基于树莓派的远程家居控制系统的设计
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
道岔监测系统上位机软件设计
基于正交试验法的北斗用户机软件测试用例设计
响应面法优化红树莓酒发酵工艺
PCI-e高速数据采集卡的驱动与上位机软件设计
以新思路促推现代农业上位