基于嵌入式技術(shù)的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
為了大幅度降低成本,使遠(yuǎn)程數(shù)字視頻音頻監(jiān)控應(yīng)用更加普及,目前國(guó)內(nèi)外的發(fā)展趨勢(shì)是使用嵌入式系統(tǒng)。即采用專(zhuān)用微處理器、圖像聲音的數(shù)字化芯片、數(shù)據(jù)壓縮芯片及網(wǎng)絡(luò)接口芯片等,按照特定的功能需求開(kāi)發(fā)出最小應(yīng)用單板系統(tǒng)。這樣,系統(tǒng)功能沒(méi)有任何浪費(fèi),可大幅度降低成本。而且,由于軟件都是固化在單板內(nèi)的Flash ROM中,系統(tǒng)更加可靠。
1 系統(tǒng)總體結(jié)構(gòu)和功能概述
由于嵌入式系統(tǒng)具有上述的種種優(yōu)點(diǎn),筆者最新開(kāi)發(fā)了一套基于嵌入式技術(shù)的多媒體遠(yuǎn)程監(jiān)控管理系統(tǒng)。
該系統(tǒng)采用目前流行的TCP/IP網(wǎng)絡(luò)協(xié)議,視頻編碼基于H.263協(xié)議——低比特率視頻通信編碼算法, 音頻編碼基于G.723協(xié)議——低比特率音頻通信編碼算法。它們可以在網(wǎng)絡(luò)帶寬很低的環(huán)境,甚至是電話(huà)線(xiàn)上進(jìn)行圖像和聲音的傳輸。
整個(gè)系統(tǒng)主要由三部分組成:前端機(jī)、監(jiān)控中心和客戶(hù)端,其具體架構(gòu)如圖1所示。
前端機(jī)是一塊嵌入式系統(tǒng)的印刷電路板,它的主要功能如下:
· 四路模擬視頻信號(hào)輸入,可任意選擇一路進(jìn)行采樣和壓縮編碼;
· 一路音頻信號(hào)的編碼與解碼;
· 通過(guò)局域網(wǎng)向監(jiān)控中心傳送視頻編碼數(shù)據(jù)和音頻編碼數(shù)據(jù),并接收監(jiān)控中心傳送的音頻編碼數(shù)據(jù);
· 通過(guò)RS-232接口向攝像頭的云臺(tái)控制器發(fā)出控制指令;
· 通過(guò)EPLD的并行口接收用戶(hù)報(bào)警信號(hào),并通過(guò)局域網(wǎng)傳送到監(jiān)控中心。
監(jiān)控中心是整個(gè)視頻監(jiān)控系統(tǒng)的中樞,它的主要功能如下:
· 通過(guò)局域網(wǎng)向前端機(jī)發(fā)送用戶(hù)控制指令,如前端機(jī)的選擇、視頻通道的選擇、調(diào)節(jié)圖像參數(shù)(包括幀速率、碼流量的大小、色度、亮度、飽和度和對(duì)比度)、聲音編碼音量的大小等;
· 接收多路前端機(jī)的視頻編碼數(shù)據(jù),保存在本地硬盤(pán)上,同時(shí)進(jìn)行解碼,并顯示多路解碼圖像;
· 向遠(yuǎn)程用戶(hù)轉(zhuǎn)發(fā)當(dāng)前視頻編碼數(shù)據(jù),或者傳送存盤(pán)圖像數(shù)據(jù)。
客戶(hù)端是提供一個(gè)用戶(hù)操作的界面。本地用戶(hù)可以直接在監(jiān)控中心的服務(wù)器上使用;而遠(yuǎn)程用戶(hù)則有另一套操作界面,可使用的功能比本地用戶(hù)少,但是它可以讓異地用戶(hù)通過(guò)Internet或者電話(huà)線(xiàn)獲得本地的視頻信息。
該系統(tǒng)還具有很好的擴(kuò)展性能。對(duì)于幾百甚至上千個(gè)監(jiān)控點(diǎn)的大型監(jiān)控場(chǎng)所,可以采用多級(jí)級(jí)聯(lián)的方式,即在前端機(jī)和監(jiān)控中心之間,加上一級(jí)或者多級(jí)區(qū)域服務(wù)器,每個(gè)區(qū)域服務(wù)器可以管理十幾至幾十個(gè)監(jiān)控點(diǎn),他們分擔(dān)監(jiān)控中心的工作,并接受監(jiān)控中心的控制。
2 前端機(jī)的硬件設(shè)計(jì)與各模塊的功能
本嵌入式視頻監(jiān)控系統(tǒng)的硬件開(kāi)發(fā)工作主要集中在嵌入式前端機(jī)的硬件設(shè)計(jì)和調(diào)試上。
前端機(jī)是一個(gè)嵌入式系統(tǒng),硬件結(jié)構(gòu)比較復(fù)雜,其總體結(jié)構(gòu)如圖2所示。主要包含嵌入式CPU、EPLD、視頻模數(shù)轉(zhuǎn)換芯片、視頻壓縮編碼芯片、音頻編碼解碼芯片、音頻模數(shù)與數(shù)模轉(zhuǎn)換芯片、以太網(wǎng)控制器、數(shù)據(jù)緩沖存儲(chǔ)器、網(wǎng)絡(luò)收發(fā)器、Flash ROM、RAM、多種電源芯片和時(shí)鐘芯片等。這些芯片按照各自的功能分別組合,構(gòu)成了幾大模塊,它們分別是:CPU模塊、電源時(shí)鐘模塊、控制模塊、視頻采集編碼模塊、音頻采集編解碼及模擬輸入輸出模塊和網(wǎng)絡(luò)模塊。
CPU模塊是所有硬件模塊的核心,主要包括嵌入式CPU芯片,兩片RAM和兩片F(xiàn)lash ROM。一片F(xiàn)lash ROM存放了整個(gè)硬件的監(jiān)視系統(tǒng),也叫ROM Monitor。當(dāng)系統(tǒng)上電后,CPU從中調(diào)入程序進(jìn)行整個(gè)系統(tǒng)硬件的自檢和初始化配置,并為用戶(hù)提供一個(gè)簡(jiǎn)單操作環(huán)境。當(dāng)系統(tǒng)發(fā)生故障時(shí),可以通過(guò)它來(lái)讀取CPU主要寄存器的狀態(tài),從而找出故障原因。另一片F(xiàn)lash ROM用來(lái)存放用戶(hù)的應(yīng)用程序。當(dāng)整個(gè)系統(tǒng)通過(guò)自檢后,CPU將用戶(hù)的應(yīng)用程序讀入RAM中執(zhí)行。CPU通過(guò)PCI總線(xiàn)與視頻壓縮編碼芯片與以太網(wǎng)控制器連接,對(duì)它們進(jìn)行調(diào)度和數(shù)據(jù)的收發(fā)。CPU還提供了兩個(gè)串口,其中一個(gè)與普通電腦的串口連接,通過(guò)Windows下的超級(jí)終端,可以讓用戶(hù)對(duì)整個(gè)系統(tǒng)進(jìn)行監(jiān)測(cè)和調(diào)試;另一個(gè)串口則用于控制攝像頭云臺(tái)。
電源時(shí)鐘模塊負(fù)責(zé)給整個(gè)系統(tǒng)提供時(shí)鐘和電源,是系統(tǒng)的基本模塊。由于整個(gè)嵌入系統(tǒng)使用的芯片和器件較多,且各個(gè)器件對(duì)電源和時(shí)鐘的要求也不同,所以設(shè)計(jì)時(shí)使用了四種電源芯片和六種時(shí)鐘晶振。考慮到多種電源的存在,將電源層劃分成了七大塊,分別對(duì)所需要的器件供電;同時(shí),也對(duì)數(shù)字地和模擬地進(jìn)行了分割。這樣使整個(gè)系統(tǒng)的電源信號(hào)達(dá)到較高的質(zhì)量,大大提高了器件工作的穩(wěn)定性和可靠性。
控制模塊是一片可編程邏輯芯片EPLD,其主要功能包括PCI總線(xiàn)的地址譯碼與片選、電源控制、CPU的復(fù)位、I/O輸入輸出和看門(mén)狗邏輯。其中8路I/O輸入作為用戶(hù)的報(bào)警輸入,6路I/O輸出顯示系統(tǒng)的運(yùn)行狀態(tài)??撮T(mén)狗邏輯是嵌入式系統(tǒng)不可缺少的部分。因?yàn)榍度胧较到y(tǒng)一般不需要時(shí)刻監(jiān)管,當(dāng)系統(tǒng)工作狀態(tài)出現(xiàn)了偶然的異常情況,如死機(jī),看門(mén)狗可以自動(dòng)對(duì)整個(gè)系統(tǒng)進(jìn)行復(fù)位,讓系統(tǒng)恢復(fù)到正常的工作狀態(tài)。
視頻采集編碼模塊主要由視頻模數(shù)轉(zhuǎn)換芯片、視頻壓縮編碼芯片和RAM組成。這個(gè)模塊的主要功能是將模擬視頻輸入送到視頻模數(shù)轉(zhuǎn)換芯片進(jìn)行模數(shù)變換,并將變換后的數(shù)字視頻數(shù)據(jù)送入視頻壓縮編碼芯片,視頻壓縮編碼芯片在RAM中將視頻數(shù)據(jù)進(jìn)行壓縮編碼,最后通過(guò)PCI總線(xiàn)將視頻編碼數(shù)據(jù)送入CPU。此外, 視頻壓縮編碼芯片還能通過(guò)I2C總線(xiàn)對(duì)視頻模數(shù)轉(zhuǎn)換芯片的圖像參數(shù)進(jìn)行控制,包括圖像的亮度、色度、對(duì)比度和飽和度的調(diào)節(jié)以及視頻采樣通道的選擇等。
音頻編碼解碼模塊主要包括音頻編碼解碼芯片、音頻模數(shù)與數(shù)模轉(zhuǎn)換芯片和音頻模擬信號(hào)處理電路。音頻模擬信號(hào)處理電路主要是把音頻信號(hào)進(jìn)行濾波、放大;音頻模數(shù)與數(shù)模轉(zhuǎn)換芯片的功能是把模擬音頻信號(hào)轉(zhuǎn)換為數(shù)字音頻信號(hào)及把數(shù)字音頻信號(hào)轉(zhuǎn)換為模擬音頻信號(hào);音頻編碼解碼芯片的主要功能是對(duì)數(shù)字音頻信號(hào)進(jìn)行編解碼。
網(wǎng)絡(luò)模塊主要由以太網(wǎng)控制器、數(shù)據(jù)緩沖存儲(chǔ)器、網(wǎng)絡(luò)收發(fā)器和EEPROM組成,是CPU和網(wǎng)絡(luò)之間的橋梁,類(lèi)似于計(jì)算機(jī)上的網(wǎng)卡。它支持IEEE以太網(wǎng)物理層協(xié)議,在EEPROM中用戶(hù)可以自己燒制嵌入式系統(tǒng)的底層硬件(MAC)地址。
3 軟件開(kāi)發(fā)
本系統(tǒng)的軟件主要分為嵌入式前端機(jī)程序設(shè)計(jì)、監(jiān)控中心軟件設(shè)計(jì)和用戶(hù)界面設(shè)計(jì)三大部分。
3.1 嵌入式前端機(jī)的軟件設(shè)計(jì)
由于監(jiān)控系統(tǒng)的特點(diǎn),前端機(jī)必須滿(mǎn)足實(shí)時(shí)性和并發(fā)性的要求,所以應(yīng)用軟件基于嵌入式實(shí)時(shí)操作系統(tǒng)。采用了US Software開(kāi)發(fā)的SuperTask嵌入式實(shí)時(shí)操作系統(tǒng)。它具有內(nèi)核小、用戶(hù)可配置系統(tǒng)參數(shù)、高效的多任務(wù)管理(支持優(yōu)先級(jí)排隊(duì)和循環(huán)調(diào)度機(jī)制)、支持多種物理介質(zhì)及標(biāo)準(zhǔn)、完整的TCP/IP網(wǎng)絡(luò)協(xié)議棧(兼容BSD)、完全符合ANSI C標(biāo)準(zhǔn)等特點(diǎn)。
前端機(jī)的應(yīng)用程序由主控制、視頻編碼中斷、視頻網(wǎng)絡(luò)傳送、音頻編碼中斷、音頻網(wǎng)絡(luò)傳送、音頻網(wǎng)絡(luò)接收、音頻解碼中斷和串口中斷等幾個(gè)任務(wù)組成,各個(gè)任務(wù)的關(guān)聯(lián)如圖3所示。
3.2 監(jiān)控中心服務(wù)器的軟件設(shè)計(jì)
監(jiān)控中心服務(wù)器軟件是在Window2000下用VC++開(kāi)發(fā)的,其總體結(jié)構(gòu)如圖4所示。
首先,程序?qū)⒏鶕?jù)配置文件的系統(tǒng)參數(shù)進(jìn)行初始化,這些系統(tǒng)參數(shù)用戶(hù)可以根據(jù)自己的需要在配置文件中進(jìn)行修改。
然后,程序?qū)⑦M(jìn)行端口監(jiān)聽(tīng),CCtrlListenSocket(作為監(jiān)控中心服務(wù)器的Socket)開(kāi)始工作。一旦前端機(jī)向監(jiān)控中心請(qǐng)求控制端口的連接,先通過(guò)Accept()將連接指定到CCtrlSocket(),再通過(guò)CCtrlSocket::GetPeerName(rPeerAddress, rPeerPort)得到遠(yuǎn)端的IP地址。如果地址是非法的,則立即斷開(kāi);如果地址合法,就調(diào)用CCtrlSocket::Init()初始化。
主線(xiàn)程主要接收來(lái)自用戶(hù)的按鈕等命令,同時(shí)利用定時(shí)器刷新系統(tǒng)運(yùn)行的總時(shí)間以及利用定時(shí)器檢查各個(gè)前端機(jī)的連接狀態(tài)。
3.3 用戶(hù)界面的設(shè)計(jì)
用戶(hù)界面使用Delphi進(jìn)行開(kāi)發(fā)。Delphi是目前世界上最流行的開(kāi)發(fā)語(yǔ)言,它豐富的應(yīng)用模板并附帶各種工具軟件,使用戶(hù)界面的開(kāi)發(fā)更加方便快捷,外觀更加漂亮。