喻 盈,文小玲,张 川
(武汉工程大学 电气信息学院,武汉430205)
水质监测对保护水资源和促进水产养殖都具有十分重要的意义。 传统的水质监测方法有人工现定点采样和建立自动监测站点,但不能全面反映整个水域的水质状况。 随着嵌入式和无线通信网络的快速发展,水质监测技术也逐渐自动化、智能化和网络化[1]。 仿生机器鱼将仿生学结合到水质监测领域,使监测设备模拟鱼类游动,体积小,相较于使用螺旋桨推进的监测设备更灵活高效、低污染、无扰动,能在不同的水域环境中进行水质监测。 本文设计了一种基于STM32 的水质监测仿生机器鱼,鱼体搭载各种传感器和控制器,采用双关节二自由度尾鳍控制游动,在目标水域进行自动巡航与避障,将采集的水质参数通过无线传感器网络传输到上位机,完成对水质的实时监测和管理。
基于STM32 的水质监测仿生机器鱼总体结构如图1所示。
图1 水质监测仿生机器鱼总体结构框图Fig.1 Overall structure block diagram of biomimetic robot fish for water quality monitoring
仿生机器鱼主要由机器鱼实体模型、STM32 控制模块、水质传感器模块、机器鱼运动模块、红外避障模块、GPS 定位模块、Lora 无线模块和电源模块等几部分组成。 规划目标监测点后,仿生机器鱼通过GPS 定位技术确定与目标点之间的方位,红外传感器检测周围障碍物,由STM32 微控制器驱动舵机和水泵使机器鱼前进转向、上浮下潜,到达目标点后水质传感器模块进行采样,将检测的水质数据使用Lora 无线通信模块传输到上位机进行显示。
仿生机器鱼在水下工作必须具有良好的稳定性,因此将机器鱼的重心维持在浮心下方,并保证机器鱼的密封防水性。 自然界中大部分鱼类包括鳗鲡科、鲹科、鲔科等鱼类[2],借助鱼体和尾鳍的摆动进行推进,这种方式称之为BCF(body and/or caudal fin)推进模式。所设计的仿生机器鱼采用双关节尾鳍,使用2 个舵机控制尾部摆动,与鱼体协调来实现巡游和转向,比单关节尾鳍的机器鱼游动更灵活,转向角度更大。 仿生机器鱼的机械结构如图2所示。
图2 仿生机器鱼机械结构Fig.2 Mechanical structure of biomimetic robot fish
仿生机器鱼控制模块采用的主控芯片为STM32F103ZET6,是意法半导体公司推出的基于ARM Cortex-M3 内核的低功耗、低成本和高性能MCU,主频可达72 MHz,存储器最高具有512 kB Flash 和64 kB SRAM,内置3个12位A/D 转换器,2个12位D/A转换器,12 通道DMA和8个定时器,同时拥有13 个通信接口(包括I2C,USART,SPI,CAN,USB 以及SDIO),兼容各种外围设备,在该系统中可用于舵机控制PWM 输出、水质传感器数据485 通信、LCD 显示等,完全满足仿生机器鱼的控制要求。
水质数据采集模块采用八合一多参数传感器,可同时检测pH 值、溶解氧、温度、电导率、浊度、盐度、ORP(氧化还原电位)、氨氮共8 种参数。 传感器采用RS-485 通讯接口与STM32 进行串口通信,需要MAX485 作为转换芯片,芯片原理如图3所示。
图3 MAX485 芯片原理Fig.3 MAX485 chip schematic
RS-485 是一种半双工的异步串行通信方式,不能同时进行数据的收发,因此需要控制MAX485 芯片的收发工作状态。当RE 引脚为低电平时,芯片处于接收状态,接收来自传感器采集的数据;当DE 为高电平时,芯片处于发送状态,向传感器发送采集指令。
GPS 定位模块采用u-blox 公司的NEO-6M 模组方案,其体积小、高性能、低功耗,搜星能力强,定位精度高,可以直接通过串口向单片机系统输出GPS 定位信息。 这些信息采用NMEA-0183 标准协议,输出常见格式为“GGA”,包含了经纬度、海拔、时间、速度等参数。 模块工作电压为3.3~5 V,含有EEPROM,掉电后仍可保存GPS 定位信息。
组成局域网的无线传输技术有WiFi,ZigBee,蓝牙,等;组成广域网的有2G,3G,4G,等。在该系统中,将水质数据从仿生机器鱼传输到上位机采用Lora 无线通信技术,其工作频段为(410~441)MHz,最大发射功率20 dBm,最大通信距离3000 m,为一种远距离、低功耗、低成本的无线传输技术,可以实现点对点、点对多传输。
Lora 无线模块工作电压为3.3~5 V,通过串口与STM32 传输数据,改变模块的地址和信道,可以实现点对点之间的定向传输。
仿生机器鱼在巡游过程中可分为直线游动、转向游动和上浮下潜。
游动时借助双关节二自由度尾鳍的摆动来实现推进,鱼体和尾鳍由2 个舵机单元连接而成。 在直线游动过程中,单个关节在侧方向上摆动的幅度相等,为正弦运动;第2 个关节为相位滞后的正弦运动。 尾部摆动的运动学模型如图4所示。
图4 尾部摆动运动学模型Fig.4 Kinematic model of tail swing
忽略环境因素的影响,对仿生机器鱼做运动行为分析。 其数学模型为
式中:Ka为振幅系数,表示关节振幅与最大振幅的比值;Kb为偏斜系数,表示关节摆动对称轴与鱼体轴的偏斜程度;A1m为第1 个关节的振幅;A2m为第2个关节与第1 个关节之间的振幅;f 为摆动频率;φ为第2 个关节与第1 个关节之间的相位差。
根据对鱼类的实际观察,直线游动时关节角度α 和β 的最佳角度为20°,周期约为0.25 s[3]。
转向游动时,控制尾部偏向左侧,则机器鱼依靠惯性进行左转向;尾部偏向右侧,机器鱼进行右转向。
仿生机器鱼在游动的过程中同样会模仿鱼类进行上浮下潜,常用的方法有改变重力法、改变重心法、鱼鳔法和鱼鳍法[4]。 该系统采用改变重力法,在鱼体内嵌入水箱,由控制系统驱动继电器实现水泵的开关,进行抽水和排水控制水箱储水量,改变机器鱼的重力,进而实现上浮下潜。
为实现自动化水质监测,仿生机器鱼在目标水域使用GPS 定位模块进行自主导航,监测任务完成后自动返航。 首先,以正北和正东方向建立平面二维坐标系,如图5所示。
图5 二维坐标下仿生机器鱼的自主导航路线Fig.5 Autonomous navigation route of biomimetic robot fish in two-dimensional coordinates
由于GPS 输出的是经纬度坐标,因此利用墨卡托投影变换将经纬度坐标(L,B)转换为平面坐标(x,y)[5]。 其转换过程如下:
其中
式中:L0为原点经度;B0为基准纬度;e 为第一偏心率;a 为椭球体长半轴。
用户设定需要监测的目标位置经纬度,平面坐标为(x,y),机器鱼获取起始位置坐标(x1,y1),计算出向目标位置巡游的航向角度为
游动过程中实时获取当前定位坐标,计算出当前位置距目标位置的航向角度,与起始位置的航向角度θ 相对比,并调整机器鱼的游动方向。 当仿生机器鱼游动到(x2,y2)位置时,θ1<θ,控制系统驱动机器鱼向右调整游动方向;当位于(x3,y3)位置时,θ2>θ,向左调整游动方向,直至达到目标位置。为避免机器鱼频繁修正航向角度,设置可允许的角度偏差为5°,当θ-θ1≤5°或θ2-θ≤5°时机器鱼不做方向调整。
水下的环境复杂且多变,仿生机器鱼在巡游的同时必须具备自主避障的能力。 机器鱼头部搭载红外传感器,通过发射和接收反射回来的红外线来判断前方有无障碍物,传感器最大检测距离为30 cm,检测角度为35°。 由于单个传感器具有局限性,故在此使用了5 个红外传感器,分别为鱼体前侧的M,左前侧的L,右前侧的R,上侧的S1 和下侧的S2。其空间分布如图6所示,全方位检测机器鱼运动路径上存在的障碍物。
图6 红外传感器网络分布Fig.6 Infrared sensor network distribution
红外传感器检测到障碍物时,会输出低电平信号,控制系统接收到信号后进行相应避障决策。 仿生机器鱼在游动过程中,首先判断红外传感器M,L,R 的信号,当检测到鱼体左前侧、右前侧都存在障碍物而无法前行时,再利用传感器S1 和S2 来检测机器鱼的上侧、下侧有无障碍物,没有则上浮下潜后继续前行。 其避障策略见表1。
表1 仿生机器鱼的避障策略Tab.1 Obstacle avoidance strategy of biomimetic robot fish
系统软件由水质数据采集、无线传输、GPS 自主导航与红外避障等几部分组成,主程序流程如图7所示。
图7 主程序流程Fig.7 Main program flow chart
系统初始化完成后,计算起始位置与目标位置的航向角度。 在巡游的过程中实施避障,并调整当前航向角度,直至到达目标位置,向水质传感器发出采集指令,控制系统获取目标点水质数据后通过Lora 无线模块远程传输到上位机进行显示。
上位机可视化界面使用VC++6.0 软件开发,实现串口参数设置、用户信息管理,对远程传输的水质数据进行存储、显示和预警,提供历史数据查询。上位机可视化界面如图8所示。
图8 上位机监测软件界面Fig.8 PC monitoring software interface
所设计的仿生机器鱼尾部,采用双关节二自由度尾鳍作为推进和转向系统;以STM32 为主控芯片进行数据的通信与运动控制;通过GPS 定位技术实现水下自主定点导航,利用红外传感器网络多方位检测障碍物进行避障;建立Lora 无线通信网络传输水质数据。 用户可在上位机软件查看水质数据,加强对目标水域的管理,实现水质的自动化监测。