本文介紹的智能小車可移動(dòng)視頻監(jiān)控系統(tǒng),,以“飛思卡爾杯”智能小車競(jìng)賽提供的車模裝置為基礎(chǔ),,利用ARM芯片S3C2440A控制圖像采集、網(wǎng)絡(luò)傳輸,、速度采集干擾小的模塊,,利用FPGA芯片控制電機(jī)驅(qū)動(dòng)、舵機(jī)控制,、電量采集干擾大的模塊,,當(dāng)上位機(jī)通過Internet訪問智能小車服務(wù)器時(shí),在監(jiān)控界面上點(diǎn)擊按鈕來控制小車的運(yùn)行,、圖像拍攝,、速度采集。
1 系統(tǒng)總體設(shè)計(jì)
該系統(tǒng)采用三星公司的ARM芯片S3C2440A作為主控制芯片及Altera公司的FPGA芯片EP2C5T144C8作為輔助控制芯片,,ARM上裝有Windows CE5.0操作系統(tǒng),。S3C2440A內(nèi)置豐富的外設(shè)資源包括中斷控制器、GPIO,、I2C,、相機(jī)接口等接口電路,其內(nèi)核為16/32位的ARM920T處理器,它集MMU,,AMBA BUS和Harvard高速緩沖體系結(jié)構(gòu)與一體,,主頻可達(dá)400 MHz。
利用ARM9控制圖像采集,、速度采集,、網(wǎng)絡(luò)傳輸?shù)裙男 ⒏蓴_弱的模塊;利用FPGA單獨(dú)控制功耗大,、干擾強(qiáng)的直流電機(jī),、舵機(jī)、固態(tài)繼電器以提高系統(tǒng)的抗干擾能力,。ARM9和FPGA以并行總線的方式進(jìn)行數(shù)據(jù)和控制信號(hào)的傳輸,需要注意的是ARM的I/O口需要設(shè)置為禁止上拉,,否則無(wú)法和FPGA進(jìn)行通信,。該系統(tǒng)具體組成如圖1所示。
2 系統(tǒng)硬件電路設(shè)計(jì)
2.1 圖像采集電路設(shè)計(jì)
圖像采集模塊選用OmniVision公司的CMOS圖像傳感器OV9650,,可達(dá)130萬(wàn)像素,,具有標(biāo)準(zhǔn)SCCB(setial camera control bus)接口,通過該接口可以方便地設(shè)置圖像像素大小,、輸出YCbCr順序,、白平衡、色飽和等重要參數(shù),。
S3C2440A可以直接和CMOS圖像傳感器OV9650連接,,如圖2所示。OV9650的PWDN引腳與S3C2440A的GPG12引腳相連,,這樣可以控制OV9650的工作狀態(tài),。當(dāng)無(wú)須采集圖像時(shí),將GPG12輸出高電平,,OV9650芯片處于掉電模式,,節(jié)省電能消耗。OV9650可輸出YCbCr,,RGB兩種格式的數(shù)據(jù),,當(dāng)輸出YCbCr格式時(shí),要用到數(shù)據(jù)線的D2~D9;當(dāng)輸出RGB格式時(shí),,則需要用數(shù)據(jù)線D0~D9,。本文采用YCbCr格式,數(shù)據(jù)線D2~D9與S3C2440A的CAMDATA0~CAMDATA7相連,。
S3C2440A芯片具有相機(jī)接口CAMIF,,其內(nèi)部單元如圖3所示,CAMIF支持ITU-R BT.601/656YCbCr 8 b標(biāo)準(zhǔn)的圖像數(shù)據(jù)輸入,,最大可采樣4 096×4 096像素的圖像,。該接口可以使用兩種通道將圖像數(shù)據(jù)存儲(chǔ)在SDRAM中:一種是預(yù)覽通道模式,,將從相機(jī)接口采集到的圖像數(shù)據(jù)轉(zhuǎn)為RGB數(shù)據(jù),并在DMA控制下傳輸?shù)絊DRAM,,這種模式通常用來提供圖像預(yù)覽功能;另一種是編碼通道模式,,將圖像數(shù)據(jù)按照YCbCr 4:2:0或者YCbCr 4:2:2的格式傳輸?shù)絊DRAM,這種模式主要為JPEC,,MPEG-4,,H.263等編碼器提供圖像數(shù)據(jù)的輸入。
2.2 網(wǎng)絡(luò)傳輸模塊電路設(shè)計(jì)
網(wǎng)絡(luò)傳輸模塊選用DAVICOM公司推出的一款高速以太網(wǎng)接口芯片DM9000A,,內(nèi)部集成10/100M物理層接口,,16 KB SRAM用作接收發(fā)送的F-IFO緩存,支持8/16 b內(nèi)存數(shù)據(jù)存取接口,。
S3C2440A內(nèi)部沒有專用以太網(wǎng)控制器,,需要外部總線外掛一個(gè)以太網(wǎng)控制器,才能實(shí)現(xiàn)S3C2440A連接以太網(wǎng)的需要,,該系統(tǒng)選用DM9000A作為以太網(wǎng)的物理層接口,。DM9000A與S3C2440A的連接比較簡(jiǎn)單,如圖4所示,。S3C2440A數(shù)據(jù)總線DATA0~DATA15與芯片的SD0~SD15連接;地址線ADDR2與芯片的CMD連接;片選線nGCS3與芯片nCS的相連;9號(hào)外中斷與芯片的INT相連,。DM9000A以太網(wǎng)控制器的工作基址為0x300,而S3C2440A的地址線ADDR2與芯片的命令/數(shù)據(jù)使能端CMD相連,,所以對(duì)其進(jìn)行操作時(shí)的地址是0x300(地址端口)或0x304(數(shù)據(jù)端口),。
2.3 運(yùn)動(dòng)控制電路設(shè)計(jì)
速度采集模塊由紅外傳感器和脈沖整形電路組成,經(jīng)整形后的脈沖送往ARM中斷進(jìn)行脈沖捕獲,。運(yùn)動(dòng)控制模塊選用型號(hào)為RS-380SH的直流電機(jī)控制車模的前進(jìn)或后退,,選用型號(hào)為FUTABA-S3010的舵機(jī)控制車模的轉(zhuǎn)向,電機(jī)驅(qū)動(dòng)芯片選用L298N實(shí)現(xiàn)對(duì)電機(jī)調(diào)速,、正反轉(zhuǎn)的控制,。
該系統(tǒng)運(yùn)動(dòng)控制包括電機(jī)控制和舵機(jī)控制兩部分。電機(jī)控制如圖5所示,,PWM1,,PWM2用于控制電機(jī)的轉(zhuǎn)速,IN11,,IN12,,IN21,IN22用于控制電機(jī)正反轉(zhuǎn),。舵機(jī)控制電路簡(jiǎn)單,,外接有3根線,紅色為電源線,黑色為地線,,另外一個(gè)為PWM信號(hào)輸入線,。兩者的主要控制信號(hào)是PWM信號(hào),S3C2440A發(fā)送命令控制FPGA輸出占空比可調(diào)的PWM信號(hào),。舵機(jī)PWM信號(hào)的周期固定為20 ms,,脈寬分布在1~2 ms之間,因此選定PWM信號(hào)頻率為50 Hz,,占空比固定在5%~10%之間,。直流電機(jī)PWM信號(hào)頻率選定10 kHz,占空比可在0%~100%波動(dòng),,當(dāng)IN11=1,,IN12=0,電機(jī)正轉(zhuǎn)且轉(zhuǎn)速隨PWM1信號(hào)的占空比不同而變化,,當(dāng)IN11=0,,IN12=1,電機(jī)反轉(zhuǎn)且轉(zhuǎn)速也隨著PWM1信號(hào)占空比變化,。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 圖像采集驅(qū)動(dòng)開發(fā)
該系統(tǒng)圖像采集模塊硬件電路由CMOS圖像傳感器芯片和S3C2440A的CAMIF單元組成。為此在編寫圖像采集驅(qū)動(dòng)程序時(shí),,就需要對(duì)圖像傳感器芯片的寄存器和S3C2440A的CAMIF單元的寄存器同時(shí)配置,,否則就得不到正常圖像。S3C2440A以I2C總線的方式對(duì)CMOS圖像傳感器芯片的寄存器進(jìn)行配置,。
在WinCE下,,圖像采集驅(qū)動(dòng)是基于流接口設(shè)計(jì)的。首先在CIS_Init函數(shù)下對(duì)相機(jī)接口的寄存器進(jìn)行配置,,主要配置功能包括:設(shè)置相機(jī)接口輸出時(shí)鐘;設(shè)置圖像輸入輸出格式;設(shè)置裁剪圖像偏移量;設(shè)置幀緩沖區(qū)中圖像像素大小;設(shè)置編碼通道和預(yù)覽通道幀緩沖區(qū)起始地址,。然后S3C2440A以I2C總線方式對(duì)OV9650的寄存器進(jìn)行配置,需要注意的是相機(jī)接口的配置功能要和OV9650的配置功能完全一致,,否則采集不到圖像,,兩者之間通信協(xié)議如圖6所示。最后利用API函數(shù)CreateThread()創(chuàng)建中斷服務(wù)線程,。
中斷服務(wù)線程函數(shù)負(fù)責(zé)具體的中斷操作,,在該線程函數(shù)內(nèi)利用CreateEent()函數(shù)創(chuàng)建CAMIF單元的中斷事件。然后調(diào)用InterruptInitia-lize()函數(shù)將該中斷事件與CAMIF單元的邏輯中斷相關(guān)聯(lián),。最后調(diào)用Wait For SingleObject()等待中斷事件的到來,,當(dāng)中斷到來時(shí),將讀取事件置位,,在應(yīng)用程序中即可利用ReadFile()函數(shù)讀取YCbCr數(shù)據(jù),,為圖像壓縮提供數(shù)據(jù)源。
3.2 速度采集程序設(shè)計(jì)
速度傳感器由紅外反射式傳感器和施密特觸發(fā)器組成,經(jīng)過施密特觸發(fā)器整形后信號(hào)的頻率與速度相關(guān),,通過測(cè)量該信號(hào)頻率計(jì)算車模行駛速度,。在Windows CE中,API函數(shù)SetTimer()可以設(shè)置定時(shí)器編號(hào)和定時(shí)時(shí)間,,當(dāng)定時(shí)時(shí)間到達(dá)時(shí),,執(zhí)行消息響應(yīng)函數(shù)OnTimer。速度采集流程如圖7所示,。調(diào)用SetTimer函數(shù)設(shè)置定時(shí)器初值,,當(dāng)外部中斷EINT_19產(chǎn)生時(shí),即一個(gè)脈沖信號(hào)到來,,計(jì)數(shù)變量CNT加1,,當(dāng)SetTimer()函數(shù)設(shè)置的時(shí)間到來時(shí),執(zhí)行OnTimer()函數(shù),,該函數(shù)負(fù)責(zé)計(jì)算車模速度并將計(jì)數(shù)變量CNT清0,。
計(jì)數(shù)變量CNT雖然與速度成正比關(guān)系,但它并不是真正的行駛速度,,需要經(jīng)過一定的數(shù)學(xué)轉(zhuǎn)換,,才能傳送到遠(yuǎn)程監(jiān)控端并顯示。假設(shè)車模后輪直徑為D,,光柵編碼盤黑白相間的個(gè)數(shù)為M,,在定時(shí)時(shí)間T秒內(nèi)記得脈沖個(gè)數(shù)為N,則車模行駛速度:
3.3 網(wǎng)絡(luò)傳輸程序設(shè)計(jì)
該系統(tǒng)網(wǎng)絡(luò)傳輸程序是基于TCP協(xié)議來實(shí)現(xiàn)的,。S3C2440A組成的嵌入式設(shè)備作為服務(wù)器負(fù)責(zé)圖像采集,、速度采集、車??刂?。服務(wù)器調(diào)用accept()函數(shù)等待客戶端的連接請(qǐng)求,服務(wù)器端接收該連接請(qǐng)求后,,雙方就此建立了連接,。客戶端通過send()發(fā)送請(qǐng)求命令,,服務(wù)器調(diào)用recv()函數(shù)接收該請(qǐng)求命令,,通過命令解析來執(zhí)行具體的操作,若收到圖像采集命令,,服務(wù)器端打開攝像頭驅(qū)動(dòng),,設(shè)置圖像像素大小后,將采集到Y(jié)CbCr數(shù)據(jù)進(jìn)行JPEG的壓縮并保存為.jpg格式的圖片,。然后將該圖片發(fā)送到客戶端,,客戶端將該圖片在圖像顯示區(qū)域顯示;若收到速度采集命令,,服務(wù)器端打開定時(shí)器,打開外部中斷EINT19,,用于計(jì)數(shù),,當(dāng)定時(shí)時(shí)間到后,將計(jì)數(shù)脈沖轉(zhuǎn)換為以cm/s為單位的速度發(fā)送到客戶端,,客戶端將采集到速度在速度顯示區(qū)顯示;若收到控制車模運(yùn)行狀態(tài),,如前進(jìn)、后退,、左轉(zhuǎn),、右轉(zhuǎn),服務(wù)器端打開GPIO驅(qū)動(dòng),,通過GPIO端口輸出控制信號(hào),,控制FPGA輸出占空比可調(diào)的PWM信號(hào),即可控制車模的運(yùn)行狀態(tài),。
客戶端負(fù)責(zé)發(fā)送控制車模,、圖像采集、速度采集的命令,,然后將服務(wù)器端發(fā)送過來的圖像,、速度信息進(jìn)行顯示??蛻舳说谋O(jiān)控界面如圖8所示,。
遠(yuǎn)程地址欄輸入服務(wù)端IP地址,點(diǎn)擊“創(chuàng)建連接”按鈕即可和服務(wù)器端進(jìn)行連接,,連接成功后,就可以進(jìn)行一系列的命令發(fā)送,。
4 結(jié)語(yǔ)
該設(shè)計(jì)在自制電路板板上進(jìn)行了軟,、硬件的系統(tǒng)集成及測(cè)試。測(cè)試結(jié)果為:圖像采集時(shí)鐘24 MHz;圖像采集速度為30 f/s;行同步頻率為14.5 kHz,,圖像采集像素為640×480;JPEG壓縮比達(dá)到10:1;運(yùn)動(dòng)控制命令響應(yīng)時(shí)間為5μs,,網(wǎng)絡(luò)傳輸速率達(dá)10 Mb/s。