戚偉
摘要:隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,帶有視頻傳輸功能的智能家居技術(shù)逐漸應(yīng)用到家庭之中,本文從軟硬件兩個(gè)方面來討論一種用于家庭環(huán)境的帶有WiFi功能的視頻處理板的設(shè)計(jì)與實(shí)現(xiàn)思路。本文主要從STM32F407A核心板模塊、圖像處理模塊、WiFi通信模塊這幾個(gè)方面來說明該視頻處理板的設(shè)計(jì)思路。
關(guān)鍵詞:STM32F407A 圖像處理 WiFi
中圖分類號(hào):TN957.51 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)06-0184-02
1 概述
隨著網(wǎng)絡(luò)技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,“互聯(lián)網(wǎng)+”的概念正在逐漸深入到人們生活的方方面面,“互聯(lián)網(wǎng)+智能家居”這個(gè)概念也會(huì)改變我們的生活觀念?!盎ヂ?lián)網(wǎng)+智能家居”會(huì)使我們無論在世界的那個(gè)角落,只要有互聯(lián)網(wǎng)的存在,人們就能夠控制家庭中的相關(guān)電器,觀察家庭中的各個(gè)角落,甚至讓熱水器自動(dòng)打開,電飯煲將米飯煮好。
“互聯(lián)網(wǎng)+智能家居”的核心技術(shù)就在于具備網(wǎng)絡(luò)接口的視頻處理板的設(shè)計(jì),本文主要介紹視頻處理板的軟硬件設(shè)計(jì)與實(shí)現(xiàn)。該視頻處理板硬件模塊大體上分為以下幾塊:STM32F407A核心板模塊、WiFi通信模塊、圖像處理模塊。視頻處理板硬件系統(tǒng)的核心為STM32F407A 控制器,視頻處理板與其他控制板之間的通信是通過 RS232 串口,為該控制系統(tǒng)的二次開發(fā)提供了良好的接口。圖像采集模塊和WiFi傳輸模塊是通過 USB 接口連接視頻處理板的。
2 視頻處理板硬件的設(shè)計(jì)
2.1 STM32F407A處理器單元的設(shè)計(jì)
STM32F407A最小系統(tǒng)在視頻處理板的設(shè)計(jì)中是非常關(guān)鍵的,系統(tǒng)的運(yùn)行和穩(wěn)定的基礎(chǔ)就是最小系統(tǒng)設(shè)計(jì)的可靠性,這是整個(gè)系統(tǒng)的基礎(chǔ)。首先要做的就是根據(jù)STM32F407A用戶手冊(cè)完成最小系統(tǒng)的搭建,在元器件的選配時(shí),一定要選擇穩(wěn)定可靠的元器件,比如電阻、電容、晶振等。在最小系統(tǒng)完成后就可以根據(jù)視頻處理板的設(shè)計(jì)需求逐步添加系統(tǒng)的外設(shè),實(shí)現(xiàn)系統(tǒng)的特定功能,比如移植相應(yīng)的操作系統(tǒng),相應(yīng)外圍電路擴(kuò)展,相應(yīng)外部設(shè)備編寫驅(qū)動(dòng)程序、以及編寫應(yīng)用程序等,然后對(duì)整個(gè)系統(tǒng)進(jìn)行調(diào)試。
在最小系統(tǒng)設(shè)計(jì)好的前提下,為了能夠使STM32F407A的功能得到進(jìn)一步的完善,設(shè)計(jì)將帶有該芯片的最小系統(tǒng)以及其他比較關(guān)鍵核心部件(比如存儲(chǔ)器等)封裝在一塊尺寸小、通用性強(qiáng)的電路板上,我們稱其為核心控制板。該核心板設(shè)計(jì)的好與壞將會(huì)影響到STM32F407A 的發(fā)揮和與 CPU 的通信效率。在最小系統(tǒng)和核心控制板設(shè)計(jì)的基礎(chǔ)上,我們把相關(guān)的外部設(shè)備設(shè)計(jì)到一起,即完成了視頻處理板的設(shè)計(jì)。
2.2 視頻采集模塊設(shè)計(jì)
視頻處理板的主要用途之一是對(duì)家庭中各種情況進(jìn)行攝像,能夠通過PTZ實(shí)現(xiàn)水平360,垂直180的監(jiān)控,相關(guān)視頻處理算法的具體實(shí)現(xiàn)是由攝像機(jī)的選擇和其工作方式來決定。Linux 內(nèi)核驅(qū)動(dòng)已經(jīng)支持的攝像機(jī)的驅(qū)動(dòng)有很多,比如比較常用的 ov511芯片,但這些攝像機(jī)對(duì)于視頻處理板的使用上并不是很理想。視頻處理板系統(tǒng)采用的是型號(hào)是DS-2CZ2152P(N),提供了攝像機(jī)的解決方案,除了視頻處理功能外,關(guān)鍵是通過RS485總線能實(shí)現(xiàn)對(duì)其變焦。
攝像機(jī)通過主控板上的接口與視頻處理板相連,采用12V供電,電源是通過主控板來提供的。該攝像機(jī)的相關(guān)驅(qū)動(dòng) Linux 內(nèi)核里面還不支持,為了使該一體攝像機(jī)能夠在Linux 系統(tǒng)中正常工作,需要獲取相關(guān)的驅(qū)動(dòng)內(nèi)核源碼之后進(jìn)行修改,然后加載該驅(qū)動(dòng)即可實(shí)現(xiàn)對(duì)于該攝像機(jī)的控制編程。
2.3 WiFi 網(wǎng)絡(luò)傳輸模塊設(shè)計(jì)
視頻處理板的移動(dòng)特性決定了視頻處理板不可能采用常規(guī)的通過RJ45實(shí)現(xiàn)的網(wǎng)絡(luò)雙絞線有線數(shù)據(jù)傳輸。在這里 PC 機(jī)與視頻處理板之間的通信的方案就是基于無線路由器來實(shí)現(xiàn)的網(wǎng)絡(luò)傳輸,WiFi(Wireless Fidelity,WiFi)應(yīng)該是該視頻處理板采用了一種相對(duì)來講比較可行的和可靠的無線傳輸模式。
視頻處理板主板采用 WiFi 無線方式連接到家庭中使用的無線路由器,然后通過Internet將無線路由器獲取的信息傳輸?shù)竭h(yuǎn)端的PC 機(jī),這樣家庭中的人員通過客戶端的軟件來實(shí)現(xiàn)對(duì)家庭環(huán)境的監(jiān)控。另外通過攝像機(jī)可實(shí)現(xiàn)抓拍圖像并識(shí)別,并同時(shí)根據(jù)客戶端監(jiān)控軟件的需求,完成相應(yīng)的動(dòng)作,主要是抓拍、錄像、變焦等。根據(jù)該視頻處理板系統(tǒng)的需求,最終選擇的無線網(wǎng)絡(luò)互連設(shè)備為TPLINK-WR841N。
3 視頻處理板軟件設(shè)計(jì)
視頻處理板的系統(tǒng)軟件主要由以下幾個(gè)部分組成:加載程序的引導(dǎo)、內(nèi)核程序、根文件系統(tǒng)、應(yīng)用程序。Bootloader的開發(fā)工具是由ADS來完成的,其功能主要包括以下內(nèi)容:硬件初始化,引導(dǎo)和加載內(nèi)核映像。Linux操作系統(tǒng)功能實(shí)現(xiàn)主要包含以下幾個(gè)方面:實(shí)現(xiàn)對(duì)于進(jìn)程的調(diào)度和通信、管理系統(tǒng)內(nèi)存,管理文件系統(tǒng),硬件驅(qū)動(dòng)程序是建立實(shí)現(xiàn)其他功能的基礎(chǔ)。該項(xiàng)目在設(shè)計(jì)系統(tǒng)中需要加載Linux內(nèi)核的驅(qū)動(dòng)主要有以下方面:攝像機(jī)的USB驅(qū)動(dòng),無線網(wǎng)卡驅(qū)動(dòng)。構(gòu)建和移植嵌入式Linux操作系統(tǒng)過程分析如下。
3.1 視頻處理板移植嵌入式Linux環(huán)境的搭建
在本文中,利用一臺(tái)PC機(jī)作為主機(jī),然后在主機(jī)上安裝VMWARE虛擬機(jī),在虛擬機(jī)上安裝RedHat Linux 9.0,該方案在RedHat Linux 9.0環(huán)境下使用vi文本編輯器,然后通過Linux-GCC交叉編譯工具進(jìn)行相關(guān)內(nèi)容的編譯,通過安全的CRT終端的COM端口將交叉編譯程序?qū)懭腴_發(fā)板中。本設(shè)計(jì)用來編譯引導(dǎo)程序、內(nèi)核、文件系統(tǒng)和應(yīng)用程序采用的是Linux-GCC-4.1.2的版本,通過終端程序?qū)⒛繕?biāo)代碼安全燒入目標(biāo)機(jī)。該Linux系統(tǒng)采用的版本是u-boot -1.1.6 的引導(dǎo)程序和Linux -2.6.31作為該視頻處理板的嵌入式操作系統(tǒng)。主機(jī)和目標(biāo)機(jī)使用完成后的軟件開發(fā)環(huán)境,可以在程序的基礎(chǔ)上進(jìn)一步的發(fā)展和完善該視頻處理板控制系統(tǒng)軟件。
系統(tǒng)啟動(dòng)代碼(Bootloader)寫入,引導(dǎo)加載程序是操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的小程序。引導(dǎo)加載程序的主要功能是將硬件設(shè)備進(jìn)行初始化,然后建立內(nèi)存空間的映射圖,從而為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好相應(yīng)的環(huán)境。
3.2 USB設(shè)備驅(qū)動(dòng)程序的編寫
USB是通用COM總線的簡稱。最新的USB規(guī)范修訂后理論上USB的傳輸速率最高可達(dá)480Mbps的高速連接。主要類型的USB驅(qū)動(dòng)程序在Linux內(nèi)核中是支持的,分別為:驅(qū)動(dòng)程序的主機(jī)系統(tǒng)和設(shè)備驅(qū)動(dòng)程序。從主機(jī)的角度來看(是普通PC的一個(gè)主機(jī)),當(dāng)主機(jī)系統(tǒng)的USB設(shè)備驅(qū)動(dòng)控制器插入U(xiǎn)SB設(shè)備之后,USB設(shè)備驅(qū)動(dòng)程序的功能是控制設(shè)備如何作為一個(gè)USB設(shè)備從而實(shí)現(xiàn)和主機(jī)的通信。
USB驅(qū)動(dòng)程序存在于不同的內(nèi)核子系統(tǒng)和USB硬件控制器,USB核心提供了一個(gè)硬件的訪問和控制USB接口的USB驅(qū)動(dòng),而無需考慮當(dāng)前系統(tǒng)中存在的各種不同類型的USB硬件控制器。USB是一個(gè)非常復(fù)雜的設(shè)備,Linux內(nèi)核為我們提供了一個(gè)核心,稱為USB子系統(tǒng)來處理最復(fù)雜的部分。USB設(shè)備包括配置,接口和端點(diǎn),USB設(shè)備綁定到接口,而不是整個(gè)USB設(shè)備。
3.3 攝像機(jī)USB的驅(qū)動(dòng)程序的開發(fā)
Linux設(shè)備驅(qū)動(dòng)程序所在的位置是集成在內(nèi)核中,其主要功能是實(shí)際處理并且操作硬件控制器的軟件。從本質(zhì)上意義來講,驅(qū)動(dòng)器是存儲(chǔ)在共享庫的永久存儲(chǔ)器中低層次的硬件處理程序,設(shè)備驅(qū)動(dòng)程序是抽象處理設(shè)備;也意味著,設(shè)備驅(qū)動(dòng)程序是一個(gè)內(nèi)核比較高的特權(quán)級(jí)別,其具備永久的記憶,并且可以由底層共享硬件處理程序。Linux設(shè)備驅(qū)動(dòng)程序與外界接口的構(gòu)成是由以下三個(gè)部分構(gòu)成的:(1)驅(qū)動(dòng)程序接口和內(nèi)核;(2)系統(tǒng)引導(dǎo)與驅(qū)動(dòng)程序接口;(3)設(shè)備接口和驅(qū)動(dòng)程序。
攝像機(jī)USB的驅(qū)動(dòng)程序的源代碼的實(shí)現(xiàn)是通過以下五個(gè)方面來完成的:(1)初始化設(shè)備模塊;(2)上層軟件接口模塊;(3)數(shù)據(jù)傳輸模塊;(4)USB內(nèi)核的支持;(5)完成測試。
在臨時(shí)目錄中保存相應(yīng)的命名圖片,這樣就標(biāo)志著已經(jīng)成功的加載了攝像機(jī)USB驅(qū)動(dòng),圖片的處理就可以通過相應(yīng)的命令來實(shí)現(xiàn)了。
3.4 TL- WR841N WiFi無線路由器驅(qū)動(dòng)程序的編寫
視頻處理板采用的WiFi無線路由器的型號(hào)是 TL- WR841N,這個(gè)路由器的核心所使用的是Atheros AR7240。具體實(shí)現(xiàn)過程如下:
(1)解壓縮下載的壓縮包,在drivers/usb/net/創(chuàng)建一個(gè)文件夾AR7240,采用如下命令:#mkdir drivers/usb/net/AR7240,Module 下的文件最終要拷貝到AR7240;(2) Makefile 文件的配置進(jìn)行修改,復(fù)制Makefile.6下的Makefile文件,使用正確的編譯器對(duì)Makefile 進(jìn)行編譯,同時(shí)修改其 Linux 內(nèi)核路徑;(3)修改Kconfig 配置文件加入以下項(xiàng):在文件夾Makefile中加入obj-$(CONFIG_AtherosAR7240)+=AtherosAR7240/;然后congfig AR7240->tristate support AR7240;(4)重新配置內(nèi)核:#make menu config;(5)配置 busybox;(6)將內(nèi)核映像文件編譯,讓后將其移植到視頻處理板中,啟動(dòng)Linux內(nèi)核,連接無線路由器,完成相應(yīng)的連接,通過Ping命令完成連接效果測試。
3.5 視頻相關(guān)程序的編寫
3.5.1 視頻數(shù)據(jù)
Video4Linux(Video For Linux)是V4L的全稱, 視頻圖像采集設(shè)備的應(yīng)用程序的接口就是V4L要實(shí)現(xiàn)的具體功能,具體來講是兩點(diǎn),第一個(gè)是視頻設(shè)備信息的獲取,第二個(gè)功能是圖形信息的處理。應(yīng)該說V4L是在Linux中編寫驅(qū)動(dòng)程序和相關(guān)驅(qū)動(dòng)程序的基礎(chǔ),其提供了最重要的接口函數(shù)。在Linux中視頻設(shè)備是被當(dāng)做具體的文件來看待的,其完整路徑的設(shè)備文件名為:/DEV/VIDEO。視頻設(shè)備的驅(qū)動(dòng)被開發(fā)之后,加載到內(nèi)核中后,要想實(shí)現(xiàn)圖像和視頻的采集,調(diào)用 V4L 的應(yīng)用程序編程接口就可以了,要想進(jìn)行進(jìn)一步的設(shè)計(jì),一般將Video4Linux分為兩層,分別是上層的API 函數(shù)和下層的視頻設(shè)備的驅(qū)動(dòng)。
攝像機(jī)視頻數(shù)據(jù)的采集,首先要將USB攝像機(jī)和系統(tǒng)的控制板連接,這樣通過控制板給該攝像機(jī)上電,系統(tǒng)啟動(dòng)驅(qū)動(dòng)程序,然后讀取攝像頭相關(guān)信息,下一步就可以進(jìn)行視頻圖像的采集了,除了加載驅(qū)動(dòng)之外還需要編寫一個(gè)與視頻圖像采集相關(guān)的應(yīng)用程序。
3.5.2 壓縮視頻程序
圖像數(shù)據(jù)未經(jīng)壓縮需要的存儲(chǔ)空間會(huì)很大,而視頻處理板不光要進(jìn)行圖像數(shù)據(jù)的存儲(chǔ),然后還需要將數(shù)據(jù)圖像進(jìn)行傳輸,因?yàn)閳D像的傳輸量比較大,一個(gè)攝像機(jī)的單位時(shí)間需要傳輸3.5MB的數(shù)據(jù)量,這么大的數(shù)據(jù)量是需要利用相應(yīng)的壓縮算法的。JPEG是一種很成熟的視頻編碼格式,其本質(zhì)上采用的是DTC自適應(yīng)變換編碼算法,是ISO/IEC的靜止圖像壓縮標(biāo)準(zhǔn),本設(shè)計(jì)最終采用JPEG的有損壓縮模式。
3.5.3 視頻傳輸程序
視頻處理板通過攝像機(jī)獲取的信息是要通過網(wǎng)絡(luò)傳輸?shù)?,而系統(tǒng)使用的是網(wǎng)絡(luò)視頻監(jiān)控,最終要實(shí)現(xiàn)將數(shù)據(jù)傳輸至互聯(lián)網(wǎng),本視頻處理板的網(wǎng)絡(luò)傳輸協(xié)議采用的是TCP/IP協(xié)議。IP地址是32位二進(jìn)制組成的互聯(lián)網(wǎng)的地址,是網(wǎng)絡(luò)間客戶端進(jìn)行通信的唯一標(biāo)識(shí)。
TCP協(xié)議進(jìn)行三次握手協(xié)議實(shí)現(xiàn)了傳輸層上的數(shù)據(jù)通信,Socket接口實(shí)現(xiàn)了該協(xié)議的相關(guān)的API,Linux下支持多種套接字socket。
4 結(jié)語
本文主要討論了一種視頻處理板的具體實(shí)現(xiàn)過程。從軟件和硬件兩個(gè)角度進(jìn)行分析,硬件上主要包含STM32F407A處理器單元的設(shè)計(jì)、視頻采集模塊設(shè)計(jì)、WiFi 網(wǎng)絡(luò)傳輸模塊設(shè)計(jì)的硬件構(gòu)成,從軟件方面包括視頻處理板的Linux操作系統(tǒng)相關(guān)軟件的搭建,USB設(shè)備驅(qū)動(dòng)程序的編寫,攝像機(jī)USB的驅(qū)動(dòng)程序的開發(fā),TL- WR841N WiFi無線路由器驅(qū)動(dòng)程序的編寫,視頻相關(guān)程序的編寫方面的具體實(shí)現(xiàn)過程。
參考文獻(xiàn)
[1]西剎子.智能網(wǎng)絡(luò)視頻監(jiān)控[M].北京:清華大學(xué)出版社,2010,2:330-331.
[2]郝衛(wèi)東.基于Linux的嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)研究與設(shè)計(jì).計(jì)算機(jī)系統(tǒng)與應(yīng)用,2007(6).
[3]劉永安.基于ARM的智能家居控制系統(tǒng).西南交通大學(xué),2009.