《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于ZigBee和H.264的無線視頻傳輸系統(tǒng)的設(shè)計與實現(xiàn)
基于ZigBee和H.264的無線視頻傳輸系統(tǒng)的設(shè)計與實現(xiàn)
2016年微型機與應(yīng)用第24期
游張華
深圳市華海聯(lián)能科技有限公司,廣東 深圳 518100
摘要: ZigBee是以IEEE 802.15.4標(biāo)準(zhǔn)為基礎(chǔ)的一種低成本、低功耗的無線網(wǎng)絡(luò)技術(shù),通過ZigBee協(xié)議棧,可將各ZigBee節(jié)點形成一個節(jié)點容量大、通信范圍廣的ZigBee網(wǎng)絡(luò)。而H.264是當(dāng)今最好的視頻壓縮標(biāo)準(zhǔn),具有碼流率低、圖像質(zhì)量高、容錯能力強等優(yōu)點。使用ZigBee網(wǎng)絡(luò)來傳輸H.264視頻碼流,是實現(xiàn)無線視頻傳輸系統(tǒng)的一種好方案。通過具體開發(fā)實例,從硬件和軟件兩個方面討論了該方案的設(shè)計與實現(xiàn)。
Abstract:
Key words :

  游張華

 ?。ㄉ钲谑腥A海聯(lián)能科技有限公司,廣東 深圳 518100)

       摘要ZigBee是以IEEE 802.15.4標(biāo)準(zhǔn)為基礎(chǔ)的一種低成本、低功耗的無線網(wǎng)絡(luò)技術(shù),通過ZigBee協(xié)議棧,可將各ZigBee節(jié)點形成一個節(jié)點容量大、通信范圍廣的ZigBee網(wǎng)絡(luò)。而H.264是當(dāng)今最好的視頻壓縮標(biāo)準(zhǔn),具有碼流率低、圖像質(zhì)量高、容錯能力強等優(yōu)點。使用ZigBee網(wǎng)絡(luò)來傳輸H.264視頻碼流,是實現(xiàn)無線視頻傳輸系統(tǒng)的一種好方案。通過具體開發(fā)實例,從硬件和軟件兩個方面討論了該方案的設(shè)計與實現(xiàn)。

  關(guān)鍵詞:ZigBee;H.264;無線視頻傳輸系統(tǒng)

  中圖分類號:TP393.0文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2016.24.016

  引用格式:游張華. 基于ZigBee和H.264的無線視頻傳輸系統(tǒng)的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2016,35(24):54-56,60.

0引言

  ZigBee是以IEEE 802.15.4標(biāo)準(zhǔn)[1]為基礎(chǔ)的一種低成本、低功耗、網(wǎng)絡(luò)容量大、通信范圍廣的無線網(wǎng)絡(luò)技術(shù)[2],可支持多達(dá)65 000個節(jié)點。ZigBee的工作頻段有3個,分別是868 MHz、915 MHz、2.4 GHz,當(dāng)工作于2.4 GHz時,其擁有最高的傳輸速率250 KB/s。在存儲量盡可能小的情況下獲得好的圖像質(zhì)量和低帶寬圖像快速傳輸已成為視頻壓縮的兩大難題。為此ISO/IEC和ITUT兩大國際標(biāo)準(zhǔn)化組織聯(lián)手制定了新一代視頻壓縮標(biāo)準(zhǔn)H.264[3]。H264具有圖像質(zhì)量好、連續(xù)性強、動態(tài)圖像質(zhì)量高、壓縮比高、碼流速率可調(diào)等優(yōu)點。本文從硬件和軟件兩個方面討論使用帶H.264硬件編解碼器、ARM9 CPU核的i.MX27和帶ZigBee協(xié)議棧的微處理器CC2430來共同組建無線視頻傳輸系統(tǒng)。

1系統(tǒng)總體設(shè)計

 

001.jpg

  系統(tǒng)總體設(shè)計如圖1所示,整個ZigBee網(wǎng)絡(luò)由一個ZigBee協(xié)調(diào)器、多個 ZigBee路由器和ZigBee無線視頻終端組成[4]。由于CC2430集成了2.4 GHz DSSS射頻收發(fā)器和單片機控制器,因此ZigBee設(shè)備可以使用CC2430單芯片來實現(xiàn)。ZigBee協(xié)調(diào)器用于組建最初的ZigBee網(wǎng)絡(luò),并為加入網(wǎng)絡(luò)的每個ZigBee路由器和ZigBee無線視頻終端分配16位網(wǎng)絡(luò)短地址。ZigBee路由器在ZigBee網(wǎng)絡(luò)中扮演路由和中繼的角色,為各ZigBee無線視頻終端傳輸數(shù)據(jù)并擴大無線數(shù)據(jù)傳輸?shù)姆秶igBee無線視頻終端根據(jù)分配得到的16位網(wǎng)絡(luò)短地址可以相互之間進(jìn)行雙向無線數(shù)據(jù)通信[5]。i.MX27上采用Linux操作系統(tǒng),在Linux下通過對采集的圖像進(jìn)行硬件壓縮編碼,各ZigBee無線視頻終端之間的數(shù)據(jù)以H.264碼流的形式進(jìn)行無線傳輸。

