摘 要: 研究了一種基于ARM11的視頻采集無(wú)線傳輸系統(tǒng),實(shí)現(xiàn)了主體家庭網(wǎng)關(guān)通過(guò)攝像頭對(duì)各個(gè)分散房間的有效監(jiān)控,。系統(tǒng)選用ARM11內(nèi)核的S3C6410作為系統(tǒng)處理器,,CMOS攝像頭OV9650作為采集端,在自主設(shè)計(jì)的硬件平臺(tái)上搭建Linux軟件系統(tǒng),,利用系統(tǒng)內(nèi)部的V4L2提供的數(shù)據(jù)結(jié)構(gòu),、應(yīng)用函數(shù)等完成攝像頭的采集;在傳輸系統(tǒng)方面,,采用傳輸速度較快的WIFI-Ad-Hoc模式(端對(duì)端傳輸),,依靠TCP/IP協(xié)議的傳輸方式使采集端與家庭網(wǎng)關(guān)之間建立連接,成功實(shí)現(xiàn)家庭網(wǎng)關(guān)對(duì)各個(gè)分散采集點(diǎn)視頻信息的接收,。
關(guān)鍵詞: 視頻;采集,;傳輸,;無(wú)線網(wǎng)絡(luò);ARM11
在信息,、通信不斷發(fā)展的今天,,人們對(duì)生活環(huán)境的安全性越來(lái)越重視,有效的視頻監(jiān)控系統(tǒng)為人們解決了這個(gè)問(wèn)題,。隨著電子信息技術(shù),、網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的迅速發(fā)展,嵌入式的無(wú)線視頻監(jiān)控隨即出現(xiàn)并且飛速發(fā)展,,整個(gè)視頻監(jiān)控市場(chǎng)朝著集成化,、網(wǎng)絡(luò)化、數(shù)字化和實(shí)時(shí)化的方向發(fā)展,,而家庭視頻監(jiān)控中對(duì)采集傳輸?shù)囊笤絹?lái)越高[1],。由于視頻數(shù)據(jù)信息量大,、實(shí)時(shí)傳輸要求高,因此視頻監(jiān)控技術(shù)中視頻的采集和傳輸顯得尤為重要,。而ARM嵌入式系統(tǒng)的小型化,、成本低廉、結(jié)構(gòu)緊湊,、占用空間小,、可裁減性好、支持無(wú)線網(wǎng)絡(luò)等特點(diǎn),,使得利用ARM11+Linux構(gòu)成的采集傳輸系統(tǒng)在現(xiàn)實(shí)中具有很大的實(shí)用價(jià)值,。
本文針對(duì)網(wǎng)絡(luò)視頻采集傳輸?shù)膶?shí)際應(yīng)用需求,結(jié)合圖像采集,、無(wú)線傳輸和嵌入式系統(tǒng)等新技術(shù),,設(shè)計(jì)了基于ARM11內(nèi)核S3C6410微處理器的無(wú)線視頻傳輸系統(tǒng),在Linux系統(tǒng)平臺(tái)上實(shí)現(xiàn)通過(guò)遠(yuǎn)程控制家庭網(wǎng)關(guān)來(lái)對(duì)各個(gè)分散房間環(huán)境的有效監(jiān)控,。
1 系統(tǒng)的整體結(jié)構(gòu)
家居視頻采集傳輸系統(tǒng)的整體結(jié)構(gòu)可以分為視頻采集系統(tǒng)和視頻傳輸系統(tǒng)兩個(gè)部分,。其中家庭網(wǎng)關(guān)是視頻采集與傳輸?shù)年P(guān)鍵,是家庭監(jiān)控系統(tǒng)的主節(jié)點(diǎn)核心設(shè)備,,視頻采集傳輸?shù)母黜?xiàng)命令都需要家庭網(wǎng)關(guān)下達(dá),。整個(gè)系統(tǒng)構(gòu)成如圖1所示。
家庭網(wǎng)關(guān)的中央處理器的選擇方案比較多,,考慮到家庭網(wǎng)關(guān)的功能和成本,,選擇S3C6410微處理器作為基本的中央處理單元完成視頻信息的存儲(chǔ)及傳輸。為了方便采集模塊攝像頭視頻信息的采集處理,,選擇功能強(qiáng)大的S3C6410處理器作為采集端的核心,,方便家庭網(wǎng)關(guān)與采集模塊同時(shí)擴(kuò)展WIFI模塊來(lái)建立Ad-Hoc點(diǎn)對(duì)點(diǎn)的無(wú)線網(wǎng)絡(luò)連接,實(shí)現(xiàn)視頻的快速,、平穩(wěn),、流暢的傳輸。
整個(gè)系統(tǒng)的工作流程如下:
(1)整個(gè)系統(tǒng)上電,,使房間各個(gè)設(shè)備處于待機(jī)狀態(tài),,室內(nèi)每個(gè)房間安裝帶有攝像頭的采集模塊,并且在采集模塊上集成WIFI模塊,,家庭主節(jié)點(diǎn)(家庭網(wǎng)關(guān))也擴(kuò)展相同的WIFI模塊,,每塊WIFI模塊都設(shè)置成Ad-Hoc工作模式;
(2)處于待機(jī)狀態(tài)的家庭網(wǎng)關(guān)接收到用戶的命令,,判斷用戶需要哪個(gè)房間的具體信息,,使家庭網(wǎng)關(guān)與所需房間所在攝像頭采集模塊建立連接(兩者通過(guò)Ad-Hoc網(wǎng)絡(luò)建立連接)。家庭網(wǎng)關(guān)發(fā)送采集視頻指令給某個(gè)房間的采集模塊,,相應(yīng)的采集端接收采集指令使處于待機(jī)狀態(tài)的采集模塊分析指令,,從而開(kāi)啟攝像頭采集存儲(chǔ)房間的視頻信息,;
(3)采集模塊采集視頻信息,根據(jù)命令將采集的視頻信息通過(guò)TCP/IP的傳輸方式發(fā)送到家庭網(wǎng)關(guān),,家庭網(wǎng)關(guān)根據(jù)用戶命令檢測(cè)采集是否完成,,選擇是否關(guān)閉會(huì)話,使房間設(shè)備處于待機(jī)狀態(tài),,等待下次采集命令,。
2 視頻采集系統(tǒng)的實(shí)現(xiàn)
2.1 采集系統(tǒng)硬件設(shè)計(jì)
采集系統(tǒng)硬件部分設(shè)計(jì)主要包括微處理器單元S3C6410、電源模塊,、CMOS攝像頭采集模塊,、SD-WIFI無(wú)線網(wǎng)絡(luò)模塊、NAND Flash和SDRAM,、SD卡等外圍電路模塊等,。本系統(tǒng)利用S3C6410處理器控制接收CMOS攝像頭的視頻信號(hào),利用其內(nèi)部集成的Video4Linux2提供的數(shù)據(jù)結(jié)構(gòu),、應(yīng)用函數(shù)等完成攝像頭的采集,;SD-WIFI模塊建立Ad-hoc端對(duì)端網(wǎng)絡(luò)連接,通過(guò)TCP/IP協(xié)議的傳輸方式使采集端與家庭網(wǎng)關(guān)之間建立連接,,成功實(shí)現(xiàn)家庭網(wǎng)關(guān)對(duì)各個(gè)分散采集點(diǎn)視頻信息的接收,;在此基礎(chǔ)上,配置了1 GB的NAND Flash,,用于存放嵌入式Linux操作系統(tǒng),、應(yīng)用程序和數(shù)據(jù),128 MB的SDRAM內(nèi)存,,用于存放運(yùn)行程序及攝像頭采集的數(shù)據(jù),; SD卡用于程序的下載和簡(jiǎn)易安裝;整個(gè)硬件系統(tǒng)設(shè)計(jì)統(tǒng)一的電源模塊供電,。
整個(gè)視頻采集終端中,,除了核心處理器S3C6410外,最重要的就是CMOS攝像頭,,其中攝像頭的選擇與硬件電路連接是系統(tǒng)硬件設(shè)計(jì)的關(guān)鍵。
CMOS攝像頭是一種采用CMOS圖像傳感器的攝像頭,,是數(shù)碼設(shè)備用來(lái)感光成像的部件,,集成在被稱做金屬氧化物的半導(dǎo)體材料上。CMOS圖像傳感器可通過(guò)CMOS技術(shù)將像素陣列與外圍支持電路(如圖像傳感器核心,、單一時(shí)鐘,、所有的時(shí)序邏輯、可編程功能和A/D轉(zhuǎn)換器)集成在同一塊芯片上,,具有體積小,、重量輕,、功耗低、成本低,、編程方便,、易于控制等優(yōu)點(diǎn)[2],因此,,CMOS圖像傳感器的應(yīng)用已經(jīng)變得越來(lái)越廣泛,。
本設(shè)計(jì)選用傳感器芯片OV9650。OV9650傳感器具有130萬(wàn)像素的配置,,分辨率可達(dá)1 280×1 024,,具有標(biāo)準(zhǔn)的SSCB接口和10 bit數(shù)據(jù)接口,由于S3C6410片內(nèi)有攝像頭接口外設(shè),,所以將OV9650攝像頭芯片直接與處理器攝像頭接口引腳相連,,圖像并行傳輸,圖像數(shù)據(jù)速度明顯提高,,CMOS攝像頭電路原理圖如圖2所示,。
該芯片支持RGB(4:2:2)、YUV(4:2:2),、YCrCb(4:2:2)三種數(shù)據(jù)輸出格式,,內(nèi)置138個(gè)設(shè)備控制寄存器,地址范圍0x00~0x8A,,通過(guò)SCCB接口可以方便地設(shè)置傳感器視窗大小,、增益、白平衡校正,、曝光控制,、飽和度、色調(diào)等參數(shù),。
2.2 采集模塊軟件實(shí)現(xiàn)
系統(tǒng)軟件可以控制實(shí)現(xiàn)硬件設(shè)備CMOS攝像頭對(duì)房間視頻信息的采集,、存儲(chǔ),這里選擇Linux作為操作系統(tǒng),。Linux系統(tǒng)下,,對(duì)視頻設(shè)備的各種操作是通過(guò)Video4Linux2(簡(jiǎn)稱V4L2)實(shí)現(xiàn)的。Video4Linux2是Linux內(nèi)核中支持影像設(shè)備的一組APIs,,配合適當(dāng)?shù)囊曨l采集設(shè)備和相應(yīng)的驅(qū)動(dòng)程序,,可以實(shí)現(xiàn)影像采集、AM/FM廣播,、頻道切換等功能,,在遠(yuǎn)程會(huì)議、可視電話,、視頻監(jiān)控系統(tǒng)中有著廣泛的應(yīng)用,。V4L2在Linux下進(jìn)行視頻采集的接口函數(shù)主要有open,、read、write,、select,、mmap以及ioctl等,這與普通字符設(shè)備的驅(qū)動(dòng)接口形式上都是一致的,,但是V4L2為設(shè)備控制接口函數(shù)ioctl提供了豐富的控制字來(lái)實(shí)現(xiàn)對(duì)設(shè)備的管理,,管理的內(nèi)容包括對(duì)設(shè)備信息的查詢、幀緩沖的設(shè)置,、圖像屬性的設(shè)置,、視頻的捕捉等。
在Linux下,,所有的外設(shè)均被看成是一種特殊文件進(jìn)行處理,,稱之為設(shè)備文件。系統(tǒng)調(diào)用和各種函數(shù)庫(kù)直接或間接地提供了內(nèi)核及應(yīng)用程序之間的接口,,而設(shè)備的驅(qū)動(dòng)程序則是內(nèi)核及外設(shè)之間的接口,,它完成設(shè)備的初始化和釋放、對(duì)設(shè)備文件的各種操作和對(duì)中斷進(jìn)行處理等各項(xiàng)功能,。由于應(yīng)用程序屏蔽了外設(shè)硬件的細(xì)節(jié),,使得應(yīng)用程序可以像普通文件一樣對(duì)外進(jìn)行操作而無(wú)需關(guān)注具體細(xì)節(jié)[3]。因此,,在進(jìn)行視頻圖像采集之前,,必須先加載Video4Linux2模塊為視頻采集設(shè)備提供函數(shù)接口。同時(shí)在內(nèi)核中,,加載采用OV9650接口芯片的CMOS攝像頭的驅(qū)動(dòng),,通過(guò)OV9650芯片就可以采集視頻數(shù)據(jù)并保存在Linux系統(tǒng)中進(jìn)行數(shù)據(jù)處理。
Video4Linux2分兩層式架構(gòu),,最上層為Video4Linux2驅(qū)動(dòng)程序本身,,最下層架構(gòu)則是影像設(shè)備的驅(qū)動(dòng)程序。本系統(tǒng)中則是使用V4L2的最上層驅(qū)動(dòng)程序,,即V4L2本身所提供給程序開(kāi)發(fā)人員的APIs,。Linux系統(tǒng)中把設(shè)備看成設(shè)備文件,在用戶空間可以通過(guò)標(biāo)準(zhǔn)的I/O系統(tǒng)調(diào)用函數(shù)操作此設(shè)備文件,,從而達(dá)到與設(shè)備通信交互的目的,。
采集端在接收到家庭網(wǎng)關(guān)的采集指令之后開(kāi)始視頻采集,整個(gè)視頻數(shù)據(jù)采集的流程如圖3所示,。
3 視頻傳輸系統(tǒng)的實(shí)現(xiàn)
3.1 視頻傳輸模塊設(shè)計(jì)
3.1.1 傳輸方式選擇
相較于有線網(wǎng)絡(luò)的繁瑣,無(wú)線網(wǎng)絡(luò)漸漸成為家庭網(wǎng)絡(luò)的首選,。在流行的無(wú)線網(wǎng)絡(luò)產(chǎn)品中,,最為熟悉的網(wǎng)絡(luò)標(biāo)準(zhǔn)主要有WIFI,、BlueTooth、ZigBee,、3G等[4],,具體詳見(jiàn)表1。
連接ARM與WIFI模塊常用的硬件接口有SPI,、SDIO和USB,,其中SPI是大多數(shù)微處理器都集成的一種接口,具有硬件連接方便,、軟件設(shè)計(jì)簡(jiǎn)單,、節(jié)省系統(tǒng)資源等特點(diǎn)。本系統(tǒng)采用的WIFI模塊支持SPI和SDIO連接,。本系統(tǒng)中采用SPI接口來(lái)連接S3C6410處理器,,通過(guò)CON11針腳引出,它是一個(gè)2.0間距的20Pin插針腳,,為了配合SDIO使用,,該接口還包含1路SPI、2個(gè)GPIO,。
3.2 視頻數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)
3.2.1 無(wú)線傳輸模式的搭建
傳輸模式的搭建可分為兩個(gè)部分,,一是內(nèi)核模塊的加載,二是工作模式的設(shè)置,。內(nèi)核加載WIFI模塊,,通過(guò)insmod命令來(lái)實(shí)現(xiàn),這里需要加載相應(yīng)的運(yùn)行文件,,這兩個(gè)文件可以在Marvel官方網(wǎng)站下載,;設(shè)定工作模式之前要先使用ifconfig命令設(shè)定目標(biāo)板的IP地址,然后通過(guò)iwconfig命令設(shè)置模塊的工作模式和用戶名,,為增加安全性,,也可以設(shè)置相應(yīng)的密碼。
3.2.2 TCP/IP協(xié)議的視頻數(shù)據(jù)傳輸
TCP(傳輸控制協(xié)議)是TCP/IP體系中面向連接的傳輸層協(xié)議,,它可以保證數(shù)據(jù)可靠地傳輸,。Linux作為一個(gè)通用的操作系統(tǒng),支持所有的網(wǎng)絡(luò)協(xié)議包括TCP/IP協(xié)議,。首先,,Linux的TCP/IP協(xié)議的實(shí)現(xiàn)是基于Linux的一整套內(nèi)核控制機(jī)制,如進(jìn)程調(diào)度機(jī)制,、進(jìn)程通信機(jī)制,、軟中斷機(jī)制等,一個(gè)基于TCP/IP應(yīng)用程序的執(zhí)行是一個(gè)進(jìn)程,所以操作系統(tǒng)的支持是顯然的,,同時(shí)也是必須在操作系統(tǒng)的上述機(jī)制的控制下才能得以實(shí)現(xiàn),。
應(yīng)用程序使用傳輸層的TCP協(xié)議來(lái)完成視頻數(shù)據(jù)的可靠傳輸,是因?yàn)門(mén)CP協(xié)議能夠保證數(shù)據(jù)準(zhǔn)確完整地,、按正確的序列在網(wǎng)絡(luò)上傳送到目標(biāo)地址,。TCP協(xié)議的特性是能夠提供可靠的、面向連接,、字節(jié)流傳送服務(wù),,TCP 協(xié)議能夠在兩個(gè)通信的主機(jī)之間建立點(diǎn)到點(diǎn)的邏輯連接。TCP實(shí)現(xiàn)傳送的過(guò)程為:首先在通信雙方-客戶端與服務(wù)器之間提供連接,,一個(gè)TCP客戶與某個(gè)給定的服務(wù)器建立連接,,通過(guò)建立的連接與服務(wù)器交換數(shù)據(jù)信息,最后結(jié)束連接,。本文將采集發(fā)送端,、接收端看做相應(yīng)的服務(wù)器、客戶端,。
在Linux系統(tǒng)中,,如果希望通過(guò)網(wǎng)絡(luò)和其他程序進(jìn)行通信,就只能通過(guò)套接口socket()實(shí)現(xiàn),。套接口是一種使用操作系統(tǒng)中的文件描述符和系統(tǒng)進(jìn)程進(jìn)行通信的一種方法,。Linux支持多種類(lèi)型的套接口,每種類(lèi)型的套接口都有自己的尋址方法,,這里支持TCP/IP協(xié)議的套接口類(lèi)型是INET,。一旦申請(qǐng)了一個(gè)套接口以后,就可以利用Linux提供的網(wǎng)絡(luò)函數(shù)進(jìn)行網(wǎng)絡(luò)編輯[7],。具體傳輸過(guò)程如圖5所示,。
套接口通信的進(jìn)程使用的是采集端/家庭網(wǎng)關(guān)模式,服務(wù)器采集端用來(lái)提供服務(wù),,家庭網(wǎng)關(guān)端則可以使用服務(wù)器采集端提供的服務(wù),。這里采集端首先創(chuàng)建一個(gè)套接口,然后給它指定一個(gè)名字,。名字的形式取決于套接口的地址簇,,事實(shí)上也就是采集端的本地地址,系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)sockaddr來(lái)指定套接口的名字和IP地址,。當(dāng)采集端指定套接口以后,,它將監(jiān)聽(tīng)與此地址有關(guān)的連接請(qǐng)求,而請(qǐng)求的發(fā)起者(家庭網(wǎng)關(guān))將會(huì)創(chuàng)建一個(gè)套接口,,然后再創(chuàng)建連接請(qǐng)求并指定采集端的目的地址,,對(duì)于一個(gè)套接口來(lái)說(shuō),,采集端的地址就是它的IP地址和端口號(hào)[8],當(dāng)然,,對(duì)于不同的采集端所分配的IP地址是在一個(gè)網(wǎng)段的不同地址,。通信過(guò)程中的連接請(qǐng)求必須通過(guò)各種協(xié)議層,然后等待采集端的監(jiān)聽(tīng)套接口,,一旦采集端收到了連接請(qǐng)求,它可以接受或者拒絕這個(gè)請(qǐng)求,。當(dāng)接受連接請(qǐng)求后,,采集端通過(guò)accept()響應(yīng)接受連接,建立起數(shù)據(jù)連接之后,,雙方就會(huì)進(jìn)入傳輸狀態(tài),,數(shù)據(jù)傳輸完畢之后,數(shù)據(jù)連接有選擇地循環(huán)繼續(xù)傳輸或者撤銷(xiāo),,如此循環(huán)反復(fù),,直到會(huì)話結(jié)束,從而實(shí)現(xiàn)將視頻文件從采集端傳送到家庭網(wǎng)關(guān),。
以往的嵌入式視頻采集傳輸系統(tǒng)都是在ARM9開(kāi)發(fā)平臺(tái)上的,,視頻的處理要采用相應(yīng)多媒體處理設(shè)備。而本文采用的ARM11內(nèi)核自身集成了視頻的采集處理功能,,簡(jiǎn)化了開(kāi)發(fā)難度,,節(jié)約了成本。相較于以往有線家居視頻監(jiān)控系統(tǒng),,本設(shè)計(jì)采用了比較新穎的無(wú)線WIFI監(jiān)控,,傳輸速度快捷,滿足了大視頻數(shù)據(jù)傳輸?shù)囊?。本系統(tǒng)構(gòu)建了低成本,、低功耗、實(shí)時(shí)性強(qiáng)的無(wú)線視頻監(jiān)控平臺(tái),,除應(yīng)用于家居監(jiān)控外,,還可以用于搭建各種各樣的應(yīng)用,具有可觀的實(shí)用價(jià)值,。
參考文獻(xiàn)
[1] 郝東東,,紀(jì)珂.基于S3C2440_Linux的視頻傳輸系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2012(1):141-142.
[2] 丁昊杰,,劉敬彪,,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,,35(14):178-188.
[3] 郝俊,,孟傳良.基于V4L2的ARM11 USB視頻采集終端的設(shè)計(jì)與實(shí)現(xiàn)[J].貴州大學(xué)學(xué)報(bào),2011,28(4):74-78.
[4] 陳玉坤,,李波.基于嵌入式Linux的Ad-Hoc網(wǎng)絡(luò)視頻傳輸研究[J].測(cè)控技術(shù),,2011,30(1):83-86.
[5] 曾磊,,張海峰,,侯維巖.基于WIFI的無(wú)線測(cè)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電測(cè)與儀表,2011,,48(7):81-83.
[6] 鄭曉東,,王建.基于WIFI技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)[J].科技研究,2011(7):61-62.
[7] 何勁,,謝松巍.基于Socket的TCP/IP網(wǎng)絡(luò)通訊模式研究[J].計(jì)算機(jī)應(yīng)用與研究,,2001,18(8):134-135.
[8] 王鳳純,,魯靜.基于RTP/RTCP的音視頻同步方法研究[J].軟件,,2011,32(6):78-80.