無(wú)線網(wǎng)絡(luò)技術(shù)在近一兩年開(kāi)始全面普及,,無(wú)論是在家庭用戶還是企業(yè)用戶中,我們都能看到無(wú)線技術(shù)的影子,。 認(rèn)識(shí)無(wú)線監(jiān)控,,相信大家對(duì)有線監(jiān)控系統(tǒng)比較了解,有線監(jiān)控系統(tǒng)主要由網(wǎng)絡(luò)攝像機(jī),、云臺(tái),、視頻服務(wù)器、監(jiān)控終端等設(shè)備組成,。而無(wú)線監(jiān)控系統(tǒng)所需要的設(shè)備則比較簡(jiǎn)單,,它只需要無(wú)線網(wǎng)絡(luò)攝像機(jī)、無(wú)線AP,、監(jiān)控終端等設(shè)備組成,,如果需要遠(yuǎn)距離無(wú)線監(jiān)控,還要增加戶外無(wú)線網(wǎng)橋等設(shè)備,。
在此提出一種基于嵌入式Windows CE5.O的無(wú)線視頻監(jiān)控系統(tǒng),。解決了傳統(tǒng)視頻監(jiān)控系統(tǒng)成本高、體積大,、傳輸距離有限,、功耗大、安裝不方便等問(wèn)題,。該系統(tǒng)的設(shè)計(jì)將為無(wú)線視頻監(jiān)控提供一種新的思路,、方法和技術(shù)路線;在安防,、遠(yuǎn)程教育,、遠(yuǎn)程視頻會(huì)議、醫(yī)療系統(tǒng)等無(wú)線視頻領(lǐng)域具有廣闊的應(yīng)用前景,。
Windows CE作業(yè)系統(tǒng)是Windows家族中最新的成員,,專門(mén)設(shè)計(jì)給掌上型電腦(HPCs)所使用的電腦環(huán)境。這樣的作業(yè)系統(tǒng)可使完整的可攜式技術(shù)與現(xiàn)有的Windows桌面技術(shù)整合工作,。 Windows CE 被設(shè)計(jì)成針對(duì)小型設(shè)備(它是典型的擁有有限內(nèi)存的無(wú)磁盤(pán)系統(tǒng))的通用操作系統(tǒng),, Windows CE 可以通過(guò)設(shè)計(jì)一層位于內(nèi)核和硬件之間代碼來(lái)用設(shè)定硬件平臺(tái),這即是眾所周知的硬件抽象層(HAL)(在以前解釋時(shí),,這被稱為 OEMC (原始設(shè)備制造)適應(yīng)層,,即 OAL; 內(nèi)核壓縮層,,即 KAL. 以免與微軟的 Windows NT 操作系統(tǒng) HAL 混淆)。
1 系統(tǒng)的整體硬件框圖介紹
基于嵌入式WinCE5.0的無(wú)線監(jiān)控系統(tǒng)的硬件系統(tǒng)主要由嵌入式終端和服務(wù)器端的PC機(jī)組成,。嵌入式終端平臺(tái)的微處理器選擇的是基于ARM9T20內(nèi)核的S3C2440,,S3C2440有豐富的接口,其中攝像頭接口與CMOS的攝像頭相連,,串口與GPRS發(fā)射模塊相連,;服務(wù)器端主要是1臺(tái)PC機(jī)和GPRS接收模塊。整個(gè)框圖如1所示,。
系統(tǒng)首先通過(guò)S3C2440微處理器控制CMOS攝像頭采集圖像數(shù)據(jù),,經(jīng)過(guò)壓縮編碼后,再通過(guò)GPRS無(wú)線發(fā)射模塊將壓縮后的數(shù)據(jù)發(fā)射出去,,在服務(wù)器端的PC機(jī)通過(guò)GPRS接收模塊接收數(shù)據(jù),,并通過(guò)相應(yīng)的應(yīng)用程序,對(duì)視頻數(shù)據(jù)進(jìn)行解碼,,并通過(guò)屏幕顯示出來(lái),。其中包含有S3C2440微處理器的嵌入式終端平臺(tái)的核心控制板如圖2所示。
2 系統(tǒng)的擴(kuò)展接口設(shè)計(jì)
2.1 攝像頭接口設(shè)計(jì)
攝像頭(CAMERA)又稱為電腦相機(jī),,電腦眼等,,是一種視頻輸入設(shè)備,被廣泛的運(yùn)用于視頻會(huì)議,,遠(yuǎn)程醫(yī)療及實(shí)時(shí)監(jiān)控等方面,。普通的人也可以彼此通過(guò)攝像頭在網(wǎng)絡(luò)進(jìn)行有影像、有聲音的交談和溝通,。另外,,人們還可以將其用于當(dāng)前各種流行的數(shù)碼影像,影音處理,。
攝像頭中用的圖像采集芯片為OV9650圖像傳感器,,該圖像傳感器具有10位的數(shù)據(jù)接口和標(biāo)準(zhǔn)的SCCB接口,,采用CSP一28封裝,,體積小。
該芯片支持RGB(4:2:2),,YUV(4:2:2),,YCrCb(4:2:2)三種數(shù)據(jù)輸出格式,內(nèi)置138個(gè)設(shè)備控制寄存器,,地址分別從Ox00~Ox8A,,通過(guò)SCCB接口可以方便地設(shè)置傳感器視窗大小、增益,、白平衡校正,、曝光控制,、飽和度、色調(diào)等參數(shù),。包含有圖像傳感器OV9650攝像頭模塊如圖3所示,。
S3C2440有一個(gè)專用的攝像頭接口,CPU可以直接和CMOS圖像傳感器連接,,當(dāng)0V9650輸出數(shù)據(jù)格式為8位的YUV時(shí),,要用到數(shù)據(jù)線D2~D9(D9為MSB位,D2為L(zhǎng)SB位),;當(dāng)輸出的數(shù)據(jù)格式為10位RGB,,用數(shù)據(jù)線D0~D9(D9為MSB位,D0為L(zhǎng)SB位),,該系統(tǒng)用YUV格式,。該攝像頭模塊與S3C2440的Camera接口連接,其電路圖分別如圖4~圖6所示,。
其中用到了TI公司的電平轉(zhuǎn)換芯片74LVC4245,,是一種雙電源的電平移位器,電平移位在其內(nèi)部進(jìn)行,。5 V端用5 V電源作為VDD_CAM,,而3.3 V端則用3.3 V作為VCC33。雙電源能保證兩邊端口的輸出擺幅都能達(dá)到滿電源幅值,。
2.2 GPRS模塊的接口設(shè)計(jì)
通用分組無(wú)線服務(wù)技術(shù)(General Packet Radio Service)的簡(jiǎn)稱,,它是GSM移動(dòng)電話用戶可用的一種移動(dòng)數(shù)據(jù)業(yè)務(wù)。GPRS可說(shuō)是GSM的延續(xù),。GPRS和以往連續(xù)在頻道傳輸?shù)姆绞讲煌?,是以封包(Packet)式來(lái)傳輸,因此使用者所負(fù)擔(dān)的費(fèi)用是以其傳輸資料單位計(jì)算,,并非使用其整個(gè)頻道,,理論上較為便宜。GPRS的傳輸速率可提升至56甚至114Kbps.
S3C2440有3個(gè)UART通道,,利用其中一個(gè)通道設(shè)計(jì)串口,,使其與GPRS模塊連接,由于S3C2440自帶的UART控制器,,使得硬件開(kāi)發(fā)和軟件設(shè)計(jì)都比較簡(jiǎn)單,。但RS 232標(biāo)準(zhǔn)所定義的高、低電平信號(hào),,與一般的微控制器系統(tǒng)的電路所定義的高,、低電平信號(hào)完全不同,如S3C2440系統(tǒng)的標(biāo)準(zhǔn)邏輯“1”對(duì)應(yīng)電平2~3 V,標(biāo)準(zhǔn)邏輯“O”對(duì)應(yīng)0~4 V電平,。顯然,,與RS 232標(biāo)準(zhǔn)所述的電平信號(hào)完全不同。兩者之間要進(jìn)行通信,,必須經(jīng)過(guò)信號(hào)電平的轉(zhuǎn)換,,目前常使用的電平轉(zhuǎn)換芯片有MAX232,MAX3221和MAX324.3,,具體設(shè)計(jì)電路如圖7和圖8所示,。
3 操作系統(tǒng)平臺(tái)的定制
Windows CE是高度模塊化的嵌入式操作系統(tǒng),正因?yàn)槿绱?,用戶為了滿足特定的要求而對(duì)操作系統(tǒng)進(jìn)行定制,,如果為自己的嵌入式設(shè)備定制Windows CE操作系統(tǒng),則須進(jìn)行創(chuàng)建,、構(gòu)建,、運(yùn)行和發(fā)布OS等一系列操作。在無(wú)線視頻監(jiān)控系統(tǒng)中,,根據(jù)功能要求,,利用Platform Builder5.0定制系統(tǒng)的流程如下:
(1)導(dǎo)入BSP開(kāi)發(fā)包。由于用的是三星公司的基于ARM920T核的S3C2440,,所以在BSP包中找到SMDK2440文件下的SMDK2440.CEC文件將其導(dǎo)入,。打開(kāi)“Platform Builder5.0”,選擇“File”菜單下的 “Manage Catalog Features”,,如圖9所示,。在彈出的對(duì) 話框中單擊“Import”,瀏覽到SMDK2440文件下的 smdk2440.cec文件,,將其導(dǎo)入,。
(2)創(chuàng)建項(xiàng)目。根據(jù)WinCE無(wú)線監(jiān)控系統(tǒng)的要求,,在定制系統(tǒng)的過(guò)程中選擇合適的組件來(lái)實(shí)現(xiàn),。其中包括的組件有:支持應(yīng)用程序開(kāi)發(fā)的MFC組件和支持網(wǎng)絡(luò)的相關(guān)組件等。
(3)編譯項(xiàng)目:點(diǎn)擊菜單“Build OS”→“Sysgen”開(kāi)始編譯項(xiàng)目,。
(4)下載運(yùn)行時(shí)映像,,調(diào)試成功后啟動(dòng)。編譯成功后會(huì)在目WinCES00PBWorkspacestestlRelDirsmdk2 440_ARMV4I_Release下生成nk.bin和nk.nb0等文件,,將nk.nb0下載到硬件平臺(tái)上運(yùn)行,。
4 驅(qū)動(dòng)程序的開(kāi)發(fā)
4.1 攝像頭驅(qū)動(dòng)的開(kāi)發(fā)
攝像頭驅(qū)動(dòng)開(kāi)發(fā)是設(shè)計(jì)中的一個(gè)難點(diǎn),,也是一個(gè)關(guān)鍵部分,。由于攝像頭采集的視頻數(shù)據(jù)可以當(dāng)作數(shù)據(jù)流來(lái)處理,所以對(duì)于攝像頭的驅(qū)動(dòng)將采用流式接口的方法來(lái)開(kāi)發(fā)。
(1)在Platform Builder中打開(kāi)前面定制的操作系統(tǒng)工程,,然后在新建一個(gè)WIN32 DLL項(xiàng)目,,添加2個(gè)C++的源文件,即:camera.cpp和IIc.cpp,,其中camer—a.cpp包含驅(qū)動(dòng)的入口函數(shù)DLLMain(),;驅(qū)動(dòng)的前綴為“CIS”,IIc.cpp包含通過(guò)ICC接口對(duì)攝像頭相關(guān)寄存器進(jìn)行配置的函數(shù),。
(2)根據(jù)前面的硬件電路和OV9650芯片的工作時(shí)序,,通過(guò)編寫(xiě)流接口的CIS_Init函數(shù)實(shí)現(xiàn)OV9650初始化。主要包括以下3步:調(diào)用InterruptInitialize(SYSINTR_CAM,,CameraEvent,,NULL,0)函數(shù)通知系統(tǒng)注冊(cè)中斷,;調(diào)用CreateEvent()函數(shù)創(chuàng)建一個(gè)CameraEvent事件,;調(diào)用CreateThread()函數(shù)創(chuàng)建CameraThread線程。在Camera Capture Thread服務(wù)函數(shù)中調(diào)用WaitForSingleObject(CameraEvent,,Dis—play Time)函數(shù)等待Camera Event事件的發(fā)生,。此事件由與其關(guān)聯(lián)的SYSINTR_CAM中斷來(lái)觸發(fā)。此外還有其它流接口函數(shù)(CIS_IOControl等)也可以以類似的方法實(shí)現(xiàn),。