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