陳國(guó)俊+唐學(xué)麒+吳余萬(wàn)
摘要:該文設(shè)計(jì)一種基于Linux平臺(tái)和ARM的移動(dòng)視頻監(jiān)控小車。介紹了移動(dòng)視頻監(jiān)控小車的系統(tǒng)總體結(jié)構(gòu)、軟件設(shè)計(jì)與硬件設(shè)計(jì)。主控器選用ARM9系列S3C2440作為處理器,電機(jī)驅(qū)動(dòng)芯片選擇L298N,電機(jī)驅(qū)動(dòng)器選擇AVR單片機(jī)ATmega16L作為處理器,實(shí)現(xiàn)控制小車的轉(zhuǎn)向與速度;ARM9采用Linux操作系統(tǒng)。在整機(jī)運(yùn)行和調(diào)試表明,移動(dòng)視頻監(jiān)控小車達(dá)成了圖像采集、溫度探測(cè)、無(wú)線通信等功能。
關(guān)鍵詞:視頻監(jiān)控;移動(dòng)小車;嵌入式系統(tǒng);ARM;Linux
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)34-0081-03
隨著科技在不斷地發(fā)展,特別是在網(wǎng)絡(luò)與系統(tǒng)方面,取得了長(zhǎng)足進(jìn)步,嵌入式系統(tǒng)與因特網(wǎng)的結(jié)合成為物聯(lián)網(wǎng)、大數(shù)據(jù)時(shí)代中的發(fā)展骨干。嵌入式技術(shù)日益成熟的同時(shí),基于嵌入式技術(shù)的研究逐漸與日常生活緊密聯(lián)系起來(lái),基于網(wǎng)絡(luò)遠(yuǎn)程控制視頻監(jiān)控可移動(dòng)小車成為目前人們關(guān)注的焦點(diǎn),其在各行各業(yè)中都具有廣泛的應(yīng)用前景。
1 系統(tǒng)總體結(jié)構(gòu)及硬件平臺(tái)設(shè)計(jì)
1.1 系統(tǒng)總體結(jié)構(gòu)的框架
移動(dòng)視頻監(jiān)控小車與PC機(jī)之間可以利用無(wú)線網(wǎng)絡(luò)相互連接,通過(guò)采用無(wú)線網(wǎng)卡及無(wú)線路由器將移動(dòng)視頻監(jiān)控小車獲取的信息傳遞給PC機(jī),然后通過(guò)PC機(jī)的分析處理,將小車獲取的畫面轉(zhuǎn)換成視頻影像,展示在PC上。系統(tǒng)的結(jié)構(gòu)框架如圖1所示。
1.2 設(shè)計(jì)硬件控制系統(tǒng)
以移動(dòng)視頻監(jiān)控小車為系統(tǒng)核心部分,主要響應(yīng)來(lái)自PC機(jī)的視頻采集數(shù)據(jù)相關(guān)指令,比如采集動(dòng)作指令、信息傳輸指令、小車控制指令等。本次研究以四輪小車作為移動(dòng)小車的本體,并在小車上搭載S3C2440開發(fā)板,構(gòu)成小車整體框架,再結(jié)合移動(dòng)電源、USB攝像頭、USB無(wú)線網(wǎng)卡、直流電機(jī)、電機(jī)控制模塊等有機(jī)結(jié)合,共同形成小車的功能系統(tǒng)。其中,電機(jī)控制模塊組成如圖2所示。
1.2.1 主控制板
選擇適合的RAM、FLASH以及CPU等,這對(duì)應(yīng)用程序和操作系統(tǒng)的運(yùn)行都很重要。本文中選擇ARM 9 S3C2440處理器作為主控制板。
1.2.2 存儲(chǔ)器系統(tǒng)
在主控制板上所用到的存儲(chǔ)器主要有FLASH與SDRAM這兩種。在嵌入式系統(tǒng)中內(nèi)存主要是用SDRAM,它的特點(diǎn)是價(jià)格便宜、運(yùn)行速度快以及存儲(chǔ)量大。對(duì)系統(tǒng)初始化后,將應(yīng)用程序復(fù)制到SDRAM當(dāng)中運(yùn)行,從而提升程序的運(yùn)行速度。在本系統(tǒng)中以并接方式將2片SDRAM組成64M的SDRAM,數(shù)據(jù)的寬度是32位。在本系統(tǒng)中用到的FLASH主要是NAND與NOR這2種,去其中NAND FLASH具有改寫速度快和容量較大的特點(diǎn),,適合用于存儲(chǔ)大量的數(shù)據(jù)。而其中采用的NOR FLASH,特點(diǎn)突出,即可將編譯好二進(jìn)制程序文件置入芯片中,執(zhí)行過(guò)程會(huì)避免程序向RAM中復(fù)制的過(guò)程。
1.2.3 以太網(wǎng)接口模塊
網(wǎng)卡芯片型號(hào)選擇DM9000。它是臺(tái)灣生產(chǎn)的,內(nèi)部集成有媒體訪問(wèn)控制協(xié)議MAC,并且也有10/100M物理接口收發(fā)器PHY,這一芯片存在16k大容量的FIFO,同時(shí)具有4路多功能GPIO。最大支持3.3V電壓和5V的輸入電壓,同時(shí)能通過(guò)其他方式對(duì)內(nèi)部存儲(chǔ)數(shù)據(jù)進(jìn)行操作。它擁有16K大容量FIFO與4路多功能的GPIO。它可以同時(shí)支持3.3V的輸出電壓和5V的輸入電壓,并可以使用多種方式對(duì)其內(nèi)部存儲(chǔ)器進(jìn)行數(shù)據(jù)操作, DM9000網(wǎng)卡芯片之所以應(yīng)用廣泛,主要與其優(yōu)秀的通信能力存在直接關(guān)系,且其更便于開發(fā),較少開發(fā)的周期。
1.2.4 電機(jī)驅(qū)動(dòng)模塊
電機(jī)驅(qū)動(dòng)器選擇AVR單片機(jī)ATmega16L作為處理器,其控制芯片采用L298N,它可以驅(qū)動(dòng)步進(jìn)電機(jī)或直流電機(jī),其工作電流大,工作電壓高,最大瞬間輸出電流為3A,最高工作電壓可達(dá)46V,L298N的內(nèi)部集成了2個(gè)H橋式驅(qū)動(dòng)器,驅(qū)動(dòng)步進(jìn)電機(jī)會(huì)置留電機(jī)很方便。它提供了2個(gè)使能控制端和4個(gè)信號(hào)引腳,通過(guò)邏輯電平來(lái)對(duì)5個(gè)信號(hào)控制引腳進(jìn)行控制。利用兩兩并接方式將4個(gè)直流電機(jī)連接到L298N模塊上。(圖2為L(zhǎng)298N模塊電路原理)
在圖2中的M2與M1分別連接到小車上的4個(gè)電機(jī),控制電平接到IN1,IN2, IN3, IN4上,這樣就能通過(guò)調(diào)整GPIO口的電平高低來(lái)控制M1,M2端所連接的直流電機(jī)。
2 搭建嵌入式軟件開發(fā)平臺(tái)
2.1 建立交叉編譯環(huán)境
交叉編譯是常用的一種程序編譯方式,利用宿主機(jī)進(jìn)行程序的交叉編譯,然后將目標(biāo)代碼發(fā)送至目標(biāo)機(jī),形成二進(jìn)制程序文件,并在嵌入式平臺(tái)系統(tǒng)中運(yùn)行,實(shí)現(xiàn)程序的功能。這一過(guò)程可看作一個(gè)交叉編譯的環(huán)境,如圖3所示。
交叉編譯工具鏈需要在編譯之前安裝到宿主機(jī)上,這種工具鏈通過(guò)應(yīng)用程序與交叉編譯的系統(tǒng)內(nèi)核實(shí)現(xiàn)程序的運(yùn)行。把所需程序代碼在PC機(jī)上編寫好,然后經(jīng)arai-linux-gcc編譯器將程序翻譯成艾瑪,并在設(shè)計(jì)好的目標(biāo)機(jī)小車上運(yùn)行。
2.2 建立TFTP和NFS輔助開發(fā)環(huán)境
在嵌入式系統(tǒng)的開發(fā)中簡(jiǎn)單文件傳輸協(xié)議(TFTP)和網(wǎng)絡(luò)文件系統(tǒng)(NFS)是很實(shí)用的輔助開發(fā)工具,它們可以在很大程度上的提高開發(fā)效率。NFS技術(shù)通過(guò)網(wǎng)絡(luò)可以在不同機(jī)器之間來(lái)實(shí)現(xiàn)文件共享。嵌入式產(chǎn)品的開發(fā)與調(diào)試往往會(huì)用到NFS技術(shù),該技術(shù)的應(yīng)用能夠?qū)崿F(xiàn)目標(biāo)平臺(tái)的文件系統(tǒng)構(gòu)建,并利用網(wǎng)絡(luò)與宿主機(jī)端連接,形成文件共享,并快速修改文件系統(tǒng)的內(nèi)容,使產(chǎn)品開發(fā)效率得到提升。TFTP使屬于PC機(jī)上的工作軟件,要提供對(duì)于開發(fā)板的主要映像文件的下載工作,例如:內(nèi)核映像等。其方便高效并且下載的速度快。
2.3 引導(dǎo)加載程序的移植
引導(dǎo)加載程序(Bootloader)在操作系統(tǒng)的內(nèi)核中啟動(dòng)前加載,這段小程序主要是將硬件設(shè)備初始化,為系統(tǒng)啟動(dòng)創(chuàng)造核實(shí)的軟件環(huán)境,使系統(tǒng)進(jìn)入啟動(dòng)狀態(tài)。
在嵌入式系統(tǒng)開發(fā)階段,引導(dǎo)加載程序具有較多的功能,通常在引導(dǎo)加載程序引導(dǎo)之后,操作系統(tǒng)不會(huì)直接運(yùn)行,而是會(huì)進(jìn)入到人機(jī)交互界面,系統(tǒng)的行為由開發(fā)者來(lái)決定,這時(shí)可執(zhí)行燒寫FLASH,運(yùn)行操作系統(tǒng)、載入內(nèi)核等功能。
2.4 Linux內(nèi)核的配置與裁剪
操作系統(tǒng)的移植,主要是針對(duì)硬件平臺(tái)系統(tǒng),對(duì)系統(tǒng)中的配置加以修改,確保配置能夠滿足運(yùn)行平臺(tái)的基本需求,確保系統(tǒng)順利運(yùn)行。在Linux系統(tǒng)的內(nèi)核模塊化結(jié)構(gòu)上,利用增添和減少內(nèi)核模塊方式來(lái)實(shí)現(xiàn)對(duì)內(nèi)核的裁剪。其本質(zhì)就是一句軟硬件平臺(tái)需求來(lái)實(shí)現(xiàn)內(nèi)核中功能的需求,這種裁剪方式能夠使內(nèi)核容量做出適當(dāng)調(diào)整,從而提升系統(tǒng)內(nèi)核的運(yùn)行效率。結(jié)合本次研究中軟硬件平臺(tái)需求,編譯并配置內(nèi)核文件。因內(nèi)核配置項(xiàng)相對(duì)繁雜,需要對(duì)多方面加強(qiáng)注意。
首先,做好內(nèi)核云代碼植入的準(zhǔn)備工作,進(jìn)入源代碼的目錄,在終端中執(zhí)行makedistclean命令,然后在執(zhí)行make menuconfig ARCH=arm指令,將會(huì)彈出圖文化的配置界面。因本系統(tǒng)中需要用到攝像頭和無(wú)線網(wǎng)卡,因此在linux內(nèi)核配置時(shí),應(yīng)選上對(duì)無(wú)線網(wǎng)卡與攝像頭的驅(qū)動(dòng)支持,若攝像頭與無(wú)線網(wǎng)卡在內(nèi)核中存在支持項(xiàng),因此可直接執(zhí)行以下程序代碼:
Dewice Drivers-->Network device support -->Wireless LAN -- > WirelessLAN(IEEE 802.1 l)-->Ralink driver support
攝像頭的使用需要調(diào)用攝像頭驅(qū)動(dòng)程序,其內(nèi)核支持配置如下:
Dewice Drivers-->Multiinedia support -->Video capture adapters -->V4L USB devices(如圖5所示)
2.5 制作根文件系統(tǒng)
在本文中嵌入式根文件系統(tǒng)采用的是YAFFS2,主要是因其具有占用內(nèi)存小,運(yùn)行速度快的優(yōu)勢(shì),對(duì)于NAND FLASH運(yùn)行的支持效果突出。制作流程如下:
1) 構(gòu)建根文件系統(tǒng)目錄,指令內(nèi)容如下:
mkdir rootfs,cdrootfs,mkdir bin dev etc lib proc sbin sys usr mnt tmp var,mkdir usr/bin usr/bin usr/lib usr/sbin lib/modules.
2)完成根目錄文系統(tǒng)目錄后,建立設(shè)備文件,執(zhí)行指令如下:
cd /dev
mknod -m 666 console c 5 1
mknod -m 666 console c 1 3
3)對(duì)內(nèi)核模塊進(jìn)行安轉(zhuǎn)與編譯,通過(guò)輸入下方指令,進(jìn)入Linux-2.6.38內(nèi)核目錄當(dāng)中:
make modules ARCH=ARM CROSS_COMPILE=ann-linux-
make modules ARCH=ARM IN STALL_MOD_P ATH=/home/rootfs
4)對(duì)Busybox進(jìn)行配置編譯安裝。其一,下載busybox源碼,本次研究的系統(tǒng)源碼版本為1.1.2版;其二,在系統(tǒng)執(zhí)行makememiconfig指令時(shí),按照整實(shí)際的需求實(shí)現(xiàn)圖文化配置;其三,在執(zhí)行程序代碼make modules ARCH=ARM CROSS_COMPILE=arm-Umix-時(shí),需要編譯并安裝make install文件。
5)制作YAFFS2的根文件系統(tǒng)。首先下載安裝制作YAFFS2文件系統(tǒng)工具mkyaffsimgae,輸入mkyaffsimage rootfs rootfs.img指令,這樣完成可YAFFS2根文件系統(tǒng)的制作。
利用引導(dǎo)加載程序把根文件系統(tǒng)鏡像與Linux內(nèi)核燒寫進(jìn)開發(fā)板,這樣就完成了搭建軟件開發(fā)平臺(tái)的全部工作。
3 總結(jié)
本文研發(fā)了一款具有實(shí)時(shí)視頻監(jiān)控和人工遙控功能的小車,它利用無(wú)線網(wǎng)絡(luò)發(fā)送圖像或者數(shù)據(jù)給PC 機(jī),然后PC 機(jī)上會(huì)顯示出準(zhǔn)確的溫度、距離數(shù)據(jù),清晰的標(biāo)志物圖片。移動(dòng)視頻監(jiān)控小車不僅能用于倉(cāng)庫(kù)監(jiān)控,也可作為樓宇場(chǎng)合的視頻監(jiān)控工具。同時(shí),這種小車因性能與體積的優(yōu)勢(shì),能夠在惡劣環(huán)境下使用,可代替人來(lái)完成信息采集工作,比如應(yīng)用于毒氣泄漏信息采集、礦井井下信息采集等惡劣的環(huán)境中。這種小車的應(yīng)用與研究,將便于實(shí)現(xiàn)遠(yuǎn)程監(jiān)控目標(biāo)環(huán)境,對(duì)于探險(xiǎn)、安防及智能樓宇建設(shè)等領(lǐng)域都存在較好的發(fā)展前景。
參考文獻(xiàn):
[1] 張光南. 基于ARM9的嵌入式無(wú)線視頻監(jiān)控小車設(shè)計(jì)[J]. 寶雞文理學(xué)院學(xué)報(bào):自然科學(xué)版, 2014, 34(1):59-61.
[2] 黃倩, 閔華松. 基于ARM的移動(dòng)視頻監(jiān)控系統(tǒng)[J]. 現(xiàn)代電子技術(shù), 2010, 33(1):148-152.
[3] 李昶, 翟開元. 基于ARM-Linux的多端口移動(dòng)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J]. 信息技術(shù), 2011(5):139-141.
[4] 王宏志, 宇皓林. 基于ARM-Linux遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J]. 吉林大學(xué)學(xué)報(bào)理學(xué)版, 2014(1):103-107.
[5] 任克強(qiáng), 劉蘇, 謝斌. 基于ARM11和Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[J]. 電視技術(shù), 2014, 38(5):156-159.
[6] 杜偉龍, 曹江濤. 基于ARM-Linux無(wú)線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J]. 測(cè)控技術(shù), 2015, 34(3):109-112.
[7] 董雷剛, 崔曉微, 張丹,等. 基于ARM+LINUX的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用, 2014(3):268-268.