2ZigBee無線視頻終端的硬件設(shè)計

  考慮到H.264軟件編解碼需要消耗大量的CPU資源,故本方案中選擇了具有H.264硬件編解碼器及ARM9 CPU核的Freescale微處理器i.MX27。ARM9 CPU核一方面負(fù)責(zé)將攝像頭采集到的YUV圖像數(shù)據(jù)送入H.264硬件編碼器,并將硬件編碼器輸出的H.264碼流通過ZigBee微處理器CC2430無線發(fā)送出去。另一方面通過CC2430接收H.264碼流并送入H.264硬件解碼器,然后將硬件解碼器輸出的YUV圖像數(shù)據(jù)顯示到液晶屏上。ZigBee微處理器CC2430負(fù)責(zé)H.264碼流的收發(fā)工作,并通過SPI接口與i.MX27進(jìn)行通信。 ZigBee無線視頻終端的硬件組成如圖2所示?! ?/p>

002.jpg

  為了實現(xiàn)圖像的采集,本方案采用含有OV9650芯片的CMOS攝像頭,采集到的圖像通過i.MX27的CSI接口傳輸?shù)紿.264硬件編碼器中。對于圖像的顯示,則選擇群創(chuàng)AT070TN83V.1(16∶9,800×480)7英寸TFT液晶屏。該屏支持18位數(shù)字RGB接口,格式為RGB666,即每個像素由6 bit紅、6 bit綠、6 bit藍(lán)構(gòu)成18 bit數(shù)據(jù)。該屏與i.MX27的LCDC控制器主要通過18根數(shù)據(jù)線(LD[17:0])、幀同步(VSYNC)、行同步(HSYSNC)、時鐘(LSCLK)進(jìn)行連接。采用一片三星的K9F2G08R0A NAND Flash芯片(256 M×8 bit)來儲存系統(tǒng)的Bootloader(RedBoot),Linux內(nèi)核,文件系統(tǒng)和視頻程序。由兩片Infineon Technologies的HYB18M512160AF7.5芯片(4 Bank×8 M×16 bit)構(gòu)成128 MB的DDR,主要用于加載Linux操作系統(tǒng)和運行視頻編解碼程序。

  設(shè)計一個10針的JTAG接口,用來燒寫系統(tǒng)的Bootloader、Linux內(nèi)核和文件系統(tǒng)。使用MAX3232構(gòu)成UART接口,用來將調(diào)試信息返回到MiniCom上顯示。因處理器內(nèi)核需要1.8 V、1.5 V電壓,而存儲器和外部I/O需要3.3 V電壓,故把整個系統(tǒng)的輸入電壓設(shè)為5 V,經(jīng)過DCDC轉(zhuǎn)換器可完成到3.3 V、1.8 V、1.5 V的電壓轉(zhuǎn)換。采用26 MHz的有源晶振,晶振經(jīng)過i.MX27片內(nèi)的PLL電路倍頻后最高可達(dá)到400 MHz。

  ZigBee通信模塊以CHIPCON公司的CC2430微處理器為核心。將CC2430的SPI接口與i.MX27的SPI接口連接,H.264碼流通過SPI接口進(jìn)行傳輸。

