饒 云程 莉胡文雅劉忠成
(1.武漢工程大學電氣信息學院 武漢 430205)(2.武漢易思達科技有限公司 武漢 430205)
隨著科技發(fā)展,衛(wèi)星導航定位系統(tǒng)已逐步融入了我們的生活,為社會提供了極大的便利,正是由于衛(wèi)星導航定位系統(tǒng)具有覆蓋范圍廣、定位精度高、實時性好等優(yōu)點,其在多個領(lǐng)域得到了應用。以導航技術(shù)為基礎的各項應用在很大程度上提高了社會生產(chǎn)力,方便了人們的工作生活,對國民經(jīng)濟的發(fā)展有著重大意義。
本文采用廣播星歷的方式來實時獲取接收機的當前地理位置信息,解析報文數(shù)據(jù),通過STM32單片機進行優(yōu)化處理后顯示在TFT屏上。接收并解析由GPS模塊發(fā)送的數(shù)據(jù)是數(shù)據(jù)處理中心的一項重要任務,處理該任務的GPS定位模塊具備高可靠性(reliability)和高有效性(efficiency)。能夠正確高效地分析NMEA0183協(xié)議數(shù)據(jù)。本文將編程技術(shù)運用到NMEA0183協(xié)議的解析中,實現(xiàn)了一種高效穩(wěn)定、高精確度的解析方法。
GPS模塊通過接受定位衛(wèi)星的廣播星歷計算出自己當前的位置速度等信息,然后將這些信息用NMEA0183協(xié)議封裝[6~7],并通過串口發(fā)送給數(shù)據(jù)處理中心(通常為嵌入式系統(tǒng))進行處理。
為了完成對衛(wèi)星數(shù)據(jù)的提取和顯示,采用和芯星通的UM220定位芯片,并且選擇STM32F103RCT6為單片機主控芯片,配上TFT顯示屏幕顯示實時獲取到的衛(wèi)星定位信息。
CDT是和芯星通提供的一款搜星工具,能夠通過串口顯示GPS模塊搜到的衛(wèi)星個數(shù)和從衛(wèi)星的廣播星歷中獲取的地理位置信息,也可以通過ConsoleWindows配置GPS模塊的顯示數(shù)據(jù)的頻度和消息類別。
NMEA0183協(xié)議數(shù)據(jù)類別有十幾種,這些信息的作用分別是:$GPGLL:輸出大地坐標信息;$GPZDA:輸出UTC時間信息;$GPRMC:輸出GPS推薦的最短數(shù)據(jù)信息[4]等。
$GPRMC語句中包括經(jīng)緯度、速度、時間和磁偏角等字段,這些數(shù)據(jù)為導航定位應用提供了充分的信息,所以選擇GPRMC返回語句作為定位信息,下面是該語句的詳細語句定義信息。
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10〉,<11>,<12>
$GPRMC語句意義如表1所示。
表1 GPRMC語句意義
通過查看數(shù)據(jù)手冊知道$GPRMC的消息類別ClassID是4,配置$GPRMC的頻度為1,讓它每秒更新一次數(shù)據(jù),其它的消息類別全部設置為0(關(guān)閉),語句格式為$CFGMSG,msgClass,msgID,rate,所以需要通過串口向GPS模塊輸入配置信息如圖1。
圖1 GPS配置信息
在Windows10系統(tǒng)下,通過USB轉(zhuǎn)串口線連接GPS模塊,通過CDT軟件配置GPS模塊的串口號和波特率等參數(shù),電腦CDT軟件測試獲取到的地理信息結(jié)果如圖2。
圖2 CDT測試顯示圖
測試結(jié)果顯示通過串口配置GPS的定位信息能返回規(guī)則的$GPRMC,這樣就能每秒獲取$GPRMC報文信息,沒有其他的雜項,方便編程提取串口數(shù)組成員,顯示經(jīng)緯度、速度和UTC時間當重要參數(shù)信息。
根據(jù)MMEA0183衛(wèi)星通信數(shù)據(jù)協(xié)議和軟件測試結(jié)果,讓單片機串口接收衛(wèi)星定位芯片返回的數(shù)據(jù),按照數(shù)據(jù)協(xié)議解析成當前所處的地理信息,發(fā)送到TFT屏幕上顯示[8~11]。UM220的技術(shù)指標如表2所示。
表2 UM220的技術(shù)指標
整體設計結(jié)構(gòu)框圖如圖3所示,UM220定位芯片模塊通過天線獲取GPS衛(wèi)星定位信息,解算出當前經(jīng)緯度并通過串口返回到STM32單片機,通過編寫串口程序,依次從緩沖區(qū)提取數(shù)組成員,根據(jù)MMEA0183通信協(xié)議,解析到TFT屏幕上顯示[12~14]。
圖3 結(jié)構(gòu)框圖
定位模塊整體設計電路原理圖如圖4所示,采用上拉10K電阻的方式來設計定位芯片的復位電路,當按鍵S11按下時BDRST引腳電位由高電位跳變成低電位[15~17]。系統(tǒng)采用2.85V電源的有源天線,通過SMA接口連接UM220模塊的RF_IN和VCC_RF引腳,利用發(fā)光二極管做穩(wěn)壓二極管,將3.3V電壓穩(wěn)定到2.85V,給天線供電[18]。研究只使用了UM220模塊的RXD1、TXD1引腳,這兩個引腳上接入通過串口芯片連接到STM32單片機,復位電路通過S11按下時候BDRST電位由高向低跳變實現(xiàn)低電平復位[20~21]。
圖4 定位模塊電路原理圖
從串口調(diào)試助手分析數(shù)據(jù)后發(fā)現(xiàn),定位芯片模塊默認打開所有類別的數(shù)據(jù)上傳頻度,這樣會對單片機采集數(shù)據(jù)和分析單一的$GNRMC并提取相應的信息造成極大的干擾和代碼復雜度,基于單一變量原則,采用事先配置模塊信息的方式來初始化模塊,使它按照頻度為1的速率輸出單一的$GNRMC語句。配置好后采集數(shù)據(jù)分析[22],例如:
$GPRMC,074529.82,A,2429.6717,N,11804.6973,E,12.623,32.122,010806,,W,A*08
從這條語句中可以得知當前的緯度是北緯24.296717、東經(jīng)118.046973,從串口緩沖數(shù)組中取數(shù)組成員[19~27]是緯度,[29]是南緯還是北緯,[31~40]是經(jīng)度,[42]是東經(jīng)還是西經(jīng),整個的軟件設計流程圖如圖5。
STM32單片機開機上電后通過串口發(fā)送配置信息給UM220模塊,完成初始化工作,初始化成功后UM220會向單片機返回OK,然后就是規(guī)則的$GPRMC信息發(fā)送給單片機,通過編程實現(xiàn)單片機解析串口數(shù)組,把每個字段信息輸出到TFT顯示屏的指定位置。
圖5 軟件設計流程圖
在不同的地點、時間和天氣環(huán)境下得到的測試結(jié)果分別做了5次仿真實驗,通過仿真結(jié)果可以很好的驗證本設計具有定位準確、性能穩(wěn)定的特點。
圖6 Matlab仿真圖
由圖可知,在配置GPS定位模塊只上報$GNRMC語句和不做任何處理,僅僅通過代碼編程去識別的方式進行對比后發(fā)現(xiàn),經(jīng)過配置處理后的定位數(shù)據(jù)顯示時間(晴天學校)要明顯低于不經(jīng)過處理的時間(陰雨天宿舍)。關(guān)于GPS定位應用研究的實物效果圖如圖7所示。
圖7 實物效果圖
本文經(jīng)過軟件和硬件的電路設計,以及對衛(wèi)星通信報文分析,采用STM32單片機作為數(shù)據(jù)處理和顯示控制處理器,完成了對GPS衛(wèi)星定位模塊的初始化配置和對TFT屏的數(shù)據(jù)輸出顯示,針對過多的冗余定位信息進行了優(yōu)化,減小了顯示時間,達到了預期的實驗效果。