摘要:為了實現(xiàn)動態(tài)GPS數(shù)據(jù)的實時無線傳輸和定位,綜合應(yīng)用了嵌入式軟硬件、GPS導(dǎo)航、Internet、GPRS通信等熱門技術(shù)完成了一個物聯(lián)網(wǎng)項目。在SIM908模塊基礎(chǔ)上進行硬件電路設(shè)計和編程,通過捕獲衛(wèi)星信號、數(shù)據(jù)處理、Internet網(wǎng)絡(luò)透傳、服務(wù)器接收、形成定位坐標(biāo),最后在Google地球中動態(tài)顯示定位點。經(jīng)測試,系統(tǒng)達(dá)到了預(yù)期效果,可用于運動物體在監(jiān)控中心的電子地圖上實時定位,還實現(xiàn)了基站定位功能。
1 系統(tǒng)簡介
GPS具有高精度、高效率、全天候、操作簡便、多功能等特點,廣泛應(yīng)用于定位、導(dǎo)航、測量等方面。近年來,GPS、計算機與移動通信技術(shù)的交叉融合在物聯(lián)網(wǎng)領(lǐng)域內(nèi)發(fā)展迅速。定位就是將GPS接收機接收到的遠(yuǎn)程車輛等目標(biāo)的當(dāng)前位置在電子地圖上同步表示出來的過程。由于GPS數(shù)據(jù)是實時更新的,因此能實現(xiàn)目標(biāo)在電子地圖中的實時定位。數(shù)據(jù)遠(yuǎn)程傳輸則可通過GPRS和Internet實現(xiàn)。
基于ARM和Internet的GPS數(shù)據(jù)透傳和定位系統(tǒng)框圖如圖1所示。被監(jiān)測端采用ARM微控制器STM3 2(基于Cortex-M3內(nèi)核和uCGUI圖形支持系統(tǒng))。GPS接收硬件負(fù)責(zé)接收衛(wèi)星信號,根據(jù)計算得到地理坐標(biāo)信息后,通過串口傳送給STM3 2微控制器;STM3 2微控制器將接收到的GPS數(shù)據(jù)進行相應(yīng)打包處理后,通過串口發(fā)送給GPRS模塊;由GPRS模塊通過基站傳送到Internet網(wǎng)絡(luò)中,向指定的IP端口發(fā)送數(shù)據(jù)包。服務(wù)器端上位機通過監(jiān)控該端口來捕獲數(shù)據(jù),然后將GPS數(shù)據(jù)發(fā)送到Google地球或其它導(dǎo)航軟件中實現(xiàn)對接,以便實時監(jiān)測觀察。該系統(tǒng)還加入了基站輔助定位功能。由于GPS衛(wèi)星信號的接收必須在戶外,因此當(dāng)被監(jiān)控端處于室內(nèi)或在接收不到衛(wèi)星信號的惡劣情況下,系統(tǒng)仍能通過基站信息定位到大致的區(qū)域。