3ZigBee無線視頻終端的軟件設(shè)計

  3.1圖像采集

  CSI(CMOS Sensor Interface)是i.MX27中的CMOS圖像傳感器接口。圖像的采集可通過CSI接口、圖像傳感器芯片OV9650和Linux下視頻設(shè)備的內(nèi)核驅(qū)動V4L2來實現(xiàn),所以需要加載CSI驅(qū)動mx27_csi.ko、ov9650驅(qū)動ov9650_cam.ko和V4L2驅(qū)動mx27_v4l2_capture.ko。這樣應(yīng)用程序在打開V4L2后,就可以進(jìn)行圖像數(shù)據(jù)采集了。

  3.2圖像顯示

  LCDC(Liquid Crystal Display Controller)是i.MX27中的液晶顯示控制器??赏ㄟ^LCDC接口來控制圖像的顯示,故需要加載LCDC驅(qū)動mxcfb_modedb.ko和mxcfb.ko及幀緩沖驅(qū)動。使用幀緩沖設(shè)備時,可將顯示緩沖區(qū)直接映射到Linux用戶空間。這樣在Linux用戶空間,應(yīng)用程序可按照預(yù)先設(shè)置好的R、G、B位數(shù)和偏移量,將圖像數(shù)據(jù)直接寫到經(jīng)過mmap()映射后的顯示緩沖區(qū),進(jìn)而實現(xiàn)圖像的顯示。

  3.3H.264編解碼

  VPU(Video Processing Unit)是i.MX27中的視頻處理單元,主要用于H.264 BP、MPEG-4 SP、H.263 P3格式的硬件編解碼[6]。為了用戶能夠使用VPU的硬件編解碼器,F(xiàn)reescale提供了一套Linux下的基于i.MX27 VPU的庫文件。不論是編碼還是解碼,首先都必須調(diào)用vpu_Init()函數(shù)對VPU硬件進(jìn)行初始化。

  對于H.264編碼,需要執(zhí)行以下步驟:(1)調(diào)用vpu_EncOpen()函數(shù)對VPU編碼器初始化;(2)調(diào)用vpu_EncGetInitialInfo()函數(shù)獲取編碼初始化信息;(3)調(diào)用vpu_EncRegisterFrameBuffer()函數(shù)注冊編碼幀緩沖;(4)調(diào)用vpu_EncStartOneFrame()函數(shù),將編碼幀緩沖中的每一幀圖像數(shù)據(jù)送入VPU編碼器編碼,并將編碼得到的H.264碼流存放到指定的位流緩沖區(qū)中;(5)當(dāng)需要結(jié)束編碼操作時,只需調(diào)用vpu_EncClose()函數(shù)。H.264編碼的執(zhí)行流程如圖3所示。

 

003.jpg

004.jpg

  對于H.264解碼,需要執(zhí)行以下步驟:(1)調(diào)用vpu_DecOpen()函數(shù)對VPU解碼器初始化;(2)調(diào)用vpu_DecGetInitialInfo()函數(shù)獲取解碼初始化信息;(3)調(diào)用vpu_DecRegisterFrameBuffer()函數(shù)注冊解碼幀緩沖;(4)為了獲取需解碼的H.264碼流,可調(diào)用vpu_DecGetBitstreamBuffer()函數(shù);(5)調(diào)用vpu_DecStartOneFrame()函數(shù),將H.264碼流送入VPU解碼器進(jìn)行解碼,并將得到的圖像數(shù)據(jù)存放到解碼幀緩沖中;(6)當(dāng)需要結(jié)束解碼操作時,只需調(diào)用vpu_DecClose()函數(shù)。H.264解碼的執(zhí)行流程如圖4所示。

  3.4H.264無線傳輸

  要進(jìn)行H.264碼流無線接收和發(fā)送,首先需要加載i.MX27的SPI接口驅(qū)動mx27_spi.ko。通過SPI接口,i.MX27可以將H.264碼流[7]傳輸?shù)紺C2430中并無線發(fā)送出去,也可以將CC2430無線接收的H.264碼流輸入到i.MX27中。

  由于ZigBee在2.4 GHz工作頻段和250 KB/s的傳輸速度下,物理層每次最多只能傳輸127 B的數(shù)據(jù)包。除去物理層和MAC層的網(wǎng)絡(luò)包頭,ZigBee每次傳輸?shù)膶嶋H數(shù)據(jù)最多只有89 B[8]。由于ZigBee網(wǎng)絡(luò)層不能對H.264碼流進(jìn)行分割和重組,而傳輸?shù)腍.264碼流遠(yuǎn)多于89 B,因此必須在ZigBee協(xié)議的應(yīng)用層將H.264碼流分割為等于或小于89 B的數(shù)據(jù)包進(jìn)行傳輸。在接收端需要對這些分解的數(shù)據(jù)包進(jìn)行重組,以形成正確的H.264碼流。由于在無線數(shù)據(jù)傳輸過程中被分割的數(shù)據(jù)包可能會丟失,這將直接影響接收端的數(shù)據(jù)重組,因此需要建立一個重傳機制來重傳數(shù)據(jù)傳輸過程中丟失的數(shù)據(jù)包。下面給出分組傳輸?shù)臄?shù)據(jù)包的格式。

  數(shù)據(jù)發(fā)送之前,先執(zhí)行握手協(xié)議[9]。ZigBee發(fā)送端先發(fā)送請求包,告訴ZigBee接收端即將發(fā)送的一幀H.264數(shù)據(jù)將被分割為幾個數(shù)據(jù)包以及第一個數(shù)據(jù)包的編號。編號字段定義為4 B,能對4 GB的數(shù)據(jù)進(jìn)行編號,這樣可以保證當(dāng)編號重復(fù)時,舊編號的數(shù)據(jù)包早已在網(wǎng)絡(luò)中消失。

  ZigBee接收端接收到請求包后,將返回一個確認(rèn)包,表示ZigBee接收端接受ZigBee發(fā)送端的請求。ZigBee發(fā)送端接收到確認(rèn)包后,同樣也返回一個確認(rèn)包,這樣握手協(xié)議完成。接下來就是實際的數(shù)據(jù)通信了。握手協(xié)議的執(zhí)行流程如圖5所示。

  

