摘 要: 針對白洋淀濕地靜態監測節點存在維護困難等問題,提出了一種采用無人船作為動態監測節點的方法。應用GPS技術和GPRS技術實現對無人船的定位監控,系統主要分為船載單元和監控中心兩大部分。船載單元采集、傳輸無人船定位信息以及接收上位機命令控制船體運動。使用C#語言在Visual Studio2010環境下開發監控中心軟件,監控中心實現無人船在電子地圖中的定位顯示和船體控制命令的下發。實驗表明,該系統運行穩定可靠,具有使用方便、維護簡單等優勢。
關鍵詞: 無人船;定位;電子地圖;遠程監控系統
0 引言
白洋淀濕地是華北地區溫帶濕地的典型代表,對改善華北地區生態環境起著非常重要的作用[1]。由于華北地區持續干旱及近年來淀區經濟發展、人口增加,使白洋淀濕地生態系統正受到前所未有的壓力,因此在白洋淀濕地建立長期的監測站點就顯得尤為重要。目前濕地生態監測節點主要由靜態監測節點組成,靜態節點覆蓋范圍小、維護困難,對于一些復雜水域很難利用靜態節點監測。無人船可以在水上航行,因此可以利用無人船作為動態節點進入該區域完成任務,無人船擴大了濕地現場監測范圍。系統主要對無人船遠距離控制技術進行研究,采用全球定位系統GPS(Global Positioning System)技術實現自主定位,為了更直觀地顯示無人船位置,引入了電子地圖進行位置匹配[2];監控中心完成船體位置顯示和船體控制命令下發,真正實現了對無人船的遠程控制。
1 系統總體設計方案
系統應用GPS定位技術和GPRS無線通信技術實現對濕地無人船的遠程監控。無人船遠程監控包括遠程監測和遠程控制兩部分,遠程監測實現船體位置定位及實時顯示,遠程控制則是遠距離控制無人船運動方向。
1.1 系統構成
無人船監控系統主要由船載單元和監控中心兩部分構成。采用無線通信方式實現監控中心和船載單元之間的數據通信,系統結構如圖1。
船載單元主要由GPS模塊、GPRS模塊、驅動模塊和微處理器組成,監控中心由一臺可以聯網的計算機組成,船載單元利用GPRS模塊連入GPRS網絡,監控中心連接Internet網絡,兩者之間采用TCP/IP協議進行信息交換。
1.2 系統功能分析
無人船利用裝載的GPS模塊可以對船體進行定位,微處理器將接收到的GPS數據進行解析,提取出位置信息并通過GPRS模塊發送到Internet服務器,監控中心軟件通過添加電子地圖更直觀地顯示無人船位置,同時也可以利用SQL數據庫對數據進行存儲。監控中心可以向船載單元下發控制指令,當微處理器通過GPRS模塊接收到控制指令后將其解析為相應控制字并寫入驅動模塊,然后驅動模塊根據控制字控制電機轉向,最終達到操控無人船運動的目的。
2 船載單元設計
2.1 船載單元硬件搭建
船載單元硬件主要包括微處理器、GPS模塊、GPRS模塊和驅動模塊等。微處理器選擇STM32F103增強型系列,其內核是ARM32位的Cortex-M3CPU,工作頻率最高可達72 MHz,同時配置128 KB閃存程序存儲器、最大64 KB SRAM(靜態隨機存取存儲器)、11個定時器、13個通信接口和2通道12位D/A轉換器,該增強型單片機具有功能強、能耗低、可靠性高等特點[3]。采用信號接收器G591作為GPS定位模塊,該模塊具備多徑探測和矯正功能,定位精度可達3 m,具有基準時鐘范圍大、靈敏度高和抗干擾能力強等特點,因此很適合在濕地環境中應用。采用GTM900無線通信模塊作為系統GPRS模塊,該模塊支持標準的AT指令集,同時配有豐富的頭文件資料。系統選擇L293D作為船載單元的電機驅動模塊,該模塊采用ST公司全新的L293D功率型雙向驅動芯片,具有易于安裝、穩定性高、使用方便等特點。船載單元硬件連接方式如圖2。
G591模塊通過串口1向STM32發送無人船定位信息;GTM900模塊通過串口2與STM32芯片建立通信,GPRS模塊主要完成數據打包發送和接收功能;STM32芯片通過串口3和RS232連接,通過RS232接口與計算機連接實現程序下載;STM32通過I/O口向驅動模塊L293D發送控制字,驅動模塊根據控制字對電機轉向進行控制,從而達到操控無人船運動的目的。
2.2 船載單元軟件設計
船載單元程序主要包括以下兩個部分:GPS定位數據向監控中心的發送和船載單元接收上位機控制命令并執行。其中船載單元與監控中心的數據通信是通過GPRS網絡和Internet網絡連接實現。
2.2.1 數據發送
船載單元程序需要對中斷、串口、I/O口進行初始化,當船載單元上電后,各個模塊開始工作,STM32微處理器控制程序開始初始化。首先需要建立無線通信,STM32利用GTM900模塊向控制中心建立的服務器申請網絡連接,建立TCP/IP連接;然后GPS模塊開始獲取位置信息,當STM32監聽到GPS數據到來時開串口1中斷,讀取GPS數據并提取出經緯度信息;最后單片機通過串口2向GTM900發送數據并啟動GTM900模塊將數據打包通過TCP/IP協議發送到監控中心[4]。數據發送過程如圖3。
其中GPS數據遵從NMEA-0183協議,GPS數據有多種語句格式,本設計讀取GPRMC格式,其內容格式為:$GPRMC,<UTC時間>,<定位狀態>,<緯度>,<緯度半球>,<經度>,<經度半球>,<地面速率>,<地面航向>,<UTC日期>,<磁偏角>,<磁偏角方向>,<模式指示>*hh。STM32芯片依據此協議格式提取出經緯度信息。基本過程為:(1)STM32對讀取的語句進行判斷,如果開頭是GPRMC則進行第二步判斷,否則繼續監聽;(2)判斷語句的定位信息段是否為‘A’,若是‘A’則表明GPS定位成功,信息有效;(3)提取出經緯度信息[5]。
2.2.2 數據接收執行
GTM900模塊通過TCP/IP協議接收來自控制中心的指令,當GTM900接收到控制命令后,單片機利用AT指令集調用GPRS數據并開啟串口2中斷函數判斷收到的數據,如果是控制指令則STM32根據設置好的規則進行指令解析并通過I/O口向L293D寫入控制字,L293D根據控制字驅動電機運轉完成無人船的運動控制。每個電機需要3個控制信號:EN1(EN2)、IN1(IN3)、IN2(IN4),EN1是電機1的使能位,EN1為1時電機1轉動,為0時電機1停止;IN1、IN2控制電機1的轉向,當IN1、IN2分別為1、0時,電機1正轉;反之,電機1反轉。例如,L293D引腳IN1、IN2、IN3、IN4、EN1、EN2分別接STM芯片的P1.0~P1.5口,當接收的數據是控制命令“左轉”時,即左側電機反轉、右側電機正轉才能完成無人船左轉運動,因此STM32芯片需要向P1.0~P1.5分別寫入0、1、1、0、1、1,然后驅動模塊根據此控制字完成電機的正反轉運動,此過程就是船載單元命令接收執行過程。
3 監控中心軟件設計
監控中心軟件采用C#編程語言在Visual Studio 2010環境下開發,并加載Arcgis的二次開發控件MapControl實現電子地圖嵌入。監控中心主要實現無人船在電子地圖中的定位顯示和控制命令的下發。
3.1 電子地圖功能
電子地圖是顯示無人船位置的較好方式,這種方法更直觀、更容易讓人理解。首先由ArcMap編輯制作出設計需要的電子地圖圖表,然后使用C#語言在Visual Studio2010開發環境中設計監控中心軟件,在監控界面拖放二次開發控件MapControl和ToolbarControl,MapControl來顯示電子地圖,ToolbarControl用來作為電子地圖工具欄,可以直接通過屬性設置實現添加地圖、放大、縮小等功能。值得注意的是,MapControl控件必須同ToolbarControl控件綁定才可以實現地圖放大縮小等功能。ToolbarControl和MapControl屬于COM組件,一般不在Visual Studio的工具箱中直接顯示,但是可以通過右擊Visual Studio2010的工具箱進行添加。
3.2 控制命令的下發
本文在Visual Studio2010開發環境中使用C#語言編寫控制命令。它同時具有Visual Basic的易用性以及C++的低級內存訪問性[6]。當上位機軟件的某個控制按鈕被按下時,該按鈕的Click()事件隨即被觸發,控制中心將相應的控制命令通過Socket建立的服務器使用TCP/IP協議發送到船載單元。在Visual Studio2010開發環境中Socket類被稱為“嵌套字”,是一種描述IP地址和端口號的通信語句。Visual Studio為每個服務項目分配一個Socket,并將其與端口號進行綁定,根據端口號識別不同的服務項目。控制命令有“前進”、“倒退”、“左轉”、“右轉”、“啟動”、“結束”等。
4 系統實驗
4.1 實驗過程
將船載單元安裝在小車中在河北大學新校區進行現場實驗,PC上安裝控制中心軟件,首先運行監控中心程序,程序開始時即建立Internet服務器并進行監聽;然后按下小車的開關按鈕,船載單元開始工作。當船載單元和監控中心建立TCP/IP連接之后,按下控制按鈕“啟動”接收GPS數據,其他控制按鈕可以實現對小車的運動控制。
4.2 實驗結果
船載系統設置GPS的發送時間間隔為2 s,包括經度、緯度和時間信息。小車的運動方向可以通過控制按鈕進行改變,表1為小車運動的部分記錄。
通過實驗結果可知,系統實現了GPS數據傳輸、電子地圖實時顯示和船載單元運動控制,基本達到了設計要求。
5 結束語
本方案是基于GPS/GPRS的系統軟硬件設計方法,系統利用TCP/IP協議實現了Internet網絡與GPRS網絡的互聯,可以很好地完成無人船定位數據采集和傳輸,最后利用監控中心的電子地圖進行顯示。多次實驗表明,系統具有良好的穩定性和實用性。此外為了對濕地進行更全面的環境監測,還可以添加不同傳感器來完成任務,使無人船監測功能更加豐富完善。
參考文獻
[1] 溫志廣.建立白洋淀濕地自然保護區芻議[J].河北師范大學學報(自然科學版),2003,27(5):527-530.
[2] 崔峰,張明路,丁承君,等.基于GPS/GIS/GSM的移動機器人定位技術研究[J].微計算機信息,2005(11):99-100.
[3] 卜峰,李傳江,李歡,等.基于GPS/GPRS的客車遠程監控系統設計與實現[J].計算機測量與控制,2014,22(1):79-81.
[4] 張洋溢,王忠.基于ARM的GPS/GPRS多功能手持終端的設計與實現[J].計算機測量與控制,2011,19(12):50-53.
[5] 馬騰,楊宏業.基于GPS/GPRS的車載監控終端的設計與實現[J].電子測量技術,2009,32(4):71-74.
[6] 陳文剛,宋述勇,韓啟華.用C#編程語言實現變電站GPS遠程監控的探討[J].山西電力,2013(5):54-57.