崔秀芳,李培培,石福孝,王宏宇,陈刚
(上海海洋大学 工程学院,上海 201306)
北斗卫星导航系统(BDS)是我国自主建设、独立运行的全球卫星导航系统(GNSS),2019年11月5日01时43分第四十九颗北斗导航卫星的成功发射,标志着BDS全球组网新时代的开启.BDS以它特有的双向短报文通信功能的优势逐渐广泛应用在不同领域[1].
仿生机器鱼在水下具有与其他推进器的水下机器人更加优良的游动能力和强大的环境适应能力[2],针对水下作业,仿生机器鱼成为研究热点[3].现在水环境保护问题日益受到重视,环境保护关键要对水环境状况做评估.传统水质检测主要有通过人亲自到目的地采集水质样本进行检测[4]和通过远程监控中心和串行通信方式进行检测的方式,以上方式存在布线困难、投入成本较高、水下采集的数据难以实时上传到上位机等缺点[5].
本文基于BDS设计了一种可用于水质检测的仿生鱼控制系统,基于BDS特有的短报文通信功能来实现远程实时监测水质的目的.该系统有实时性好、便携、投入成本低、节省人力等优点.
1系统总体设计
基于BDS的水质监测仿生鱼由于要对不同采样点和不同深度的水样进行采集,所以需要其可以完成水下自由游动,能够准确地控制行进速度和转向角度,实现安全避障和定深作业.然后采集水质信息并将水质检测的数据和采样点位置和采集时间信息通过BDS传送给上位机显示,以供工作人员查看.
仿生鱼控制系统总体结构如图1所示,控制系统主要由主控制器、数据信息采集模块、BDS用户端机、舵机控制模块、电源模块组成.整个系统的核心部分为STM32主控制器,处理采集到的障碍物和深度信息用于自身的运动控制,处理采集到的水质信息通过RS232串口线传送给BDS模块,在仿生鱼上浮露出水面时,BDS模块将水质检测数据和时间位置信息一并通过BDS卫星传输到远程监控中心进行显示.
图1 系统总体结构图
根据功能需求,设计仿生鱼控制系统的硬件部分,该系统主要是由ARM微处理器、水质检测模块、BDS模块、红外测距传感器、深度传感器、舵机模块、电源等组成,硬件设计的模块组成框图如图2所示.
图2 仿生鱼硬件组成框图
该系统主控制器选用ALIENTEK探索者STM32F4开发板,如图3所示.该开发板是基于ARM Cortex-M4内核的STM32F407ZGT6处理器,该芯片有112个通用I/O口,由P2和P12端口的6个排针组成的多功能端口可以实现ADC采集、DAC输出和PWM DAC输出,可以满足系统使用.自带的RS232可以连接BDS模块进行串口通信.
图3 STM32F4开发板
BDS模块选用深圳市容辉信息科技有限公司研发和设计的BDS短报文开发板,该BDS核心板带RD模块和定位模块,RD模块性能高短报文的通信成功率高,定位模块集成了UBLOX8代芯片、SAW、LNA,定位精度高,不仅支持BDS定位,还支持GPS和GLONASS定位.而且该BDS模块具备 TVS 防护的电源输入和ESD防护卡座接口,安全性高.使用时,BDS模块的RX和TX输入输出接口,与主控制器采用RS232串口通信,波特率默认为115200,将天线的RX与BDS模块的RX相连,天线的TX与BDS模块的TX相连天线的RNSS电缆连接BDS模块的RNSS引脚即可,图4所示为BDS模块核心板和BDS天线.RD 模块遵循 RDSS 2.1协议[6].
图4 BDS模块核心板(左)和天线(右)
水质检测模块包括温度传感器和pH值检测传感器.pH值检测传感器模块实物图如图5所示,工作电压为5 V,检测范围为pH0~pH14,pH值检测传感器模块的串口输出RX、TX可直接与主控制器自带USB串口连接进行通信.BNC接口用来连接pH值电极,带有DS18B20温度控制器接口.DS18B20工作电压为3~5.5 V,测温范围:-55℃~125℃.
图5 pH值检测传感器模块
红外测距传感器模块采用红外测距传感器GP2Y0A21YK0,引脚VCC接主控制器5 V电压输出,引脚GND接地线,Vout模拟电压输出引脚接主控制器A/D转换通道的引脚.
深度传感器选用MEAS瑞士分公司生产的MS5803-14BA微型压力传感器,本系统采用IIC通信方式与主控制器进行通信.
选择LSC系列控制提供多路PWM信号输出控制舵机转动,控制板采用串口通信,通信波特率为9600,3.3 V供电.舵机选用为9 g舵机,工作电压为4.8 V[7].
本系统软件设计在Keil μVision软件中使用C语言对STM32控制器进行编程[8],通过USB串口将程序下载到STM32控制器里.首先进行系统初始化,包括和各个模块初始化,然后配置主控制器各个端口各个模块.通过控制PWM占空比使舵机转动控制仿生鱼的前进、转向、下潜等动作,到达指定地点利用深度水质检测模块并采集数据,采集结束仿生鱼上浮露出水面,BDS模块与上位机进行通信,图6是下位机的程序流程图.
图6 下位机的程序流程图
系统设计采用模块化编程,各模块程序编写完成后,在main函数中调用即可.以舵机模块为例,使用C语言编写包括程序初始化、舵机ID写入和舵机转动等程序,以下是舵机控制部分程序:
{
SystemInit();
delay-init(72);
NVIC-PriorityGroupConfig(NVIC-PriorityGroup-2);
uartInit(115200);
while (1)
{
LobotSerialServoMove(ID1, 100, 500);
LobotSerialServoMove(ID2, 300, 500);
delay-ms(1000);
…
上述为初始化程序,包括系统时钟初始化、延时初始化和串口初始化,以及优先级设置和舵机转动部分程序.
仿生鱼系统中BDS通信模块流程图如图7所示,BDS模块初始化为串口初始化,设置波特率,字长,奇偶校验等参数,调用函数USART-Init,命令符“USART-Init(USART1,&USART-InitStructrure)”来实现串口初始化.串口初始化后,主控制器STM32给RD模块发送 “$CCDWA,0000000,V,1,L,,0,,,0*65 ” 指令请求定位,BDS短报文2.1协议规定收发语句皆以符号“$”开始,以英文字符“,”和“*”为分隔符,以回车换行符 结束.如果RD模块成功执行则给STM32回复指令“$BDFKI,DWA,Y,Y,0,0060*0A ”,如果失败则回复“$BDFKI,DWA,N,N,0,0060*0A ”,随后卫星就会将定位数据传送给RD模块.
定位数据经串口传输至主控制器,主控制器将水质监测模块检测到的数据和定位数据按照BDS短报文2.1协议处理,协议规定电文首字母固定为“A4”,英文用ASCII码表示,汉字用unicode码表示,发送语句“$CCTXA,上位机ID,1,2,A4电文内容7*7F”给RD模块,然后RD模块会回复主控单元指令是否成功执行,若成功回复“$BDFKI,TXA,Y,Y,0,0060*15 ”,失败回复“$BDFKI,TXA,N,N,0,0060*15 ”.几秒后,卫星就会转发信息至上位机的RD模块.
图7 BDS通信模块软件流程图
根据系统需求,采用Lab VIEW软件对系统上位机进行设计,Lab VIEW是主要用于仪器控制的编程软件[9],采用Lab VIEW编程设计的上位机界面可以显示BDS卫星传输过来的仿生鱼位置、水质检测的数据远程监控部分界面如图8所示.先初始化,然后设置深度值,使得仿生鱼可以到达指定深度作业,设置仿生鱼到达指定的深度后静止的时间,该时间段仿生鱼进行水质检测.设置好之后配置串口通信接收BDS模块发来数据,包括:时间、位置、深度、水样温度值和pH值.
图8 远程监控部分界面
为验证该系统是否可以运行,选取上海海洋大学里湖泊某两点位置2 m和5 m的深度进行试验.打开Lab VIEW,系统上电,在监控界面上可观测到位置时间和水质等信息如表1所示.由表中数据看信息与实际相符合,误差在可接受范围,系统运行稳定.观察仿生鱼在指定地点下潜过程,由于水流速和自身抖动的影响,会出现与原始位置略微偏移现象,但是偏差程度不至于影响检测结果.仿生鱼上浮向上位机上传数据时间与上位机接收到数据时间略有差距,是因为BDS通信有略微延迟.
表1 系统测试实验数据
本文基于STM32和BDS模块设计用来水质检测的仿生鱼控制系统,借助BDS系统实时定位和短报文通信功能实现仿生鱼与远程监控端的通信,工作人员可以借助PC机或者智能手机等查看水质信息.该系统具有方便携带、投入成本较低、水下采集的数据可以实时上传到上位机等优点,下一阶段计划在仿生鱼控制系统上增设其他功能模块,使其代替人在水中完成更多工作,具有良好的扩展性和实用性.