005.jpg

  握手協(xié)議完成后,ZigBee接收端將根據(jù)分割數(shù)據(jù)包的數(shù)量來分配接收緩沖區(qū)大小。將接收到的每個數(shù)據(jù)包按照數(shù)據(jù)包的編號依次存放到接收緩沖區(qū)對應(yīng)的位置處,并將該位置的標(biāo)志置1,表示接收到了對應(yīng)的數(shù)據(jù)包。如果接收緩沖區(qū)中某些位置的標(biāo)志為0并且對應(yīng)的定時器超時,則表示該位置沒有接收到對應(yīng)的數(shù)據(jù)包,數(shù)據(jù)包在無線傳輸?shù)倪^程中丟失。ZigBee接收端需要向ZigBee發(fā)送端發(fā)送一個重傳包,請求將丟失的數(shù)據(jù)包重新傳遞過來。本傳輸協(xié)議規(guī)定,若針對某位置連續(xù)3次發(fā)送重傳包后,定時器連續(xù)4次超時,則表示傳輸失敗。ZigBee接收端將發(fā)送重新開始包,命令ZigBee發(fā)送端對下一幀H.264數(shù)據(jù)進(jìn)行傳輸。協(xié)議重傳的執(zhí)行流程如圖6所示。

  

006.jpg

4系統(tǒng)測試

  為了測試ZigBee發(fā)送端是否將每一幀H.264數(shù)據(jù)成功地傳輸?shù)搅薢igBee接收端,現(xiàn)在在ZigBee發(fā)送端和接收端之間依次放置1~4個ZigBee路由器,對100幀H.264數(shù)據(jù)進(jìn)行傳輸測試。無線傳輸H.264圖像的測試結(jié)果如表1所示。

007.jpg

  可見,圖像從ZigBee發(fā)送端無線傳輸?shù)絑igBee接收端所經(jīng)過的路由器越少,傳輸?shù)某晒β试礁?。實際測試時,每秒能傳輸約14幀H.264圖像數(shù)據(jù),基本上達(dá)到了無線視頻傳輸?shù)囊蟆?/p>

5結(jié)論

  本文詳細(xì)地介紹了基于ZigBee和H.264的無線視頻傳輸系統(tǒng)的設(shè)計與實現(xiàn),文中所設(shè)計的方案不僅能用于無線數(shù)字視頻傳輸,也可以應(yīng)用到無線數(shù)字音頻傳輸,具有很強的通用性。

參考文獻(xiàn)

 ?。?] BARONTI P, PILLAI P, CHOOK V. Wireless sensor networks: a survey on the state of the art and the 802.15.4 and ZigBee standards[D]. Pisa, Italy: University of Pisa, 2006.

 ?。?] CHIPCON. ZigBee User Guide[Z]. 2006.

 ?。?] Joint Video Team. Draft ITUT recommendation and final draft international standard of joint video specification (ITUT Rec. H.264/ISO/IEC 1449610 AVC)[Z]. Joint Video team of ISO/IEC MPEG and ITUT VCEG,JVTG050, 2003.

 ?。?] 成銳,李靜,雷鳴. 基于ZigBee的無線傳感器網(wǎng)絡(luò)設(shè)計方案[J]. 電子元器件應(yīng)用,2007,9(12):5458.

 ?。?] 王振玲.基于ZigBee無線傳感器網(wǎng)絡(luò)的監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[D].新鄉(xiāng):河南師范大學(xué),2012.

  [6] KANG H Y,JEONG K A,BAEETC J Y.MPEG4 AVC/H.264 decoder with scalablebus architecture and dual memory controller[C]. Proceedings of the 2004 International symposium on Circuits and Systems, ISCAS 2004, 2004,2(2):145148.

 ?。?] ITUT. Advanced video coding for generic audiovisual services[R]. ITU T H.264 Recommedation. March, 2005.

  [8] 盛先剛. 基于RTP的H.264視頻傳輸系統(tǒng)研究[D]. 西安:西安電子科技大學(xué),2006.

  [9] 肖婭. H264視頻流實時傳輸系統(tǒng)的研究與應(yīng)用[D]. 北京:北京郵電大學(xué),2008.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。