崔秀芳,李培培,石福孝,王宏宇,陳剛
(上海海洋大學(xué) 工程學(xué)院,上海 201306)
北斗衛(wèi)星導(dǎo)航系統(tǒng)(BDS)是我國自主建設(shè)、獨立運行的全球衛(wèi)星導(dǎo)航系統(tǒng)(GNSS),2019年11月5日01時43分第四十九顆北斗導(dǎo)航衛(wèi)星的成功發(fā)射,標(biāo)志著BDS全球組網(wǎng)新時代的開啟.BDS以它特有的雙向短報文通信功能的優(yōu)勢逐漸廣泛應(yīng)用在不同領(lǐng)域[1].
仿生機器魚在水下具有與其他推進器的水下機器人更加優(yōu)良的游動能力和強大的環(huán)境適應(yīng)能力[2],針對水下作業(yè),仿生機器魚成為研究熱點[3].現(xiàn)在水環(huán)境保護問題日益受到重視,環(huán)境保護關(guān)鍵要對水環(huán)境狀況做評估.傳統(tǒng)水質(zhì)檢測主要有通過人親自到目的地采集水質(zhì)樣本進行檢測[4]和通過遠程監(jiān)控中心和串行通信方式進行檢測的方式,以上方式存在布線困難、投入成本較高、水下采集的數(shù)據(jù)難以實時上傳到上位機等缺點[5].
本文基于BDS設(shè)計了一種可用于水質(zhì)檢測的仿生魚控制系統(tǒng),基于BDS特有的短報文通信功能來實現(xiàn)遠程實時監(jiān)測水質(zhì)的目的.該系統(tǒng)有實時性好、便攜、投入成本低、節(jié)省人力等優(yōu)點.
1系統(tǒng)總體設(shè)計
基于BDS的水質(zhì)監(jiān)測仿生魚由于要對不同采樣點和不同深度的水樣進行采集,所以需要其可以完成水下自由游動,能夠準(zhǔn)確地控制行進速度和轉(zhuǎn)向角度,實現(xiàn)安全避障和定深作業(yè).然后采集水質(zhì)信息并將水質(zhì)檢測的數(shù)據(jù)和采樣點位置和采集時間信息通過BDS傳送給上位機顯示,以供工作人員查看.
仿生魚控制系統(tǒng)總體結(jié)構(gòu)如圖1所示,控制系統(tǒng)主要由主控制器、數(shù)據(jù)信息采集模塊、BDS用戶端機、舵機控制模塊、電源模塊組成.整個系統(tǒng)的核心部分為STM32主控制器,處理采集到的障礙物和深度信息用于自身的運動控制,處理采集到的水質(zhì)信息通過RS232串口線傳送給BDS模塊,在仿生魚上浮露出水面時,BDS模塊將水質(zhì)檢測數(shù)據(jù)和時間位置信息一并通過BDS衛(wèi)星傳輸?shù)竭h程監(jiān)控中心進行顯示.
圖1 系統(tǒng)總體結(jié)構(gòu)圖
根據(jù)功能需求,設(shè)計仿生魚控制系統(tǒng)的硬件部分,該系統(tǒng)主要是由ARM微處理器、水質(zhì)檢測模塊、BDS模塊、紅外測距傳感器、深度傳感器、舵機模塊、電源等組成,硬件設(shè)計的模塊組成框圖如圖2所示.
圖2 仿生魚硬件組成框圖
該系統(tǒng)主控制器選用ALIENTEK探索者STM32F4開發(fā)板,如圖3所示.該開發(fā)板是基于ARM Cortex-M4內(nèi)核的STM32F407ZGT6處理器,該芯片有112個通用I/O口,由P2和P12端口的6個排針組成的多功能端口可以實現(xiàn)ADC采集、DAC輸出和PWM DAC輸出,可以滿足系統(tǒng)使用.自帶的RS232可以連接BDS模塊進行串口通信.
圖3 STM32F4開發(fā)板
BDS模塊選用深圳市容輝信息科技有限公司研發(fā)和設(shè)計的BDS短報文開發(fā)板,該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協(xié)議[6].
圖4 BDS模塊核心板(左)和天線(右)
水質(zhì)檢測模塊包括溫度傳感器和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轉(zhuǎn)換通道的引腳.
深度傳感器選用MEAS瑞士分公司生產(chǎn)的MS5803-14BA微型壓力傳感器,本系統(tǒng)采用IIC通信方式與主控制器進行通信.
選擇LSC系列控制提供多路PWM信號輸出控制舵機轉(zhuǎn)動,控制板采用串口通信,通信波特率為9600,3.3 V供電.舵機選用為9 g舵機,工作電壓為4.8 V[7].
本系統(tǒng)軟件設(shè)計在Keil μVision軟件中使用C語言對STM32控制器進行編程[8],通過USB串口將程序下載到STM32控制器里.首先進行系統(tǒng)初始化,包括和各個模塊初始化,然后配置主控制器各個端口各個模塊.通過控制PWM占空比使舵機轉(zhuǎn)動控制仿生魚的前進、轉(zhuǎn)向、下潛等動作,到達指定地點利用深度水質(zhì)檢測模塊并采集數(shù)據(jù),采集結(jié)束仿生魚上浮露出水面,BDS模塊與上位機進行通信,圖6是下位機的程序流程圖.
圖6 下位機的程序流程圖
系統(tǒng)設(shè)計采用模塊化編程,各模塊程序編寫完成后,在main函數(shù)中調(diào)用即可.以舵機模塊為例,使用C語言編寫包括程序初始化、舵機ID寫入和舵機轉(zhuǎn)動等程序,以下是舵機控制部分程序:
{
SystemInit();
delay-init(72);
NVIC-PriorityGroupConfig(NVIC-PriorityGroup-2);
uartInit(115200);
while (1)
{
LobotSerialServoMove(ID1, 100, 500);
LobotSerialServoMove(ID2, 300, 500);
delay-ms(1000);
…
上述為初始化程序,包括系統(tǒng)時鐘初始化、延時初始化和串口初始化,以及優(yōu)先級設(shè)置和舵機轉(zhuǎn)動部分程序.
仿生魚系統(tǒng)中BDS通信模塊流程圖如圖7所示,BDS模塊初始化為串口初始化,設(shè)置波特率,字長,奇偶校驗等參數(shù),調(diào)用函數(shù)USART-Init,命令符“USART-Init(USART1,&USART-InitStructrure)”來實現(xiàn)串口初始化.串口初始化后,主控制器STM32給RD模塊發(fā)送 “$CCDWA,0000000,V,1,L,,0,,,0*65 ” 指令請求定位,BDS短報文2.1協(xié)議規(guī)定收發(fā)語句皆以符號“$”開始,以英文字符“,”和“*”為分隔符,以回車換行符 結(jié)束.如果RD模塊成功執(zhí)行則給STM32回復(fù)指令“$BDFKI,DWA,Y,Y,0,0060*0A ”,如果失敗則回復(fù)“$BDFKI,DWA,N,N,0,0060*0A ”,隨后衛(wèi)星就會將定位數(shù)據(jù)傳送給RD模塊.
定位數(shù)據(jù)經(jīng)串口傳輸至主控制器,主控制器將水質(zhì)監(jiān)測模塊檢測到的數(shù)據(jù)和定位數(shù)據(jù)按照BDS短報文2.1協(xié)議處理,協(xié)議規(guī)定電文首字母固定為“A4”,英文用ASCII碼表示,漢字用unicode碼表示,發(fā)送語句“$CCTXA,上位機ID,1,2,A4電文內(nèi)容7*7F”給RD模塊,然后RD模塊會回復(fù)主控單元指令是否成功執(zhí)行,若成功回復(fù)“$BDFKI,TXA,Y,Y,0,0060*15 ”,失敗回復(fù)“$BDFKI,TXA,N,N,0,0060*15 ”.幾秒后,衛(wèi)星就會轉(zhuǎn)發(fā)信息至上位機的RD模塊.
圖7 BDS通信模塊軟件流程圖
根據(jù)系統(tǒng)需求,采用Lab VIEW軟件對系統(tǒng)上位機進行設(shè)計,Lab VIEW是主要用于儀器控制的編程軟件[9],采用Lab VIEW編程設(shè)計的上位機界面可以顯示BDS衛(wèi)星傳輸過來的仿生魚位置、水質(zhì)檢測的數(shù)據(jù)遠程監(jiān)控部分界面如圖8所示.先初始化,然后設(shè)置深度值,使得仿生魚可以到達指定深度作業(yè),設(shè)置仿生魚到達指定的深度后靜止的時間,該時間段仿生魚進行水質(zhì)檢測.設(shè)置好之后配置串口通信接收BDS模塊發(fā)來數(shù)據(jù),包括:時間、位置、深度、水樣溫度值和pH值.
圖8 遠程監(jiān)控部分界面
為驗證該系統(tǒng)是否可以運行,選取上海海洋大學(xué)里湖泊某兩點位置2 m和5 m的深度進行試驗.打開Lab VIEW,系統(tǒng)上電,在監(jiān)控界面上可觀測到位置時間和水質(zhì)等信息如表1所示.由表中數(shù)據(jù)看信息與實際相符合,誤差在可接受范圍,系統(tǒng)運行穩(wěn)定.觀察仿生魚在指定地點下潛過程,由于水流速和自身抖動的影響,會出現(xiàn)與原始位置略微偏移現(xiàn)象,但是偏差程度不至于影響檢測結(jié)果.仿生魚上浮向上位機上傳數(shù)據(jù)時間與上位機接收到數(shù)據(jù)時間略有差距,是因為BDS通信有略微延遲.
表1 系統(tǒng)測試實驗數(shù)據(jù)
本文基于STM32和BDS模塊設(shè)計用來水質(zhì)檢測的仿生魚控制系統(tǒng),借助BDS系統(tǒng)實時定位和短報文通信功能實現(xiàn)仿生魚與遠程監(jiān)控端的通信,工作人員可以借助PC機或者智能手機等查看水質(zhì)信息.該系統(tǒng)具有方便攜帶、投入成本較低、水下采集的數(shù)據(jù)可以實時上傳到上位機等優(yōu)點,下一階段計劃在仿生魚控制系統(tǒng)上增設(shè)其他功能模塊,使其代替人在水中完成更多工作,具有良好的擴展性和實用性.