賈海云,余 庚
(1.合肥財(cái)經(jīng)職業(yè)學(xué)院,安徽合肥 230601;2.福州理工學(xué)院,福建福州 350506)
隨著大規(guī)模集成電路技術(shù)在航空領(lǐng)域的應(yīng)用,無人機(jī)正以獨(dú)到的優(yōu)勢在民用以及軍用領(lǐng)域扮演著不可或缺的角色。比如,當(dāng)前興起的共享電動汽車和共享單車產(chǎn)業(yè),出于防盜考慮,對移動目標(biāo)即時(shí)導(dǎo)航定位越來越受到廠家的關(guān)注;當(dāng)下旅游業(yè)盛行的無人航拍機(jī)等實(shí)時(shí)導(dǎo)航定位技術(shù)也受到消費(fèi)者的青睞。解決GPS的通信問題并使導(dǎo)航信息更加精準(zhǔn)可靠已然成為研究熱點(diǎn)。GPS因可提供定位、時(shí)間、高度、速度等豐富信息而成為無人機(jī)不可或缺的部分。無人機(jī)需要數(shù)據(jù)采集模塊與GPS接收機(jī)進(jìn)行通信,以完成導(dǎo)航信息的采集,而單片機(jī)便是扮演數(shù)據(jù)采集模塊的角色。本次設(shè)計(jì)的數(shù)據(jù)解析電路采用的是異步串行通信的方式,利用單片機(jī)與GPS接收機(jī)進(jìn)行數(shù)據(jù)通信并解析出所導(dǎo)航的信息。
圖1 無人機(jī)GPS導(dǎo)航結(jié)構(gòu)
圖1為無人機(jī)GPS導(dǎo)航結(jié)構(gòu)圖。GPS即本次設(shè)計(jì)所指的GPS接收機(jī)傳感器,PIC16F877A單片機(jī)則對應(yīng)圖中的導(dǎo)航數(shù)據(jù)采集模塊。將采集的數(shù)據(jù)發(fā)送給飛控CPU,飛控CPU對數(shù)據(jù)進(jìn)行分析處理后再發(fā)給地面站。地面站的數(shù)據(jù)傳輸模塊收到信號后傳給MCU模塊。PC機(jī)通過RS232串行接口不斷采集MCU模塊數(shù)據(jù)并顯示同時(shí)判斷對比接收到的數(shù)據(jù),進(jìn)而實(shí)現(xiàn)對無人機(jī)的導(dǎo)航。
GPS通信系統(tǒng)在工作狀態(tài)下的耗電僅50mA。本次設(shè)計(jì)采用PIC16F877A單片機(jī)[1]基于9600bps的波特率與GPS接收機(jī)進(jìn)行串行通信。其電路圖如圖2所示。
圖2 系統(tǒng)硬件電路圖
GPS接收機(jī)記錄GPS信號并對信號進(jìn)行解調(diào)和濾波處理,還原出GPS衛(wèi)星發(fā)送的導(dǎo)航電文,再求出信號在無人機(jī)與衛(wèi)星間傳播的時(shí)間和載波相位差,進(jìn)而實(shí)時(shí)獲得導(dǎo)航數(shù)據(jù),同時(shí)還可通過兩個(gè)串口與外部通信。如圖3所示,串口1為主串口(對應(yīng)TXA和RXA)全雙工模式,串口2為輔助串口(提供修正量,對應(yīng)TXB和RXB)半雙工模式。通過這兩個(gè)串口同外設(shè)連接,也可用軟件編程或硬件設(shè)置來配置串口特性。通過軟件編程配置串口的波特率為9600bps,利用串口1與單片機(jī)進(jìn)行通信。其6個(gè)管腳分別為TXB、GND、RXA、TXA、VDD、RXB。將GND、VDD分別接電源地和5V電壓,將TXA與單片機(jī)的RX相連,以建立GPS[2]接收機(jī)與數(shù)據(jù)采集模塊間的數(shù)據(jù)通信。
圖3 GPS模塊圖
圖4 單片機(jī)模塊圖
為了使異步通信時(shí)獲得更穩(wěn)定的波特率9600bps,便于與GPS接收機(jī)進(jìn)行數(shù)據(jù)通信,選擇11.0592MHz作為晶振。端口MCLR/VPP/TWV具有系統(tǒng)復(fù)位功能,如圖4所示。當(dāng)其為低電平時(shí)系統(tǒng)復(fù)位,R1為上拉電阻,使單片機(jī)在正常工作時(shí),MCLR/VPP/TWV端口為高電平。按鍵S1為系統(tǒng)的復(fù)位鍵,按下時(shí)MCLR/VPP/TWV端口為低電平,即對單片機(jī)進(jìn)行復(fù)位操作,R1、S1為單片機(jī)復(fù)位電路。VDD、VSS管腳分別接電源的正(+5)負(fù)(GND)極。
GPS接收機(jī)和PIC16F877A單片機(jī)的工作電壓均為5V,因此本設(shè)計(jì)的電源模塊采用LM7805集成穩(wěn)壓器,如圖5所示。LM7805具有三個(gè)管腳,分別為輸入端、公共端和輸出端。輸入端可接大于等于5V的直流電壓的正極,公共端接GND,輸出端便可得到穩(wěn)定的5V電壓。電容C3用于抵消導(dǎo)線傳輸引起的電感效應(yīng)。電容C4可改善負(fù)載的瞬態(tài)響應(yīng)。C4較大,在穩(wěn)壓器輸入端斷開時(shí),C4會通過穩(wěn)壓器放電,易造成穩(wěn)壓器損壞。為此,接一只1N4007續(xù)流二極管起保護(hù)作用。電源開關(guān)鎖住時(shí)電源接通,反之電源斷開。LED燈是上電指示燈,當(dāng)它亮?xí)r說明已上電,電源接通;反之則電源模塊沒有提供工作電壓。
圖5 電源模塊圖
圖6 調(diào)試模塊圖
PIC16F877A單片機(jī)將接收到的GPS數(shù)據(jù)進(jìn)行解析后通過TX口輸出到PC調(diào)試,在PC上打開串口調(diào)試工具軟件即可顯示無人機(jī)導(dǎo)航到的GPS數(shù)據(jù),進(jìn)而進(jìn)行驗(yàn)證。如圖6所示,單片機(jī)串口輸出的是TTL電平,而PC的串口電平是RS232標(biāo)準(zhǔn)電平:TTL電平是邏輯“0”為0V,邏輯“1”為5V或3.3V;RS232電平是邏輯“0”為3~15V,邏輯“1”為-3~-15V。為了使兩者的電平相匹配,采用MAX232電平轉(zhuǎn)換芯片將TTL電平轉(zhuǎn)換成RS-232電平。MAX232接上所需的外圍器件:T1in腳與單片機(jī)的TX管腳相連,T1out接到串口座的第2管腳,串口座的第5管腳接電源地。
無人機(jī)需要的GPS數(shù)據(jù)有:經(jīng)緯度、速度、高度、時(shí)間、可用衛(wèi)星數(shù)。GPS接收機(jī)可提供$GPRMC、$GPGGA、$GPVTG等格式的GPS數(shù)據(jù),從GPRMC數(shù)據(jù)中解析出經(jīng)緯度、時(shí)間數(shù)據(jù);從GPVTG數(shù)據(jù)中解析出速度數(shù)據(jù)(公里/小時(shí));從GPGGA數(shù)據(jù)中解析出可用衛(wèi)星數(shù)和高度數(shù)據(jù)(米),然后從PIC單片機(jī)輸出三種GPS數(shù)據(jù)幀結(jié)構(gòu)。
C,<1>時(shí)<2>分<3>秒,<4>,<5>度<6>分,<7>,<8>度<9>分,<10>,<11>日<12>月<13>年<14>
各數(shù)據(jù)區(qū)的含義如下:
字母C為起始標(biāo)志符
<1>時(shí)間hh(GPS接收的是UTC時(shí)間。北京時(shí)間比UTC時(shí)間早8小時(shí),此處是經(jīng)過轉(zhuǎn)換后的北京時(shí)間)
<2>時(shí)間mm
<3>時(shí)間ss
<4>定位狀態(tài),A=有效定位,V=無效定位
<5>緯度dd
<6>緯度mm.mmm
<7>緯度半球N(北半球)或S(南半球)
<8>經(jīng)度ddd
<9>經(jīng)度mm.mmm
<10>經(jīng)度半球E(東經(jīng))或W(西經(jīng))
<11>日期dd
<12>日期mm
<13>日期yy
<14>回車換行
S,<1>km/h<2>
各數(shù)據(jù)區(qū)的含義如下:
<1>速度(公里/小時(shí))
<2>回車換行
H,<1>個(gè),<2>m<3>
各數(shù)據(jù)區(qū)的含義如下:
<1>可用衛(wèi)星數(shù)
<2>高度(米)
<3>回車換行
圖7 數(shù)據(jù)解析流程圖
本次設(shè)計(jì)的系統(tǒng)程序包括串口初始化程序、串口收發(fā)程序、數(shù)據(jù)處理程序。串口初始化程序?qū)IC16F877A的串口[3]通信相關(guān)寄存器進(jìn)行設(shè)置。串口收發(fā)程序以9600bps的波特率接收來自GPS接收機(jī)的數(shù)據(jù)并將經(jīng)過數(shù)據(jù)處理程序處理的數(shù)據(jù)以同樣的波特率發(fā)送出去。數(shù)據(jù)處理程序指PIC16F877A把接收到的GPS數(shù)據(jù)進(jìn)行解析,獲得相應(yīng)的導(dǎo)航數(shù)據(jù),并以新的格式封裝起來。相應(yīng)流程如圖7所示。
本次測試點(diǎn)的經(jīng)緯度是東經(jīng)119度28分,北緯26度08分,平均海拔高度為幾十米。使用轎車模擬無人機(jī)進(jìn)行調(diào)試,除了無法效仿無人機(jī)變化的飛行高度外,其他數(shù)據(jù)參數(shù)的變化性均可高度模擬無人機(jī)。在轎車內(nèi)將設(shè)計(jì)的電路設(shè)備與PC[4]連接后,打開串口調(diào)試工具軟件,顯示來自PIC16F877A單片機(jī)發(fā)送的解析后的GPS數(shù)據(jù)。分別記錄同一時(shí)刻電子手表上的北京時(shí)間(精確到秒)與調(diào)試所得的北京時(shí)間(精確到0.001秒),如表1所示。
轎車加速或以某個(gè)速度勻速行駛。選取表1的時(shí)刻對轎車儀表上顯示的速度值進(jìn)行記錄,如表2所示。調(diào)試所得數(shù)據(jù)如圖8所示。
表1 時(shí)間對照表
表2 時(shí)間與行速信息表
圖8 測試數(shù)據(jù)
根據(jù)表1相關(guān)數(shù)據(jù)可知,經(jīng)PIC16F877A解析得到的時(shí)間與調(diào)試所用的電子手表上的實(shí)際時(shí)間相符,驗(yàn)證了時(shí)間的正確性。表2里的5個(gè)時(shí)刻的速度值與圖8的對應(yīng)時(shí)刻的速度值也非常接近,這說明PIC16F 877A單片機(jī)從GPS接收機(jī)上采集到的速度是準(zhǔn)確的。
從圖8可知,時(shí)間為11點(diǎn)15分43秒到11點(diǎn)15分53秒,調(diào)試地點(diǎn)的經(jīng)緯度為:北緯26度01分左右;東經(jīng)119度25分左右。可用衛(wèi)星數(shù)為9個(gè),海拔高度為32~38米,速度為26~31km/h。其中,時(shí)間和經(jīng)緯度屬于C數(shù)據(jù),可用衛(wèi)星數(shù)和海拔高度屬于H數(shù)據(jù),速度屬于S數(shù)據(jù)。
根據(jù)調(diào)試地點(diǎn)的經(jīng)緯度、海拔高度信息及表1和表2所記錄的時(shí)間和速度數(shù)據(jù),與圖8所示數(shù)據(jù)進(jìn)行對比,可知調(diào)試值與實(shí)際值接近。
在電路設(shè)計(jì)中,將PIC16F877A作為數(shù)據(jù)采集模塊,通過異步串行通信方式對無人機(jī)GPS導(dǎo)航到的信息進(jìn)行數(shù)據(jù)解析。經(jīng)過實(shí)地測驗(yàn),將收集到的幾組動態(tài)參數(shù)數(shù)據(jù)解析后與實(shí)際數(shù)值比對均保持了高度的近似,證實(shí)了本次電路設(shè)計(jì)的正確性。該解析電路的GPS數(shù)據(jù)通信技術(shù)除了應(yīng)用在無人機(jī)[5]上,也可應(yīng)用到任何基于空間的作業(yè),如野外采樣、物流管理、智慧交通、公安巡邏等領(lǐng)域。
[參考文獻(xiàn)]
[1]王思明,張金敏,茍軍年,等.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:科學(xué)出版社,2015:176-189.
[2]劉毅科.UBX協(xié)議格式的GPS原始數(shù)據(jù)解碼與轉(zhuǎn)換[J].全球定位系統(tǒng),2016(6):80-84.
[3]孫衛(wèi)喜.單片機(jī)在C語言串口通信中的應(yīng)用解析[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016(7):160-163.
[4]韓雁,徐煜明.微機(jī)原理與接口技術(shù)[M].北京:電子工業(yè)出版,2015:240-247.
[5]李德仁,李明.無人機(jī)遙感系統(tǒng)的研究進(jìn)展與應(yīng)用前景[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版,2016(5):50-53.