高翔 熊偉杰 徐韜穎 余豐 吳壘
摘 要:項目所設計研制的水質檢測無人船是一款基于IoT技術,以各類中小型湖泊或河流為場景,將遠程控制、自動路徑巡航、實時監(jiān)測水質和預警功能結合為一體的水質檢測無人船系統(tǒng)。該無人船調用百度地圖中的API,讓用戶可以遠程在網(wǎng)頁端的地圖上繪制路徑、發(fā)送指令,使無人船根據(jù)指定繪制路徑自動巡航,同時在微信小程序上實時獲取傳感器數(shù)據(jù)。該項目設計集成自動坐標巡航、水質檢測,數(shù)據(jù)交互傳輸和微信小程序開發(fā)。通過測試,已實現(xiàn)在小型湖泊的現(xiàn)實場景中無人船按指定軌跡巡航,實時在小程序中檢測水質數(shù)據(jù)的系統(tǒng)功能。
關鍵詞:物聯(lián)網(wǎng);繪制路徑巡航;微信小程序;數(shù)據(jù)傳輸;低成本
中圖分類號:U674 文獻標識碼:A 文章編號:1674-1064(2021)05-041-04
DOI:10.12310/j.issn.1674-1064.2021.05.020
湖泊作為人類的一種寶貴的自然資源,在我國經濟社會可持續(xù)發(fā)展中起著重要作用。然而,由于經濟的快速發(fā)展,工業(yè)化、城鎮(zhèn)化的快速推進,人類對湖泊資源的掠奪性開采和開發(fā)已經對湖泊造成了嚴重破壞,導致湖泊現(xiàn)狀十分嚴峻,如湖面萎縮、水質惡化、生態(tài)功能退化、資源急劇減少等[1]。對此,建立詳細可靠的水質檢測系統(tǒng)并及時做出應對措施,就顯得極為重要。
然而,目前市面上的水質檢測無人船系統(tǒng),大多具有搭建和維護成本高昂,控制系統(tǒng)設計較為復雜,巡航功能較為單一等問題,對于漁業(yè)、林業(yè)等領域的個體用戶不是很友好。所以,針對現(xiàn)有問題,文章結合國內外移動在線水質監(jiān)測系統(tǒng)的研究現(xiàn)狀,設計了一個集遠程通信、微信小程序平臺監(jiān)控、坐標定位、自定義繪制路徑自主巡航等技術于一體,基于物聯(lián)網(wǎng)的可遠程操控的水質檢測無人船系統(tǒng)。
1 水質監(jiān)測無人船系統(tǒng)的整體設計思路
整體系統(tǒng)大致分為兩大部分,硬件部分設計和軟件部分設計。如果按照功能來分類,可分為數(shù)據(jù)傳輸部分和自定義路徑巡航和控制部分。數(shù)據(jù)部分涉及到船體的姿態(tài)及位置數(shù)據(jù)的獲取和水質檢測傳感器數(shù)據(jù)的獲取,以及姿態(tài)位置數(shù)據(jù)的處理和傳感器數(shù)據(jù)的傳輸問題。自定義繪制坐標路徑巡航和控制系統(tǒng),由網(wǎng)頁端和樹莓派中筆者搭建的服務器和電機驅動文件實現(xiàn)。水質檢測無人船系統(tǒng)的基本框架如圖1所示。
2 無人船硬件設計
2.1 無人機硬件結構組成
無人船主要由密封防水船殼、電機、傳感器、控制主板、電源等部分構成,以下是一些部件的具體信息和功能介紹。
主控芯片:樹莓派4B。樹莓派負責承載驅動電機運轉的腳本文件,用bottle庫建立的電機控制服務端,應用在坐標巡航的Nginx網(wǎng)頁服務器,以及各個水質傳感器數(shù)據(jù)和姿態(tài)位置傳感器的數(shù)據(jù)儲存文件。目前,在互聯(lián)網(wǎng)企業(yè)實際生產環(huán)境中,Nginx作為一款開源的高效解決高并發(fā)、高負載問題的Web反向代理服務器而被廣泛應用,是實現(xiàn)集群負載均衡技術的有效方式[2]。
Arduino:Arduino結合傳感器實現(xiàn)數(shù)據(jù)的精準提取,利用Arduino作為數(shù)據(jù)中轉站,再利用Arduino和樹莓派的串口通信進行數(shù)據(jù)交互,使用戶能更加方便地修改傳感器和代碼,只需要在Arduino替換上傳商家的新傳感器數(shù)據(jù)提取和串口傳輸代碼,再換上新的傳感器便可以進行新的傳感器數(shù)據(jù)的提取和顯示。
姿態(tài)傳感器:GY955是一款高穩(wěn)定性的九軸導航AHRS模塊,其中電子羅盤自帶傾角補償算法,融合了卡爾曼濾波。通過改寫代碼將純文本的電子羅盤數(shù)據(jù)提取并發(fā)送到串口。
GPS模塊:通過GPS模塊和天線收集GPS數(shù)據(jù),通過Arduino與樹莓派串口通信并將位置數(shù)據(jù)作為數(shù)組形式儲存在樹莓派上面。
水質檢測傳感器:PH傳感器,濁度傳感器,溶解氧傳感器等。
電源:采用可充電的12V和5V的鋰電池供電,為主板、電機和電機驅動器供電。
2.2 無人船動力系統(tǒng)設計
無人船的動力推進裝置由兩個可正反轉的無刷直流電機組成,兩個電機位于船體尾部兩側,配合電機驅動器,通過樹莓派主板GPIO引腳直接進行PWM控制。利用雙電機差速運轉改變和控制船的方向,當船直行時兩電機同速運轉。
2.3 硬件架構
硬件架構如圖2、圖3所示。
3 無人船軟件設計
3.1 巡航路徑繪制網(wǎng)頁的設計
百度地圖JavaScript API是一套由JavaScript語言編寫的應用程序接口,可幫助用戶在網(wǎng)站中構建功能豐富、交互性強的地圖應用,支持PC端和移動端基于瀏覽器的地圖應用開發(fā),且支持HTML5特性的地圖開發(fā)[3]。
為增強用戶使用體驗,該設計決定摒棄直接輸入GPS坐標的方式,采用用戶手動繪制路徑的方式。主要通過調用百度地圖JavaScript API v1.0中的Polyline類和LocalResultPoi類配合JavaScript,使用戶觀察到地區(qū)實景以便路徑的繪制,滿足本項目的功能需求。
網(wǎng)頁后端部分,通過網(wǎng)頁前端調用百度API獲取的路徑坐標,利用編寫的php后端文件將自動獲取的坐標數(shù)據(jù)作為JSON格式傳到樹莓派本地文件中并儲存起來,此數(shù)據(jù)方便之后巡航算法文件和電機控制文件的調用。巡航路徑繪制網(wǎng)頁設計整體結構如圖4所示。
3.2 基于物聯(lián)網(wǎng)平臺和微信小程序的數(shù)據(jù)監(jiān)測系統(tǒng)設計
3.2.1 水質檢測傳感器數(shù)據(jù)傳輸
水質傳感器數(shù)據(jù)的傳輸過程如圖5所示。傳感器數(shù)據(jù)實時由Arduino獲取并進行數(shù)據(jù)類型轉化處理和校準,并實時通過串口通信傳輸?shù)綐漭芍骺匕迳?,然后由樹莓派主控板中的?shù)據(jù)上傳程序,將傳感器數(shù)據(jù)上傳到OneNET物聯(lián)網(wǎng)平臺進行數(shù)據(jù)的統(tǒng)計和儲存,微信小程序調用物聯(lián)網(wǎng)平臺的API,實現(xiàn)實時水質檢測傳感器數(shù)據(jù)的獲取和刷新。
3.2.2 微信小程序設計
微信小程序使用和開發(fā)的簡便性備受用戶和開發(fā)者青睞,該小程序項目一共實現(xiàn)了以下四大主要功能:
實時查詢水質傳感器收集的最新數(shù)據(jù),并附加數(shù)值報警提醒功能。
根據(jù)不同的傳感器數(shù)據(jù)分類,給予用戶相應的水質改善方案。
用戶通過賬號登錄來獲取無人船手動控制頁面和導航頁面的域名。
提供水質檢測科普知識。
3.3 基于GPS的自定義坐標路徑巡航系統(tǒng)設計
無人船的自動沿路徑巡航建立在手機移動終端的無線遠程操控系統(tǒng)下,利用手機移動終端登錄網(wǎng)頁客戶端,在百度地圖上自定義繪制坐標路徑,并通過無線網(wǎng)絡發(fā)送路徑坐標,無人船接收到坐標數(shù)據(jù)后開始執(zhí)行巡航程序。
3.3.1 自定義坐標路徑巡航系統(tǒng)工作流程
自定義坐標路徑巡航系統(tǒng)流程如圖6所示。在通過網(wǎng)頁端調取設定路徑點的經緯度坐標、GPS坐標數(shù)據(jù)、電子羅盤方向角數(shù)據(jù)后,需要利用路徑點的經緯度坐標計算巡航路徑相鄰點之間的方向角及行駛距離。在程序設計中,當無人船主控系統(tǒng)從網(wǎng)頁獲取并發(fā)送船體當前的方向角、GPS坐標、目標路徑初始點的坐標后,程序就會開始計算船體當前位置和初始點(巡航路徑設定的第一個坐標位置)位置之間的方向角和距離,并運行電機控制的程序進行目標靠近。在靠近初始路徑點的過程中,由于船在水面上具有慣性,所以需要實時計算當前位置與目標位置的距離與方向角,并根據(jù)計算數(shù)據(jù)調整電機運轉。當程序檢測到船到達目標位置(初始點)后,自動停止計算初始點的數(shù)據(jù)信息,并開始計算當前船體坐標與巡航路徑中的第二個設定點之間的距離及方向角。程序周而復始直至檢測到船體到達最后一個目標點,即完成巡航任務,程序恢復等待狀態(tài),等待下一次巡航命令。
3.3.2 坐標數(shù)據(jù)計算過程的重要理論依據(jù)
在以上過程中,運用到了利用GPS坐標計算方向角和距離的公式,可以近似將地球看作球體計算[4],如圖7所示。
參數(shù)說明。地球上任意兩點A和B的經緯度坐標分別為A(Aj,Aw)和B(Bj,Bw),A和B之間的方位角就是Lab的切線與地球緯線之間的夾角[5]。且A和B兩點間球面距離為Lab,地球半徑為R,O為地球球心,C為北極點。
角A即點A與B連線的方位角。
4 無人船系統(tǒng)測試
在系統(tǒng)搭建完成后進行功能測試,選取了學校一個人工湖作為測試水域,測試持續(xù)兩周。
4.1 基于GPS的自定義繪制坐標路徑巡航系統(tǒng)的測試
在網(wǎng)頁客戶端地圖上找到學校的人工湖,依次用手點擊希望巡航經過的坐標點,坐標點依次根據(jù)點擊順序連接成設定好的巡航路徑。之后點擊發(fā)送按鈕,將開始巡航的指令和坐標數(shù)據(jù)發(fā)送至樹莓派服務器并開始執(zhí)行巡航程序。如圖8、圖9所示,分別為路徑繪制網(wǎng)頁頁面和無人船測試實拍圖片。
4.2 基于物聯(lián)網(wǎng)平臺和微信小程序的數(shù)據(jù)監(jiān)測系統(tǒng)的測試
當無人船在按照繪制的路徑巡航的時候,打開微信小程序當無人船按照繪制的路徑巡航時,打開微信小程序,進入到無人船檢測控制主頁面,如圖10所示,帶年紀實時數(shù)據(jù)查詢,查詢濁度傳感器的數(shù)據(jù),點擊重新獲取網(wǎng)絡數(shù)據(jù),刷新最新的濁度傳感器數(shù)據(jù)。此時數(shù)據(jù)為625,根據(jù)后臺設定的閾值對比超標顯示報警,如圖11所示。之后,可以返回主頁面到水質改善方案頁面中尋找解決方案,如圖12、圖13所示。
5 結語
文章介紹了當前湖泊環(huán)境污染問題,并針對湖泊水質檢測技術的現(xiàn)存問題提出了一種多模塊的基于物聯(lián)網(wǎng)技術的水質檢測無人船系統(tǒng),以實現(xiàn)水質監(jiān)測、實時數(shù)據(jù)上傳、自主巡航、遠程控制等任務。通過對系統(tǒng)的測試,水質檢測智能無人船可以按照用戶繪制的路徑進行定點自主巡航,實現(xiàn)水質檢測及實時預警等功能。此外,無人船系統(tǒng)仍存在改進空間,由于GPS誤差較大,可采用GPS差分技術提高精度,建立更加精確的無人船巡航系統(tǒng)。
參考文獻
[1] 譚飛帆,王海云,肖偉華,等.淺議我國湖泊現(xiàn)狀和存在的問題及其對策思考[J].水利科技與經濟,2012,18(4):57-60.
[2] 吳陳.基于Nginx的服務器集群負載均衡策略的研究與改進[D].廣州:華南理工大學,2020.
[3] 夏軍.基于百度地圖API的快速制圖系統(tǒng)的設計與實現(xiàn)[J].測繪工程,2019,28(4):42-48.
[4] 劉力榮,李菡.GPS坐標與方向、距離相互轉換的計算公式推導[J].南方農機,2018,49(14):106.
[5] 周建鄭.GPS定位原理與技術[M].鄭州:黃河水利出版社,2005.