喻 盈,文小玲,張 川
(武漢工程大學(xué) 電氣信息學(xué)院,武漢430205)
水質(zhì)監(jiān)測(cè)對(duì)保護(hù)水資源和促進(jìn)水產(chǎn)養(yǎng)殖都具有十分重要的意義。 傳統(tǒng)的水質(zhì)監(jiān)測(cè)方法有人工現(xiàn)定點(diǎn)采樣和建立自動(dòng)監(jiān)測(cè)站點(diǎn),但不能全面反映整個(gè)水域的水質(zhì)狀況。 隨著嵌入式和無(wú)線通信網(wǎng)絡(luò)的快速發(fā)展,水質(zhì)監(jiān)測(cè)技術(shù)也逐漸自動(dòng)化、智能化和網(wǎng)絡(luò)化[1]。 仿生機(jī)器魚(yú)將仿生學(xué)結(jié)合到水質(zhì)監(jiān)測(cè)領(lǐng)域,使監(jiān)測(cè)設(shè)備模擬魚(yú)類游動(dòng),體積小,相較于使用螺旋槳推進(jìn)的監(jiān)測(cè)設(shè)備更靈活高效、低污染、無(wú)擾動(dòng),能在不同的水域環(huán)境中進(jìn)行水質(zhì)監(jiān)測(cè)。 本文設(shè)計(jì)了一種基于STM32 的水質(zhì)監(jiān)測(cè)仿生機(jī)器魚(yú),魚(yú)體搭載各種傳感器和控制器,采用雙關(guān)節(jié)二自由度尾鰭控制游動(dòng),在目標(biāo)水域進(jìn)行自動(dòng)巡航與避障,將采集的水質(zhì)參數(shù)通過(guò)無(wú)線傳感器網(wǎng)絡(luò)傳輸?shù)缴衔粰C(jī),完成對(duì)水質(zhì)的實(shí)時(shí)監(jiān)測(cè)和管理。
基于STM32 的水質(zhì)監(jiān)測(cè)仿生機(jī)器魚(yú)總體結(jié)構(gòu)如圖1所示。
圖1 水質(zhì)監(jiān)測(cè)仿生機(jī)器魚(yú)總體結(jié)構(gòu)框圖Fig.1 Overall structure block diagram of biomimetic robot fish for water quality monitoring
仿生機(jī)器魚(yú)主要由機(jī)器魚(yú)實(shí)體模型、STM32 控制模塊、水質(zhì)傳感器模塊、機(jī)器魚(yú)運(yùn)動(dòng)模塊、紅外避障模塊、GPS 定位模塊、Lora 無(wú)線模塊和電源模塊等幾部分組成。 規(guī)劃目標(biāo)監(jiān)測(cè)點(diǎn)后,仿生機(jī)器魚(yú)通過(guò)GPS 定位技術(shù)確定與目標(biāo)點(diǎn)之間的方位,紅外傳感器檢測(cè)周?chē)系K物,由STM32 微控制器驅(qū)動(dòng)舵機(jī)和水泵使機(jī)器魚(yú)前進(jìn)轉(zhuǎn)向、上浮下潛,到達(dá)目標(biāo)點(diǎn)后水質(zhì)傳感器模塊進(jìn)行采樣,將檢測(cè)的水質(zhì)數(shù)據(jù)使用Lora 無(wú)線通信模塊傳輸?shù)缴衔粰C(jī)進(jìn)行顯示。
仿生機(jī)器魚(yú)在水下工作必須具有良好的穩(wěn)定性,因此將機(jī)器魚(yú)的重心維持在浮心下方,并保證機(jī)器魚(yú)的密封防水性。 自然界中大部分魚(yú)類包括鰻鱺科、鲹科、鮪科等魚(yú)類[2],借助魚(yú)體和尾鰭的擺動(dòng)進(jìn)行推進(jìn),這種方式稱之為BCF(body and/or caudal fin)推進(jìn)模式。所設(shè)計(jì)的仿生機(jī)器魚(yú)采用雙關(guān)節(jié)尾鰭,使用2 個(gè)舵機(jī)控制尾部擺動(dòng),與魚(yú)體協(xié)調(diào)來(lái)實(shí)現(xiàn)巡游和轉(zhuǎn)向,比單關(guān)節(jié)尾鰭的機(jī)器魚(yú)游動(dòng)更靈活,轉(zhuǎn)向角度更大。 仿生機(jī)器魚(yú)的機(jī)械結(jié)構(gòu)如圖2所示。
圖2 仿生機(jī)器魚(yú)機(jī)械結(jié)構(gòu)Fig.2 Mechanical structure of biomimetic robot fish
仿生機(jī)器魚(yú)控制模塊采用的主控芯片為STM32F103ZET6,是意法半導(dǎo)體公司推出的基于ARM Cortex-M3 內(nèi)核的低功耗、低成本和高性能MCU,主頻可達(dá)72 MHz,存儲(chǔ)器最高具有512 kB Flash 和64 kB SRAM,內(nèi)置3個(gè)12位A/D 轉(zhuǎn)換器,2個(gè)12位D/A轉(zhuǎn)換器,12 通道DMA和8個(gè)定時(shí)器,同時(shí)擁有13 個(gè)通信接口(包括I2C,USART,SPI,CAN,USB 以及SDIO),兼容各種外圍設(shè)備,在該系統(tǒng)中可用于舵機(jī)控制PWM 輸出、水質(zhì)傳感器數(shù)據(jù)485 通信、LCD 顯示等,完全滿足仿生機(jī)器魚(yú)的控制要求。
水質(zhì)數(shù)據(jù)采集模塊采用八合一多參數(shù)傳感器,可同時(shí)檢測(cè)pH 值、溶解氧、溫度、電導(dǎo)率、濁度、鹽度、ORP(氧化還原電位)、氨氮共8 種參數(shù)。 傳感器采用RS-485 通訊接口與STM32 進(jìn)行串口通信,需要MAX485 作為轉(zhuǎn)換芯片,芯片原理如圖3所示。
圖3 MAX485 芯片原理Fig.3 MAX485 chip schematic
RS-485 是一種半雙工的異步串行通信方式,不能同時(shí)進(jìn)行數(shù)據(jù)的收發(fā),因此需要控制MAX485 芯片的收發(fā)工作狀態(tài)。當(dāng)RE 引腳為低電平時(shí),芯片處于接收狀態(tài),接收來(lái)自傳感器采集的數(shù)據(jù);當(dāng)DE 為高電平時(shí),芯片處于發(fā)送狀態(tài),向傳感器發(fā)送采集指令。
GPS 定位模塊采用u-blox 公司的NEO-6M 模組方案,其體積小、高性能、低功耗,搜星能力強(qiáng),定位精度高,可以直接通過(guò)串口向單片機(jī)系統(tǒng)輸出GPS 定位信息。 這些信息采用NMEA-0183 標(biāo)準(zhǔn)協(xié)議,輸出常見(jiàn)格式為“GGA”,包含了經(jīng)緯度、海拔、時(shí)間、速度等參數(shù)。 模塊工作電壓為3.3~5 V,含有EEPROM,掉電后仍可保存GPS 定位信息。
組成局域網(wǎng)的無(wú)線傳輸技術(shù)有WiFi,ZigBee,藍(lán)牙,等;組成廣域網(wǎng)的有2G,3G,4G,等。在該系統(tǒng)中,將水質(zhì)數(shù)據(jù)從仿生機(jī)器魚(yú)傳輸?shù)缴衔粰C(jī)采用Lora 無(wú)線通信技術(shù),其工作頻段為(410~441)MHz,最大發(fā)射功率20 dBm,最大通信距離3000 m,為一種遠(yuǎn)距離、低功耗、低成本的無(wú)線傳輸技術(shù),可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多傳輸。
Lora 無(wú)線模塊工作電壓為3.3~5 V,通過(guò)串口與STM32 傳輸數(shù)據(jù),改變模塊的地址和信道,可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)之間的定向傳輸。
仿生機(jī)器魚(yú)在巡游過(guò)程中可分為直線游動(dòng)、轉(zhuǎn)向游動(dòng)和上浮下潛。
游動(dòng)時(shí)借助雙關(guān)節(jié)二自由度尾鰭的擺動(dòng)來(lái)實(shí)現(xiàn)推進(jìn),魚(yú)體和尾鰭由2 個(gè)舵機(jī)單元連接而成。 在直線游動(dòng)過(guò)程中,單個(gè)關(guān)節(jié)在側(cè)方向上擺動(dòng)的幅度相等,為正弦運(yùn)動(dòng);第2 個(gè)關(guān)節(jié)為相位滯后的正弦運(yùn)動(dòng)。 尾部擺動(dòng)的運(yùn)動(dòng)學(xué)模型如圖4所示。
圖4 尾部擺動(dòng)運(yùn)動(dòng)學(xué)模型Fig.4 Kinematic model of tail swing
忽略環(huán)境因素的影響,對(duì)仿生機(jī)器魚(yú)做運(yùn)動(dòng)行為分析。 其數(shù)學(xué)模型為
式中:Ka為振幅系數(shù),表示關(guān)節(jié)振幅與最大振幅的比值;Kb為偏斜系數(shù),表示關(guān)節(jié)擺動(dòng)對(duì)稱軸與魚(yú)體軸的偏斜程度;A1m為第1 個(gè)關(guān)節(jié)的振幅;A2m為第2個(gè)關(guān)節(jié)與第1 個(gè)關(guān)節(jié)之間的振幅;f 為擺動(dòng)頻率;φ為第2 個(gè)關(guān)節(jié)與第1 個(gè)關(guān)節(jié)之間的相位差。
根據(jù)對(duì)魚(yú)類的實(shí)際觀察,直線游動(dòng)時(shí)關(guān)節(jié)角度α 和β 的最佳角度為20°,周期約為0.25 s[3]。
轉(zhuǎn)向游動(dòng)時(shí),控制尾部偏向左側(cè),則機(jī)器魚(yú)依靠慣性進(jìn)行左轉(zhuǎn)向;尾部偏向右側(cè),機(jī)器魚(yú)進(jìn)行右轉(zhuǎn)向。
仿生機(jī)器魚(yú)在游動(dòng)的過(guò)程中同樣會(huì)模仿魚(yú)類進(jìn)行上浮下潛,常用的方法有改變重力法、改變重心法、魚(yú)鰾法和魚(yú)鰭法[4]。 該系統(tǒng)采用改變重力法,在魚(yú)體內(nèi)嵌入水箱,由控制系統(tǒng)驅(qū)動(dòng)繼電器實(shí)現(xiàn)水泵的開(kāi)關(guān),進(jìn)行抽水和排水控制水箱儲(chǔ)水量,改變機(jī)器魚(yú)的重力,進(jìn)而實(shí)現(xiàn)上浮下潛。
為實(shí)現(xiàn)自動(dòng)化水質(zhì)監(jiān)測(cè),仿生機(jī)器魚(yú)在目標(biāo)水域使用GPS 定位模塊進(jìn)行自主導(dǎo)航,監(jiān)測(cè)任務(wù)完成后自動(dòng)返航。 首先,以正北和正東方向建立平面二維坐標(biāo)系,如圖5所示。
圖5 二維坐標(biāo)下仿生機(jī)器魚(yú)的自主導(dǎo)航路線Fig.5 Autonomous navigation route of biomimetic robot fish in two-dimensional coordinates
由于GPS 輸出的是經(jīng)緯度坐標(biāo),因此利用墨卡托投影變換將經(jīng)緯度坐標(biāo)(L,B)轉(zhuǎn)換為平面坐標(biāo)(x,y)[5]。 其轉(zhuǎn)換過(guò)程如下:
其中
式中:L0為原點(diǎn)經(jīng)度;B0為基準(zhǔn)緯度;e 為第一偏心率;a 為橢球體長(zhǎng)半軸。
用戶設(shè)定需要監(jiān)測(cè)的目標(biāo)位置經(jīng)緯度,平面坐標(biāo)為(x,y),機(jī)器魚(yú)獲取起始位置坐標(biāo)(x1,y1),計(jì)算出向目標(biāo)位置巡游的航向角度為
游動(dòng)過(guò)程中實(shí)時(shí)獲取當(dāng)前定位坐標(biāo),計(jì)算出當(dāng)前位置距目標(biāo)位置的航向角度,與起始位置的航向角度θ 相對(duì)比,并調(diào)整機(jī)器魚(yú)的游動(dòng)方向。 當(dāng)仿生機(jī)器魚(yú)游動(dòng)到(x2,y2)位置時(shí),θ1<θ,控制系統(tǒng)驅(qū)動(dòng)機(jī)器魚(yú)向右調(diào)整游動(dòng)方向;當(dāng)位于(x3,y3)位置時(shí),θ2>θ,向左調(diào)整游動(dòng)方向,直至達(dá)到目標(biāo)位置。為避免機(jī)器魚(yú)頻繁修正航向角度,設(shè)置可允許的角度偏差為5°,當(dāng)θ-θ1≤5°或θ2-θ≤5°時(shí)機(jī)器魚(yú)不做方向調(diào)整。
水下的環(huán)境復(fù)雜且多變,仿生機(jī)器魚(yú)在巡游的同時(shí)必須具備自主避障的能力。 機(jī)器魚(yú)頭部搭載紅外傳感器,通過(guò)發(fā)射和接收反射回來(lái)的紅外線來(lái)判斷前方有無(wú)障礙物,傳感器最大檢測(cè)距離為30 cm,檢測(cè)角度為35°。 由于單個(gè)傳感器具有局限性,故在此使用了5 個(gè)紅外傳感器,分別為魚(yú)體前側(cè)的M,左前側(cè)的L,右前側(cè)的R,上側(cè)的S1 和下側(cè)的S2。其空間分布如圖6所示,全方位檢測(cè)機(jī)器魚(yú)運(yùn)動(dòng)路徑上存在的障礙物。
圖6 紅外傳感器網(wǎng)絡(luò)分布Fig.6 Infrared sensor network distribution
紅外傳感器檢測(cè)到障礙物時(shí),會(huì)輸出低電平信號(hào),控制系統(tǒng)接收到信號(hào)后進(jìn)行相應(yīng)避障決策。 仿生機(jī)器魚(yú)在游動(dòng)過(guò)程中,首先判斷紅外傳感器M,L,R 的信號(hào),當(dāng)檢測(cè)到魚(yú)體左前側(cè)、右前側(cè)都存在障礙物而無(wú)法前行時(shí),再利用傳感器S1 和S2 來(lái)檢測(cè)機(jī)器魚(yú)的上側(cè)、下側(cè)有無(wú)障礙物,沒(méi)有則上浮下潛后繼續(xù)前行。 其避障策略見(jiàn)表1。
表1 仿生機(jī)器魚(yú)的避障策略Tab.1 Obstacle avoidance strategy of biomimetic robot fish
系統(tǒng)軟件由水質(zhì)數(shù)據(jù)采集、無(wú)線傳輸、GPS 自主導(dǎo)航與紅外避障等幾部分組成,主程序流程如圖7所示。
圖7 主程序流程Fig.7 Main program flow chart
系統(tǒng)初始化完成后,計(jì)算起始位置與目標(biāo)位置的航向角度。 在巡游的過(guò)程中實(shí)施避障,并調(diào)整當(dāng)前航向角度,直至到達(dá)目標(biāo)位置,向水質(zhì)傳感器發(fā)出采集指令,控制系統(tǒng)獲取目標(biāo)點(diǎn)水質(zhì)數(shù)據(jù)后通過(guò)Lora 無(wú)線模塊遠(yuǎn)程傳輸?shù)缴衔粰C(jī)進(jìn)行顯示。
上位機(jī)可視化界面使用VC++6.0 軟件開(kāi)發(fā),實(shí)現(xiàn)串口參數(shù)設(shè)置、用戶信息管理,對(duì)遠(yuǎn)程傳輸?shù)乃|(zhì)數(shù)據(jù)進(jìn)行存儲(chǔ)、顯示和預(yù)警,提供歷史數(shù)據(jù)查詢。上位機(jī)可視化界面如圖8所示。
圖8 上位機(jī)監(jiān)測(cè)軟件界面Fig.8 PC monitoring software interface
所設(shè)計(jì)的仿生機(jī)器魚(yú)尾部,采用雙關(guān)節(jié)二自由度尾鰭作為推進(jìn)和轉(zhuǎn)向系統(tǒng);以STM32 為主控芯片進(jìn)行數(shù)據(jù)的通信與運(yùn)動(dòng)控制;通過(guò)GPS 定位技術(shù)實(shí)現(xiàn)水下自主定點(diǎn)導(dǎo)航,利用紅外傳感器網(wǎng)絡(luò)多方位檢測(cè)障礙物進(jìn)行避障;建立Lora 無(wú)線通信網(wǎng)絡(luò)傳輸水質(zhì)數(shù)據(jù)。 用戶可在上位機(jī)軟件查看水質(zhì)數(shù)據(jù),加強(qiáng)對(duì)目標(biāo)水域的管理,實(shí)現(xiàn)水質(zhì)的自動(dòng)化監(jiān)測(cè)。