趙書朵,諶海云,高鳳水,武衛(wèi)麗
(西南石油大學(xué),四川 成都 610500)
由于視頻技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)多媒體應(yīng)用已經(jīng)逐漸推廣?;诰W(wǎng)絡(luò)技術(shù)的各種視頻通信的應(yīng)用,網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控也應(yīng)運(yùn)而生,它以其直觀、方便、信息內(nèi)容豐富而被廣泛應(yīng)用于電信、電力、銀行、交通等場(chǎng)合,并得到越來(lái)越廣泛的應(yīng)用,因此對(duì)基于網(wǎng)絡(luò)的遠(yuǎn)程監(jiān)控的研究具有重要意義[1]。
系統(tǒng)的設(shè)計(jì)思路是結(jié)合網(wǎng)絡(luò)通信技術(shù)和視頻處理技術(shù),開發(fā)一套基于ARM的多路網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。系統(tǒng)由前端數(shù)碼攝像頭、視頻服務(wù)器以及遠(yuǎn)程監(jiān)控端三部分構(gòu)成。主要實(shí)現(xiàn)嵌入式視頻服務(wù)器直接接入Internet,通過網(wǎng)絡(luò)與遠(yuǎn)程PC機(jī)進(jìn)行通信;在嵌入式視頻服務(wù)器終端上要完成視頻圖像采集、JPEG壓縮編碼,并通過以太網(wǎng)把圖像傳輸?shù)絀nternet上,在遠(yuǎn)程PC監(jiān)控端對(duì)圖像進(jìn)行逆處理,實(shí)現(xiàn)解壓顯示,并進(jìn)行攝像頭云臺(tái)的遠(yuǎn)程控制。
系統(tǒng)實(shí)現(xiàn)了3路視頻圖像的監(jiān)控,由作為服務(wù)器的ARM系統(tǒng)、監(jiān)控計(jì)算機(jī)、網(wǎng)絡(luò)傳輸?shù)炔糠纸M成。ARM系統(tǒng)由微處理器、USB攝像頭、云臺(tái)控制模塊以及相應(yīng)的硬件接口組成,監(jiān)控計(jì)算機(jī)對(duì)多路視頻圖像進(jìn)行采集、解壓、顯示,傳輸部分在局域網(wǎng)內(nèi)實(shí)現(xiàn)[2-4]。視頻監(jiān)控系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖
監(jiān)控系統(tǒng)不僅要實(shí)現(xiàn)視頻圖像的采集和壓縮,同時(shí)還需要實(shí)現(xiàn)這些數(shù)據(jù)的網(wǎng)絡(luò)傳輸,系統(tǒng)以ARM微處理器PXA270作為系統(tǒng)的控制中心,采用可編程邏輯器件CPLD協(xié)助CPU管理系統(tǒng)總線信號(hào),PXA270處理器監(jiān)控各個(gè)功能模塊的啟動(dòng)和運(yùn)行,如視頻采集、圖像壓縮、數(shù)據(jù)傳輸部分,控制數(shù)據(jù)流向,通過USB攝像頭采集視頻圖像,采用一個(gè)二自由度云臺(tái)控制攝像頭的轉(zhuǎn)動(dòng),并通過與網(wǎng)絡(luò)接口芯片LAN91C111的連接實(shí)現(xiàn)與PC機(jī)的以太網(wǎng)通信。系統(tǒng)硬件框圖如圖2所示。
PXA270是Intel公司開發(fā)的基于XScale架構(gòu)的處理器,內(nèi)核采用ARMv5TE,外圍控制器眾多。內(nèi)置了Intel的無(wú)線MMX技術(shù),能夠顯著提升多媒體性能,此外PXA270也包含了Intel的SpeedStep技術(shù),能夠根據(jù)需要?jiǎng)討B(tài)調(diào)節(jié)CPU的性能,真正實(shí)現(xiàn)了低功耗、高性能。同其他XScale處理器一樣,支持多種嵌入式操作系統(tǒng),如 Linux,Windows,WinCE,Nucleus,Palm OS,VxWorks等。
系統(tǒng)的攝像頭云臺(tái)采用兩個(gè)舵機(jī)進(jìn)行控制,一個(gè)控制水平方向旋轉(zhuǎn),一個(gè)控制垂直方向旋轉(zhuǎn)。兩個(gè)舵機(jī)旋轉(zhuǎn)的角度均為-90°~90°,水平和垂直旋轉(zhuǎn)的步進(jìn)角度通過程序進(jìn)行設(shè)置。
舵機(jī)的控制信號(hào)是一個(gè)脈寬調(diào)制(PWM)信號(hào),系統(tǒng)采用外接單片機(jī),令單片機(jī)輸出PWM脈沖控制舵機(jī)。單片機(jī)采用了Freescale公司推出的S12系列中的一款增強(qiáng)型16位單片機(jī)MC9S12DG128B作為云臺(tái)控制的核心模塊,此款單片機(jī)片內(nèi)資源及I/O接口豐富,接口模塊包括 SPI、SCI、IIC、A/D、PWM 等。它具有8路8位獨(dú)立的PWM通道,通過相應(yīng)寄存器的設(shè)置可變成4個(gè)16位的PWM通道,每個(gè)通道都有專用的計(jì)數(shù)器,PWM輸出極性和對(duì)齊方式可通過軟件編程進(jìn)行選擇[5]。
系統(tǒng)采用SMSC公司的單芯片網(wǎng)絡(luò)控制器LAN91C111接入網(wǎng)絡(luò),它可以工作在兩種速度下,10M以太網(wǎng)或者100M以太網(wǎng),支持與CPU之間進(jìn)行 8bits、16bits、32bits的數(shù)據(jù)交換。LAN91C111 工作流程比較簡(jiǎn)單,驅(qū)動(dòng)程序?qū)⒁l(fā)送的數(shù)據(jù)包按指定格式寫入芯片并啟動(dòng)發(fā)送命令,LAN91C111會(huì)自動(dòng)把數(shù)據(jù)包轉(zhuǎn)換成物理幀格式在物理信道上傳輸;反之芯片收到物理信號(hào)后自動(dòng)將其還原成數(shù)據(jù),并按指定格式存放在芯片RAM中以便主機(jī)程序取用。簡(jiǎn)言之就是LAN91C111完成數(shù)據(jù)包與電信號(hào)之間的相互轉(zhuǎn)換。對(duì)LAN91C111的編程主要包括初始化、發(fā)送數(shù)據(jù)包、接收數(shù)據(jù)包3部分。
圖2 系統(tǒng)硬件框圖
以太網(wǎng)接口在系統(tǒng)中不僅用來(lái)實(shí)現(xiàn)網(wǎng)際互聯(lián),還有一個(gè)重要的用途就是通過以太網(wǎng)下載操作系統(tǒng)鏡像,也通過以太網(wǎng)來(lái)傳輸CE設(shè)備和開發(fā)機(jī)(PC機(jī))之間的通信信息。
ARM端軟件主要由系統(tǒng)硬件層、嵌入式操作系統(tǒng)和應(yīng)用程序組成。整個(gè)軟件體系結(jié)構(gòu)如圖3所示。
圖3 嵌入式系統(tǒng)軟件體系
嵌入式實(shí)時(shí)操作系統(tǒng)Windows CE 5.0作為系統(tǒng)的軟件平臺(tái),設(shè)備驅(qū)動(dòng)程序采用流接口驅(qū)動(dòng)模型編寫,流接口驅(qū)動(dòng)程序由設(shè)備管理器統(tǒng)一加載、管理和卸載;應(yīng)用程序使用Windows CE操作系統(tǒng)的文件API函數(shù)和流接口進(jìn)行通信,從而達(dá)到應(yīng)用程序訪問驅(qū)動(dòng)程序及操作硬件的目的;流接口驅(qū)動(dòng)程序具有固定的入口點(diǎn)函數(shù),Windows CE的文件系統(tǒng)通過這些入口點(diǎn)函數(shù)與流接口驅(qū)動(dòng)進(jìn)行通信[6]。
系統(tǒng)主要開發(fā)了USB羅技攝像頭的驅(qū)動(dòng)程序、云臺(tái)控制模塊需要的GPIO驅(qū)動(dòng)程序。驅(qū)動(dòng)程序編譯好之后形成DLL文件,然后直接編譯入操作系統(tǒng)鏡像中。
應(yīng)用軟件設(shè)計(jì)是遠(yuǎn)程視頻監(jiān)控系統(tǒng)的另一個(gè)軟件核心,包括視頻圖像采集、JPEG圖像壓縮和編碼、本地保存和顯示、TCP服務(wù)器/客戶端的網(wǎng)絡(luò)通信、云臺(tái)控制、多線程技術(shù)等核心功能模塊。
系統(tǒng)采用USB羅技快看攝像頭,利用前面開發(fā)的攝像頭驅(qū)動(dòng),在應(yīng)用程序中可以通過CreateFile,ReadFile,WriteFile,DeviceIoControl等文件 API函數(shù)來(lái)實(shí)現(xiàn)現(xiàn)場(chǎng)圖像的采集。然后采用JPEG壓縮算法[7],對(duì)采集到的RGB24真彩色格式的圖像進(jìn)行壓縮,之后調(diào)用IImage組件,進(jìn)行JPEG數(shù)據(jù)的解碼,把JPEG格式的圖片轉(zhuǎn)換成Bitmap圖像,然后進(jìn)行本地顯示。
系統(tǒng)的攝像頭云臺(tái)由兩個(gè)舵機(jī)組成,由飛思卡爾單片機(jī)進(jìn)行控制,單片機(jī)系統(tǒng)要實(shí)現(xiàn)對(duì)舵機(jī)輸出轉(zhuǎn)角的控制,需完成兩個(gè)任務(wù):(1)產(chǎn)生基本的PWM周期信號(hào),即周期為20 ms的脈沖信號(hào);(2)脈寬的調(diào)整,即單片機(jī)模擬PWM信號(hào)的輸出,并且調(diào)整占空比,控制舵機(jī)的轉(zhuǎn)動(dòng)。
系統(tǒng)中網(wǎng)絡(luò)傳輸部分的軟件實(shí)現(xiàn)運(yùn)用了BSD Socket編程技術(shù),采用的是基于TCP協(xié)議的流式套接字[8]。
TCP服務(wù)器端編程的一般流程為:首先TCP服務(wù)器端調(diào)用Socket函數(shù)建立流式套接字,然后調(diào)用Bind函數(shù)綁定本地地址,接著調(diào)用Listen函數(shù)進(jìn)行監(jiān)聽客戶端連接,一旦監(jiān)聽到客戶端連接請(qǐng)求后,服務(wù)器套接字將調(diào)用Accept函數(shù)接受客戶端連接請(qǐng)求,并建立連接,同時(shí)服務(wù)器端會(huì)增加一個(gè)單獨(dú)的套接字與客戶端進(jìn)行通信。
對(duì)于PC客戶端來(lái)說,首先調(diào)用Socket函數(shù)建立流式套接字,然后調(diào)用Connect函數(shù),請(qǐng)求與服務(wù)器端TCP建立連接,成功建立連接后,即可同服務(wù)器端進(jìn)行通信。
在PC機(jī)上運(yùn)行此網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的監(jiān)控終端,系統(tǒng)運(yùn)行穩(wěn)定良好,畫面清晰,圖像較為流暢,如圖4所示。在監(jiān)控端可實(shí)時(shí)觀看遠(yuǎn)程視頻圖像并可保存圖像、進(jìn)行攝像頭的遠(yuǎn)程控制等。視頻數(shù)據(jù)采集的速度較快,最快能達(dá)到每秒鐘采集15幀圖像,這完全能夠滿足監(jiān)控系統(tǒng)的需要。
圖4 視頻監(jiān)控端軟件界面
該文設(shè)計(jì)的基于ARM和Windows CE的嵌入式遠(yuǎn)程網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),采用模塊化設(shè)計(jì)思想,系統(tǒng)的各個(gè)子模塊相對(duì)獨(dú)立。系統(tǒng)的特點(diǎn)是采集圖像清晰度高、穩(wěn)定性好,可同時(shí)采集3路圖像,可動(dòng)態(tài)調(diào)整幀速率和幀大小,適合各種不同的帶寬,支持遠(yuǎn)程和本地云臺(tái)控制,圖像存儲(chǔ)、監(jiān)看、遠(yuǎn)程控制可同步進(jìn)行,監(jiān)控距離隨網(wǎng)絡(luò)延伸而不斷加長(zhǎng),具有良好的發(fā)展應(yīng)用前景。
[1]期 彤.TI DSP助力中國(guó)重點(diǎn)應(yīng)用市場(chǎng)創(chuàng)新[J].電子設(shè)計(jì)應(yīng)用,2007(9):128-132.
[2]李珍輝,段 斌.基于ARM的嵌入式監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008(10-2):142-144.
[3]萬(wàn)松峰,黃惟公.基于WinCE&ARM的嵌入式工業(yè)監(jiān)控系統(tǒng)的開發(fā)[J].西華大學(xué)學(xué)報(bào):自然科學(xué)版,2005,24(6):26-28,36.
[4]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.
[5] 王 威.HCS12微控制器原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007(10):168-182.
[6]何宗鍵.Windows CE嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2006.
[7]張益貞,劉 滔.Visual C++實(shí)現(xiàn)MPEG/JPEG編解碼技術(shù)[M].北京:人民郵電出版社,2003(3):10-69.
[8] 汪 兵,李存斌.EVC高級(jí)編程及其應(yīng)用開發(fā)(Embedded Visual C++嵌入式編程)[M].北京:中國(guó)水利水電出版社,2005.