2 配置GPRS與Internet的連接
SIM908模塊集成了GPS導(dǎo)航技術(shù)、GPRS無線通信技術(shù)和ARM嵌人式技術(shù),為實現(xiàn)內(nèi)嵌GPS的應(yīng)用節(jié)省了開發(fā)時間和費用,其優(yōu)異的兼容性為開發(fā)人員帶來很大的設(shè)計靈活度。GPRS終端借助GPRS無線網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)的無線傳輸,所以需建立無線連接,再按照GPRS通信協(xié)議傳輸數(shù)據(jù)。首先進行相關(guān)配置來建立無線連接,即用GPRS串口調(diào)試工具或編制程序輸入相關(guān)AT指令,初始化GPRS終端的TCP鏈接功能過程如下。
(1)關(guān)閉回顯,不需把收到的指令原封不動地發(fā)回對方,以便串口專心監(jiān)測GPRS終端返回的參數(shù)。
(2)設(shè)置GPRS網(wǎng)絡(luò)附著,即將GPRS終端附著到GPRS網(wǎng)絡(luò)中,以保證后面的操作能順利進行,因為后面的操作都是基于GPRS網(wǎng)絡(luò)連接進行的。
(3)配置APN,即GPRS接入點的配置。中國移動上內(nèi)網(wǎng)的APN為“CMWAP,上網(wǎng)卡及上公網(wǎng)使用的APN為“CMNET”。
(4)域名解析。如果采用撥號上網(wǎng),那么每次撥號都會動態(tài)分配到一個動態(tài)IP地址,但不可能每次IP變化都去更改STM3 2程序再重新燒錄,因此用一個固定域名與IP實時綁定。
(5)建立一條TCP鏈接。得到上步返回IP后,經(jīng)過封裝可形成指令:AT+ IPOPEN= " TCP" 、".*.*·*”,關(guān)。該指令包含作為接收端服務(wù)器的IP地址和端口號,要求和上位機軟件的監(jiān)聽端口對應(yīng)。
(6)如果計算機連接了路由器,那么其IP是路由器的一個子網(wǎng)IP,需設(shè)置路由器轉(zhuǎn)發(fā)規(guī)則,使接收到的指定端口數(shù)據(jù)自動轉(zhuǎn)發(fā)給子網(wǎng)IP的計算機。
(7)判斷TCP鏈接是否建立成功。如果TCP鏈接建立成功,則會返回CONNET參數(shù),反之會返回ERROR: N(N表示錯誤的類型)。發(fā)生錯誤的情況下,一般需從第(1)步重新進行鏈接,但唯獨對于ERROR: 9要做額外處理,即用指令“AT+ IPCLOSE= 5”注銷網(wǎng)絡(luò),再重新鏈接。
(8)設(shè)置I/O模式為明文ASCII模式,即數(shù)據(jù)傳輸過程中不需轉(zhuǎn)換。數(shù)據(jù)要封裝成AT+ IPSEND=”發(fā)送字符串?dāng)?shù)據(jù)”格式。
3 GPS數(shù)據(jù)格式及程序功能
3.1 GPS數(shù)據(jù)格式
GPS數(shù)據(jù)接收模塊主要處理對象是NMEA-0813數(shù)據(jù)幀。NMEA-0813定義了GPRMC、GPGGA、GPGSV、GPGGA等類型的語句格式,它們表達(dá)的定位信息各有側(cè)重,可根據(jù)實際需要進行選擇[6、7]。其中GPRMC語句又稱為推薦最小定位數(shù)據(jù)(Recommended Minimum SpecificGNSS Data),包括了時間、日期、位置、航向、速率等信息,其完整結(jié)構(gòu)如下:
MYMGPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,關(guān)<13><CR><LF>
<1>UTC時間,hhmmss(時分秒)格式;
<2>定位狀態(tài),A=有效定位,V=無效定位;
<3>緯度ddmm. mmmm(度分)格式;
<4>緯度半球N(北半球)S(南半球);
<5>經(jīng)度dddmm. nu-nmm(度分)格式;
<6>經(jīng)度半球E(東經(jīng))W(西經(jīng));
<7>地面速率(000.0~999. 9節(jié));
<8>地面航向(000. 0~359. 9度,以正北為參考基準(zhǔn));
<9>UTC日期,ddmmyy舊月年)格式;
<10>磁偏角(000.0~180.0);
<11>磁偏角方向,E(東)或W(西);
<12>模式指示(A=自主定位,D=差分,E=估算,N=數(shù)據(jù)無效);
<13>校驗值。
3. 2 GPS數(shù)據(jù)處理與應(yīng)用
STM3 2通過串口接收GPS終端傳來的GPS數(shù)據(jù)并存儲到緩沖區(qū),在提取主要數(shù)據(jù)后向GPRS終端發(fā)送。STM32在此過程中起到主控模塊的作用,由STM3 2程序來完成這些工作,其中接收串口數(shù)據(jù)采用串口中斷實現(xiàn)。由于采用的是當(dāng)前經(jīng)緯度信息,因此只需傳輸GPRMC數(shù)據(jù),以減小GPRS數(shù)據(jù)傳輸負(fù)擔(dān)。程序識別到GPRMC語句后,就可確定有效數(shù)據(jù)的起始位置181。程序中要注意數(shù)據(jù)包都是以MYM開頭,以回車換行(轉(zhuǎn)義符號表示為/r/n)結(jié)尾191。在STM3 2上移植uCGUI進行相關(guān)信息顯示,可觀察當(dāng)前的模塊狀態(tài)與命令返回參數(shù),以便調(diào)試。上位機的電子地圖軟件接收到GPRMC后,解析出經(jīng)緯度坐標(biāo)并顯示在地圖上。本文采用Google地球,亦可自行編寫程序,調(diào)用百度地圖API顯示電子地圖。