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