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