摘 要: 針對小型無人機航拍系統(tǒng)的功能要求和存在的問題,設計了一種圖像和GPS 數(shù)據(jù)采集系統(tǒng),并給出了系統(tǒng)的結構和工作原理。系統(tǒng)以ARM單片機為核心,采用無線通信方式將串口采集到的數(shù)據(jù)發(fā)送到地面基站,并在上位機上顯示。對數(shù)據(jù)采集、無線發(fā)送和上位機編程等關鍵問題作了分析,并給出了設計方案。實地試驗表明,本系統(tǒng)工作穩(wěn)定,可滿足無人機航拍系統(tǒng)的要求。
關鍵詞: 無人機;STM32;無線傳輸;圖像采集
無人機系統(tǒng)作為一種高端的遙控設備已經(jīng)被廣泛應用于軍事偵查、遠程監(jiān)控和地質測繪等領域。通常無人機系統(tǒng)的首要任務是將實時采集到的圖像信號通過無線通信設備傳送到地面基站。國外對于這方面的研究較早,但由于技術封鎖等原因,目前可供借鑒的資料很少,加之我國在該方面研究起步較晚,致使我國在無人機無線視頻圖像傳輸領域的技術較落后?,F(xiàn)階段的無人機圖像采集技術主要有兩種方式:一種是采用模擬傳輸方式,其頻率使用率較低,系統(tǒng)易受干擾,其圖像質量較差,信道編碼效率不高,且抗多徑干擾較差;另一種是采用模擬的CCD攝像頭通過模數(shù)轉換芯片變?yōu)閿?shù)字信號,再由控制器進行壓縮和處理,這樣不僅加重了控制器的負擔,而且也易造成系統(tǒng)功耗較大。同時,由于小型飛行器的載重及能量供給非常有限,對機載部分的功耗、重量和安裝尺度等都提出了更為嚴格的要求。本文設計了一種基于CMOS攝像頭和數(shù)字圖像處理芯片的圖像和GPS數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)具有體積小、傳輸速率高、傳輸距離遠、帶有數(shù)據(jù)壓縮和圖像增強功能的特點[1-12]。
地面基站作為無人機系統(tǒng)的“神經(jīng)中樞”,擔負著采集及分析飛行數(shù)據(jù)、驗證及評價飛行效果和保證飛行安全等重要任務。因而,一個好的無人機系統(tǒng)常常需要有功能強大的地面基站平臺才能發(fā)揮最好的飛行效果。本文設計了一種利用VB編程軟件在PC機上實現(xiàn)的具有航跡記錄與預測、手動控制飛行、飛行狀態(tài)監(jiān)控和視頻圖像顯示等功能的地面基站平臺。地面實驗表明該系統(tǒng)具有很好的應用效果[9]。
1 系統(tǒng)結構和工作原理
本系統(tǒng)包括機載的視頻圖像采集系統(tǒng)和地面基站平臺兩部分,其結構框圖如圖1所示。系統(tǒng)硬件由攝像頭模塊、GPS數(shù)據(jù)采集模塊、STM32微控制器和NRF905無線通信模塊構成。
該系統(tǒng)以STM32F103RBT6微控制器為核心,機載微控制器通過串口1和串口2分別與VC0706圖像處理芯片和GPS接收機進行通信,主要實現(xiàn)以下幾個功能。(1)機載微控制器通過控制指令控制VC0706圖像處理芯片實現(xiàn)控制攝像頭拍照、圖像數(shù)據(jù)壓縮以及數(shù)字圖像傳輸?shù)热蝿?。?)機載微控制器將GPS接收機發(fā)出的數(shù)據(jù)按照國家標準的GPS接收機數(shù)據(jù)輸出格式(GB/T 20512-2006)進行解碼。再將采集到的圖像數(shù)據(jù)和GPS數(shù)據(jù)按照事先約定好的通信協(xié)議通過NRF905無線通信模塊與地面基站的STM32微控制器進行通信,基站的微控制器再將數(shù)據(jù)通過內嵌的USB接口傳送到上位機上。由此,實現(xiàn)了圖像和GPS定位信息的采集、傳輸和上位機顯示的功能。
2 相關問題及設計方案
本系統(tǒng)大體可分為圖像和GPS數(shù)據(jù)采集、無線通信以及上位機編程三部分。
2.1 數(shù)據(jù)采集系統(tǒng)
圖像數(shù)據(jù)采集需要克服數(shù)據(jù)量大、傳輸實時性等問題,同時,需要考慮到STM32微控制器內部數(shù)據(jù)儲存容量有限[1],對圖像數(shù)據(jù)需要進行分批傳輸。數(shù)字攝像頭采集一幅480×640的圖像數(shù)據(jù)量為307 200 B,而經(jīng)過VC7076處理芯片進行壓縮率為30%的壓縮處理后,數(shù)據(jù)量可以減少為92 160 B左右[6]。STM32微控制器的串口傳輸速率可以達到115 200 b/s[4],而STM32F103RBT6微控制器的內部數(shù)據(jù)存儲器只有20 KB,無法保存一幅完整的圖像數(shù)據(jù)。由于NRF905無線發(fā)射模塊每次最多發(fā)射32 B的數(shù)據(jù),因此VC7076中接收數(shù)據(jù)只需要微控制器發(fā)送起始地址和結束地址指令即可。所以,在微控制器的軟件設計中定義了兩塊容量為1 KB的數(shù)據(jù)存儲塊,并且在接收數(shù)據(jù)時使用微控制器內嵌DMA模塊。初始化時,設置DMA數(shù)據(jù)為串口數(shù)據(jù)輸入,這樣每當微控制器的串口接收到1 B的數(shù)據(jù),就可以通過DMA模塊自動地保存到相應的地址中而不需要微控制器內部CPU的參與,這使得CPU可以空閑出來進行發(fā)送部分的處理。當一塊數(shù)據(jù)接收完成后,會觸發(fā)DMA中斷,CPU就可以在中斷中重新配置起始地址和結束地址,使得微控制器能夠循環(huán)進行數(shù)據(jù)接收。在程序中,首先定義了一個用于數(shù)據(jù)接收和發(fā)送的結構體,其中的數(shù)據(jù)成員是兩個容量為1 KB的存儲數(shù)據(jù)塊和用于指示接收和發(fā)送所用的數(shù)據(jù)塊指針。數(shù)據(jù)接收的軟件流程圖如圖2所示。
該軟件程序初始定義為:
struct Image_get_send
{
unsignedchar dat_array[2][1024];
unsigned char send_flag;
unsigned char get_flag;
}
由于GPS接收機發(fā)出的數(shù)據(jù)以ASCII碼的形式發(fā)出,并且按照GB/T 20512-2006標準進行信息編碼,因而需要對從接收機接收到的數(shù)據(jù)進行解碼從而得到能進行處理和識別的數(shù)據(jù)。GPS接收機采用的是Gstar GS-89模塊,該模塊能夠檢測當前位置的經(jīng)度、緯度、海拔高度、標準定位時間和接收衛(wèi)星數(shù)等信息。GPS接收機輸出的信息是以語句的形式進行發(fā)送的,總共有5種語句,每條語句都以$開頭,并以回車結束,同一語句中的不同數(shù)據(jù)之間采用逗號隔開。其中,GPGGA語句包含當前的定位信息,也是應用最廣的語句,因而,對GPGGA語句的解碼最重要。GPRMC語句的格式如下:
$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
其中,(1)表示定位時間,(2)、(3)表示緯度,(4)、(5)表示經(jīng)度,(9)表示海拔高度。對上述數(shù)據(jù)的解碼是系統(tǒng)獲取GPS數(shù)據(jù)的重點,解碼的軟件流程圖如圖3所示。
2.2 無線通信系統(tǒng)
無人機與地面基站之間數(shù)據(jù)的傳送需要使用無線通信系統(tǒng)來進行。系統(tǒng)的無線通信部分采用的是NRF905-33A無線模塊,該模塊的最遠通信距離可達到3 km,非常適于小范圍內的通信網(wǎng)絡,而且重量輕,適于在無人機上進行攜帶。
NRF905-33A無線模塊一次只能傳送32 B,微控制器每次需要等待無線模塊傳送完成后才能進行下一次的數(shù)據(jù)傳送。而系統(tǒng)中需要進行GPS和圖像兩種數(shù)據(jù)的傳送。為了提高無線通信的速率和通信的準確性,系統(tǒng)采用了分時傳送的方法,即利用GPS接收機每隔1 s更新一次定位數(shù)據(jù)的特性,將GPS數(shù)據(jù)的傳送設定為1 s傳送一次,而其他時間則進行圖像數(shù)據(jù)傳送。為了區(qū)分圖像數(shù)據(jù)和GPS數(shù)據(jù),在每次不同數(shù)據(jù)轉換時采用了發(fā)送32個相同數(shù)據(jù)的方法與地面基站的接收機進行同步。
2.3 上位機編程
上位機編程采用了Visual Basic編程語言。該編程語言是一種可視化的、面向對象和采用事件驅動方式的結構化高級程序設計語言,不僅簡單易學,而且功能強大。
上位機需要解決的主要問題是如何進行圖像的顯示。由于傳送到上位機的數(shù)據(jù)為JPEG格式,本文采用了一個較為巧妙的方法,即先打開一個空的JPEG格式的文件,然后在有數(shù)據(jù)發(fā)送到上位機時就檢測該數(shù)據(jù)是否為圖像的數(shù)據(jù)頭(0xff,0xd8)或數(shù)據(jù)尾(0xff,0xd9),并將數(shù)據(jù)寫入到打開的圖像文件中。當檢測到的數(shù)據(jù)為數(shù)據(jù)尾時,就將圖像文件顯示出來。其編程語句如下。
Public Sub ImageManage(bytinput()As Byte, intInputLenth As Integer)
Dim n As Integer
Dim s As Byte
On Error GoTo errji
Put #1,,bytinput()
//將獲得的數(shù)據(jù)寫入到文件中
For n = 0 To intInputLenth – 2
If bytinput(n+1)=&HD9 And bytinput(n)=&HFF Then
//是否到最后的數(shù)據(jù)
Close #1
Form1.Image1.Picture = LoadPicture("C:\rtaub.jpeg")
//顯示圖像文件
flag1_c = False
Open "C:\rtaub.jpeg" For Binary As #1
//打開一個JPEG格式的文件
flag_c = True
n = intInputLenth – 2
//獲取傳入數(shù)據(jù)的長度
Form1.Text3.Text = ""
Rxd_code = 0
End If
Next n
Exit Sub
errji: //打開出錯
Close #1 //關閉先前文件
Open"C:\rtaub.jpeg" For Binary As #1 //重新打開文件
flag_c=True
flag1_c=False
Exit Sub
End Sub
本文針對無人機系統(tǒng)的特性以及要求,提出了一種基于STM32微處理器實現(xiàn)圖像和GPS數(shù)據(jù)采集、傳輸以及在上位機顯示的設計方案。經(jīng)過靜態(tài)的地面測試證明,該系統(tǒng)能夠很好地實現(xiàn)設計要求的功能,而且傳輸速度較快,可以滿足無人機系統(tǒng)的實時性要求;該系統(tǒng)運行良好,抗干擾能力強,有很好的繼承性和維護性。本系統(tǒng)模塊化的設計方案和實現(xiàn)方法對無人機系統(tǒng)的設計和研究具有一定的參考價值。采用STM32微處理器,可以大大降低無人機系統(tǒng)的硬件設計難度,縮短設計周期。此外,STM32微處理器還支持串口燒錄和在線仿真,可以大大減少軟件設計的成本。隨著ARM單片機功能的不斷提升,基于ARM技術的STM32系列單片機以它特有的優(yōu)勢將在高新技術領域得到廣泛的應用。
參考文獻
[1] 張綺文.ARM嵌入式常用模塊與綜合系統(tǒng)設計實例精講[M].北京:電子工業(yè)出版社,2007.
[2] 閻石.數(shù)字電子技術基礎[M].北京:高等教育出版社,2008.
[3] 楊素行.模擬電子技術基礎簡明教程(第三版)[M].北京:高等教育出版社,2006.
[4] 張鑫.單片機原理及應用[M].北京:電子工業(yè)出版社,2005.
[5] 姜志海.單片機的C語言程序設計與應用[M].北京:電子工業(yè)出版社,2008.
[6] 畢文仲.微型攝像與視頻通信系統(tǒng)研究[D].北京:清華大學,2001.
[7] 袁哲俊,謝大綱,胡忠輝.微飛行器技術的最新發(fā)展[J].航空精密制造技術,2005,41(1):1-5.
[8] 張汝成,王廣生,張磊.基于ARM的電梯主控制器設計[J].計算機測量與控制,2009,17(10):1958-1961.
[9] 田蜂,杜洪根.無人機地面站控制系統(tǒng)的設計[J].計算機測量與控制,2005,13(11):1237-1239.
[10] 司兵,周傳忠,于歌.一種微小型無人機地面監(jiān)控系統(tǒng)軟件設計與實現(xiàn)[J].系統(tǒng)仿真技術,2007,3(2):90-95.
[11] 郝志成,朱明.智能目標檢測與跟蹤系統(tǒng)的設計與實現(xiàn)[J].光電工程,2007,34(1):27-31.
[12] STINGU E, LEWIS F L. A hard ware platform for research in helicopter UAV control[J]. Journal of Intelligent & Robotic Systems, 2009,54(1-3):387-406.