余錢程,管延敏,黃溫赟,韋龍,虞嘉晨
(1 江蘇科技大學(xué)船舶與海洋工程學(xué)院,江蘇鎮(zhèn)江 212100;2 中國水產(chǎn)科學(xué)研究院漁業(yè)機(jī)械儀器研究所,上海 200092)
水產(chǎn)養(yǎng)殖是中國農(nóng)業(yè)的重要組成部分,中國是世界最大的水產(chǎn)品出口國與消費國[1-2]。在水產(chǎn)養(yǎng)殖過程中,養(yǎng)殖水域水質(zhì)好壞對養(yǎng)殖效益起決定作用[3]。然而,水質(zhì)容易受到人類活動等因素干擾,影響水生生物生存,進(jìn)而導(dǎo)致水產(chǎn)品產(chǎn)量下降,對養(yǎng)殖戶經(jīng)濟(jì)造成損失[4-6]。因此需要對水質(zhì)環(huán)境進(jìn)行實時監(jiān)測,方便養(yǎng)殖人員及時做出調(diào)整[7]。
傳統(tǒng)水質(zhì)環(huán)境監(jiān)測多采用人工的方式進(jìn)行,時間成本高,效率低?;诖?大批學(xué)者對水產(chǎn)養(yǎng)殖過程中的水質(zhì)監(jiān)測系統(tǒng)進(jìn)行了深入研究。張琴等[8]、蔡向科等[9]、陳麗等[10]針對水質(zhì)監(jiān)測系統(tǒng)功耗高、初始能量有限等問題,設(shè)計了低功耗水產(chǎn)養(yǎng)殖水質(zhì)監(jiān)測系統(tǒng),有效降低了節(jié)點能量的消耗。劉傳領(lǐng)等[11]、張錚等[12]針對水產(chǎn)養(yǎng)殖覆蓋面積廣等特點,基于LoRa技術(shù)設(shè)計了水產(chǎn)養(yǎng)殖監(jiān)測系統(tǒng),實現(xiàn)了對水質(zhì)參數(shù)的遠(yuǎn)距離無線監(jiān)控。Tolentino等[13]、王鴻雁等[14]針對集約化水產(chǎn)養(yǎng)殖中的水質(zhì)監(jiān)控需求,設(shè)計了自動監(jiān)測控制系統(tǒng),實現(xiàn)對水質(zhì)的調(diào)節(jié)控制。上述研究中,監(jiān)測點位置始終固定,其覆蓋范圍有限,無法更為精確地反映水域內(nèi)的水質(zhì)環(huán)境分布情況。隨著自主控制技術(shù)的飛速發(fā)展,無人艇之類的無人搭載平臺逐漸應(yīng)用于水體環(huán)境監(jiān)測中。李昕聰?shù)萚15]、劉培學(xué)等[16]、江先亮等[17]、Jo等[18]、Demetillo等[19]、Sousa等[20]以小型無人船為載體,搭載多種水質(zhì)傳感器,利用物聯(lián)網(wǎng)技術(shù)實現(xiàn)對水質(zhì)參數(shù)的遠(yuǎn)程動態(tài)實時監(jiān)測。然而這些設(shè)計存在成本高昂、組網(wǎng)復(fù)雜、用戶操作煩瑣等問題。
本研究基于STM32單片機(jī)與樹莓派設(shè)計了一種用于水產(chǎn)養(yǎng)殖的水質(zhì)監(jiān)測無人艇控制系統(tǒng),養(yǎng)殖人員可以通過該系統(tǒng)控制無人艇對養(yǎng)殖水域的水質(zhì)進(jìn)行實時定點檢測,并能夠在上位機(jī)軟件上查看檢測到的水體數(shù)據(jù),方便用戶操作。
本控制系統(tǒng)總體框架如圖1所示,由STM32單片機(jī)、樹莓派4B和阿里云服務(wù)器3部分組成。
圖1 系統(tǒng)總體框架圖
STM32單片機(jī)通過串口接收由樹莓派4B傳遞過來的上位機(jī)指令,利用PID算法控制霍爾電機(jī)的轉(zhuǎn)速,從而實現(xiàn)水質(zhì)監(jiān)測無人艇的航行控制。結(jié)合溫度傳感器、濁度傳感器、pH傳感器、電子羅盤、GPS模塊實現(xiàn)水質(zhì)監(jiān)測無人艇的位置數(shù)據(jù)以及水體環(huán)境數(shù)據(jù)的采集。
樹莓派4B結(jié)合攝像頭采集圖像數(shù)據(jù),通過串口接收STM32單片機(jī)采集到的各項數(shù)據(jù),并利用4G網(wǎng)絡(luò)將這些數(shù)據(jù)傳輸?shù)讲渴鹩诎⒗镌品?wù)器上的上位機(jī)軟件中顯示,同時通過串口將接收到的上位機(jī)軟件相應(yīng)指令發(fā)送給STM32單片機(jī)。
阿里云服務(wù)器上部署的上位機(jī)軟件可以對采集的水體與圖像數(shù)據(jù)進(jìn)行處理并可視化顯示,同時保存至MySQL數(shù)據(jù)庫中。上位機(jī)軟件提供相應(yīng)的界面用于設(shè)置航行路徑,通過計算距離與方位角來對無人艇發(fā)送控制指令,從而實現(xiàn)水質(zhì)監(jiān)測無人艇的遠(yuǎn)程控制。
根據(jù)搭建的系統(tǒng)框架,對水質(zhì)監(jiān)測無人艇的系統(tǒng)硬件結(jié)構(gòu)進(jìn)行了設(shè)計,如圖2所示。
圖2 系統(tǒng)硬件結(jié)構(gòu)框圖
以STM32F103ZET6單片機(jī)與樹莓派4B作為控制器,STM32單片機(jī)外圍連接溫度傳感器、濁度傳感器、pH傳感器、GPS模塊、電子羅盤、電機(jī)驅(qū)動模塊以及霍爾編碼器。樹莓派4B外圍連接高清攝像頭與4G通信模塊。
無人艇端選用了STM32F103ZET6單片機(jī)和樹莓派4B兩塊控制器,并通過串口進(jìn)行數(shù)據(jù)通信。STM32單片機(jī)用來采集各傳感器數(shù)據(jù)以及對無人艇的運動進(jìn)行控制,其采用32位內(nèi)核處理器,芯片采用最佳代碼密度,具有可預(yù)見的運行時間和改進(jìn)的調(diào)試功能,能夠在低功耗下實現(xiàn)高性能[21],滿足本系統(tǒng)的基本需求。樹莓派4B搭載了1.5 GHz四核ARM Cortex-A72處理器[22],高度的集成化令其在擁有強(qiáng)大的操作系統(tǒng)與豐富的接口資源的同時僅有信用卡般的大小[23]。在本系統(tǒng)中樹莓派4B主要用于STM32單片機(jī)與服務(wù)器端上位機(jī)之間數(shù)據(jù)和指令的傳輸,由于其計算性能滿足圖像處理的需求,因此其還負(fù)責(zé)基于OpenCV庫對圖像信息進(jìn)行采集和處理。
溫度對于水產(chǎn)養(yǎng)殖對象的生長狀況影響極大,因此本系統(tǒng)采用了DS18B20溫度傳感器來采集水體溫度,該傳感器是一種單總線數(shù)字溫度傳感器,具有體積小、精度高、抗干擾能力強(qiáng)的優(yōu)點[24-26],其能在不影響無人艇航行的情況下工作,且滿足水產(chǎn)養(yǎng)殖所需的溫度測量范圍。在本系統(tǒng)中,STM32單片機(jī)通過單總線協(xié)議讀取傳感器采集到的溫度值,傳感器外圍電路如圖3所示。
為了測量水體的渾濁程度,避免渾濁的水體干擾養(yǎng)殖對象活動,本系統(tǒng)采用了TSW-30濁度傳感器。該傳感器利用光學(xué)原理,通過溶液中的透光率和散射率來綜合判斷濁度情況,并將輸出的電流信號轉(zhuǎn)換為電壓信號。STM32單片機(jī)通過ADC1的通道10采樣電壓信號來讀取水體濁度數(shù)據(jù),傳感器電路如圖4所示。
圖4 濁度傳感器電路
水體pH是反映水質(zhì)是否適合養(yǎng)殖對象生存的重要指標(biāo),因此本系統(tǒng)采用E-201-C型pH復(fù)合電極傳感器來對pH進(jìn)行采集。該電極是玻璃電極和參比電極組合在一起的塑殼可充式復(fù)合電極,用于測量水中的pH。傳感器輸出的微弱電壓信號經(jīng)過可調(diào)增益的運算放大電路進(jìn)行信號放大,STM32單片機(jī)通過ADC1的通道5采集放大后的信號,經(jīng)過式(1)可以計算得出水體的pH大小[27]。
(1)
式中:P為水體酸堿值;Vadc為AD通道采集的模擬電壓值。
模塊電路如圖5所示。
圖5 pH傳感器電路
選用L76X GPS定位模塊來對無人艇進(jìn)行定位。其是一款具有GNSS(全球?qū)Ш叫l(wèi)星系統(tǒng))功能的模塊,支持GPS、BD2和QZSS等定位系統(tǒng),具有體積小、功耗低、定位快等優(yōu)點。GPS模塊并不播發(fā)信號,屬于被動定位。其終端可以通過計算從信號發(fā)射與接收到GPS衛(wèi)星信號的時間差,并且結(jié)合信號傳輸速度來獲取位置和距離信息[28]。在本系統(tǒng)中,STM32單片機(jī)通過串口2與GPS定位模塊進(jìn)行通訊,以此來獲取無人艇的GPS定位信息,其接口電路如圖6所示。
圖6 GPS模塊電路接口圖
為獲取無人艇當(dāng)前位置朝向,本系統(tǒng)選用高分辨率、高集成、低成本的HMC5883L磁阻傳感器進(jìn)行采集。該傳感器使用超低功耗微控制器MSP430G2553作為磁場數(shù)據(jù)采集、濾波和傳輸?shù)闹骺匦酒?并采用各向異性磁阻技術(shù),具有較好的可靠性和較高的靈敏度[29]。在本系統(tǒng)中,該傳感器通過IIC協(xié)議將采集的數(shù)據(jù)傳輸給STM32單片機(jī),并由STM32單片機(jī)計算出當(dāng)前位置的方位角數(shù)據(jù),模塊的外圍電路如圖7所示。
圖7 HMC5883L傳感器及外圍電路
選用的無人艇為雙體船型,因此選用L298N作為電機(jī)驅(qū)動模塊,其可以同時驅(qū)動2個直流電機(jī)帶動左右螺旋槳轉(zhuǎn)動。該模塊是一種高性能脈寬調(diào)制功率放大器,具有體積小、驅(qū)動能力強(qiáng)等特點[30]。當(dāng)使能端ENA和ENB為高電平時,其所對應(yīng)的通道才能對電機(jī)進(jìn)行控制,否則電機(jī)處于停止?fàn)顟B(tài)。電機(jī)的轉(zhuǎn)動方向則由IN1、IN2、IN3、IN4端口輸入的電平高低來決定,其外圍電路如圖8所示。
圖8 L298N傳感器及外圍電路
本系統(tǒng)選用的4G通信模塊型號為SIM7600CE 4G HAT,其搭載了SIM7600CE集成芯片。當(dāng)模塊工作在LTE Cat-4頻段時,最大上行速率為50 Mbps,最大下行速率為150 Mbps。模塊與樹莓派4B通過USB數(shù)據(jù)線連接,通過插入開通GPRS聯(lián)網(wǎng)功能的SIM卡并在樹莓派4B上完成網(wǎng)絡(luò)通信配置,樹莓派4B便可利用TCP協(xié)議與上位機(jī)軟件建立通信連接。
STM32單片機(jī)程序流程圖如圖9所示。
圖9 STM32單片機(jī)程序流程圖
程序使用RealView MDK軟件作為開發(fā)平臺,并采用C語言作為開發(fā)語言以提高程序的運行效率。程序首先進(jìn)行系統(tǒng)資源的分配與各模塊的初始化,并檢查模塊的各項功能,直至設(shè)備能正常工作;然后通過GPS和電子羅盤獲取自身的位置數(shù)據(jù),并打包發(fā)送給樹莓派4B;通過解析接收到的樹莓派4B傳遞過來的上位機(jī)指令來利用PID算法調(diào)節(jié)兩個螺旋槳的轉(zhuǎn)速,使無人艇完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)或者制動的動作。當(dāng)無人艇到達(dá)目標(biāo)位置時,程序開始讀取各傳感器的數(shù)值,并將這些數(shù)據(jù)打包發(fā)送給樹莓派4B。整項任務(wù)結(jié)束后程序進(jìn)入停止?fàn)顟B(tài),否則會前往下一個目標(biāo)點進(jìn)行水體環(huán)境的采集。
樹莓派4B程序的任務(wù)處理流程如圖10所示。
圖10 樹莓派4B程序流程圖
程序使用Spyder軟件進(jìn)行開發(fā),開發(fā)環(huán)境為樹莓派官方系統(tǒng),考慮到樹莓派程序所要處理的功能以及開發(fā)難易程度,程序采用Python作為開發(fā)語言,配合各種功能強(qiáng)大的Python第三方類庫,使得樹莓派程序能用更緊湊的代碼實現(xiàn)更加復(fù)雜的功能。程序首先進(jìn)行系統(tǒng)的初始化,然后嘗試連接上位機(jī),直至連接成功;其次解析接收到的上位機(jī)指令,將解析出來的上位機(jī)指令發(fā)送給單片機(jī),并將從串口接收到的單片機(jī)數(shù)據(jù)上傳給上位機(jī),判斷攝像頭工作狀態(tài),若攝像頭開啟則同時發(fā)送圖像數(shù)據(jù),否則嘗試打開攝像頭并上傳圖像數(shù)據(jù)。整個流程循環(huán)執(zhí)行,直至任務(wù)結(jié)束。
上位機(jī)軟件使用C#編程語言,基于.NET Framework框架開發(fā),主要包括用戶登錄與注冊、數(shù)據(jù)顯示與路徑設(shè)置、數(shù)據(jù)庫顯示、圖像顯示與手動控制等功能模塊。
1)用戶登錄與注冊界面。養(yǎng)殖人員通過登錄界面輸入賬號和密碼,軟件會將輸入信息與數(shù)據(jù)庫中存儲的賬戶信息進(jìn)行遍歷比對,當(dāng)信息匹配,則登錄成功,否則提示重新輸入。若數(shù)據(jù)庫中不存在該賬戶信息,養(yǎng)殖人員可以通過注冊界面進(jìn)行賬號注冊。
2) 數(shù)據(jù)顯示與路徑設(shè)置界面。界面如圖11所示,主要功能是對采集到的各項數(shù)據(jù)進(jìn)行可視化顯示并能對無人艇的航行路徑進(jìn)行設(shè)置。根據(jù)設(shè)計要求,通過TCP協(xié)議接收數(shù)據(jù)信息,將pH、水體濁度、水體溫度以動態(tài)折線圖的形式展示,橫縱坐標(biāo)分別為時間以及具體數(shù)值。將無人艇的方位角以儀表盤的形式動態(tài)變化,使其更加直觀。界面內(nèi)嵌入百度地圖,養(yǎng)殖人員可以直接在地圖上手動標(biāo)記所需要監(jiān)測的地點,軟件能夠生成相應(yīng)路徑并發(fā)送指令給無人艇。
圖11 數(shù)據(jù)顯示與路徑設(shè)置界面
3)數(shù)據(jù)庫顯示界面。為了方便養(yǎng)殖人員對收集到的數(shù)據(jù)進(jìn)行備份和分析,軟件將采集到的數(shù)據(jù)信息保存到MySQL數(shù)據(jù)庫中,并且界面上提供了查詢功能,養(yǎng)殖人員可以設(shè)置具體的日期來查詢相應(yīng)時間段的水體環(huán)境數(shù)據(jù)與無人艇運行狀態(tài)數(shù)據(jù)。
4)圖像顯示與手動控制界面。通過顯示無人艇上攝像頭所采集到的圖像畫面,輔助養(yǎng)殖人員對無人艇進(jìn)行手動控制,并提供電機(jī)轉(zhuǎn)速調(diào)節(jié)功能,便于控制無人艇的航行速度。
為驗證各項系統(tǒng)功能的可行性,依據(jù)上述對整個系統(tǒng)的軟硬件設(shè)計,搭建了整套水質(zhì)監(jiān)測無人艇系統(tǒng),無人艇內(nèi)部結(jié)構(gòu)如圖12所示,并在江蘇科技大學(xué)長山校區(qū)的海韻湖上進(jìn)行了測試,如圖13所示。通過上位機(jī)軟件對目標(biāo)點進(jìn)行標(biāo)記,無人艇前往目標(biāo)點進(jìn)行水質(zhì)測量,并將參數(shù)發(fā)送給上位機(jī)軟件進(jìn)行可視化顯示與保存。功能測試主要包括2部分:無人艇自主航行功能;目標(biāo)水域水質(zhì)動態(tài)監(jiān)測功能。
圖12 內(nèi)部結(jié)構(gòu)圖
圖13 無人艇功能測試現(xiàn)場
4.2.1 無人艇自主航行功能
通過TCP協(xié)議建立上位機(jī)軟件與無人艇的通信連接,利用百度地圖界面依次設(shè)置5個坐標(biāo)點。上位機(jī)軟件比對目標(biāo)點與無人艇當(dāng)前的位置信息進(jìn)而控制無人艇航行運動,使其按順序依次到達(dá)設(shè)置的目標(biāo)點進(jìn)行水質(zhì)測量,并將水質(zhì)與無人艇位置狀態(tài)數(shù)據(jù)實時傳輸?shù)缴衔粰C(jī)軟件中。上位機(jī)軟件顯示的自主航行測試結(jié)果如圖14a所示,坐標(biāo)點1和5分別是無人艇航行的起點和終點,坐標(biāo)點2、3和4是需要進(jìn)行水質(zhì)監(jiān)測的3個目標(biāo)點。圖中帶箭頭的粗實線為軟件生成的無人艇目標(biāo)方向和路徑,細(xì)實線則是無人艇所經(jīng)過的實際航行軌跡。從圖14b中可以看出,無人艇按照預(yù)期設(shè)置的目標(biāo)點位置和目標(biāo)順序,較為準(zhǔn)確地到達(dá)了目標(biāo)點區(qū)域,受到風(fēng)浪等外界因素影響其行徑軌跡與目標(biāo)路徑有一定的誤差,具體數(shù)據(jù)如表1所示。表1為目標(biāo)點與實際點在百度坐標(biāo)系下的經(jīng)緯度坐標(biāo)以及位置誤差,從表1中可得無人艇實際到達(dá)的區(qū)域位置與預(yù)設(shè)位置誤差最大為4.3 m,最小為3.4 m。由于在實際應(yīng)用過程中,水體環(huán)境不會在小范圍內(nèi)發(fā)生突變,因此該航行精度滿足水產(chǎn)養(yǎng)殖過程中水質(zhì)監(jiān)測所需的位置精度要求,經(jīng)過軌跡路線與具體數(shù)據(jù)比對,無人艇實際航行效果符合系統(tǒng)的預(yù)期需求。
表1 目標(biāo)點與實際點對比
圖14 無人艇自主航行軌跡
4.2.2 目標(biāo)水域水質(zhì)動態(tài)監(jiān)測功能
無人艇在到達(dá)設(shè)定的目標(biāo)點后獲取了該區(qū)域的水體環(huán)境數(shù)據(jù),這些數(shù)據(jù)通過4G通信模塊發(fā)送給上位機(jī)軟件,上位機(jī)軟件在顯示這些數(shù)據(jù)的同時也將其存儲至服務(wù)器上搭建的MySQL數(shù)據(jù)庫中,方便養(yǎng)殖人員后期對數(shù)據(jù)進(jìn)行查詢。將異常數(shù)據(jù)剔除后,對剩余數(shù)據(jù)進(jìn)行均值化處理,得到的測量數(shù)據(jù)如表2所示。表2中記錄了13:00、13:30、14:00、14:30、15:00這5個時刻對3個目標(biāo)點進(jìn)行水質(zhì)采集所得到的濁度、pH、溫度數(shù)據(jù)以及測量用時。由測量結(jié)果可以直觀地獲取測試水域的水質(zhì)狀態(tài),該水域水體溫度大小在當(dāng)前季節(jié)正常范圍內(nèi);pH在7.0~7.5之間,屬于弱堿性水;由于該水域受到生物活動等外界因素影響,濁度在100~130 NTU內(nèi)波動,但仍在正常范圍內(nèi);水質(zhì)測量平均用時在7 min 28 s左右,而傳統(tǒng)人工檢測方式在此場地需要20 min甚至更長,與人工方式相比本系統(tǒng)大大縮減了檢測時間,提高了作業(yè)效率。該項測試驗證了水質(zhì)監(jiān)測無人艇上搭載的多種傳感器能夠?qū)︷B(yǎng)殖水域的目標(biāo)點進(jìn)行實時快速測量。
表2 測量結(jié)果
以上測試結(jié)果表明,本研究所設(shè)計的水質(zhì)監(jiān)測無人艇系統(tǒng)整體運行穩(wěn)定。與劉傳領(lǐng)等[11]和Tolentino等[13]中需要固定監(jiān)測節(jié)點來進(jìn)行水質(zhì)測量的方式相比,本系統(tǒng)能夠動態(tài)地覆蓋廣闊的養(yǎng)殖水域,有效提高了水產(chǎn)養(yǎng)殖的智能化程度和水質(zhì)監(jiān)測的工作效率。與江先亮等[17]中遠(yuǎn)程控制無人艇的方式相比,雖然本系統(tǒng)控制精度偏大,但仍滿足水質(zhì)監(jiān)測的需求,并且本系統(tǒng)在控制距離上更具優(yōu)勢。經(jīng)過實際場地的運行測試,本研究所設(shè)計的水質(zhì)監(jiān)測無人艇系統(tǒng)能夠滿足水產(chǎn)養(yǎng)殖過程中對于水質(zhì)監(jiān)測作業(yè)的總體需求。
以STM32單片機(jī)與樹莓派4B為核心,結(jié)合多種傳感器,通過上位機(jī)軟件控制無人艇實現(xiàn)對養(yǎng)殖水域水體環(huán)境的實時動態(tài)采集與數(shù)據(jù)查看。試驗表明,該系統(tǒng)各項功能運行穩(wěn)定,與目前常用的水質(zhì)監(jiān)測方法相比自動化程度更高,在監(jiān)測效率與實時性上具有顯著優(yōu)勢,適用于對養(yǎng)殖水域水質(zhì)進(jìn)行動態(tài)實時監(jiān)測。在此研究基礎(chǔ)上,未來將在系統(tǒng)運行穩(wěn)定性與控制精確性上進(jìn)行優(yōu)化。