基于ARM和FPGA的智能小車監(jiān)控系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
智能小車是機(jī)器人研究領(lǐng)域的一項(xiàng)重要內(nèi)容。它集機(jī)械、電子、檢測技術(shù)與智能控制于一體。在各種移動(dòng)機(jī)構(gòu)中,智能小車的輪式移動(dòng)機(jī)構(gòu)最為常見。輪式移動(dòng)機(jī)構(gòu)之所以得到廣泛的應(yīng)用,主要是因?yàn)槿菀卓刂破湟苿?dòng)速度和移動(dòng)方向。智能小車可以適應(yīng)不同環(huán)境,不受溫度、濕度等條件的影響,完成危險(xiǎn)地段、人類無法介入等特殊情況下的任務(wù)。一般的智能小車操作控制復(fù)雜、功能單一、不能遠(yuǎn)程重構(gòu)。
本文介紹的智能小車可移動(dòng)視頻監(jiān)控系統(tǒ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è)置為禁止上拉,否則無法和FPGA進(jìn)行通信。該系統(tǒng)具體組成如圖1所示。
2 系統(tǒng)硬件電路設(shè)計(jì)
2.1 圖像采集電路設(shè)計(jì)
圖像采集模塊選用OmniVision公司的CMOS圖像傳感器OV9650,可達(dá)130萬像素,具有標(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)無須采集圖像時(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ù)的輸入。
[!--empirenews.page--]
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的連接比較簡單,如圖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相連,所以對其進(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)對電機(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ī)控制電路簡單,外接有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í),就需要對圖像傳感器芯片的寄存器和S3C2440A的CAMIF單元的寄存器同時(shí)配置,否則就得不到正常圖像。S3C2440A以I2C總線的方式對CMOS圖像傳感器芯片的寄存器進(jìn)行配置。
在WinCE下,圖像采集驅(qū)動(dòng)是基于流接口設(shè)計(jì)的。首先在CIS_Init函數(shù)下對相機(jī)接口的寄存器進(jìn)行配置,主要配置功能包括:設(shè)置相機(jī)接口輸出時(shí)鐘;設(shè)置圖像輸入輸出格式;設(shè)置裁剪圖像偏移量;設(shè)置幀緩沖區(qū)中圖像像素大??;設(shè)置編碼通道和預(yù)覽通道幀緩沖區(qū)起始地址。然后S3C2440A以I2C總線方式對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ù)源。[!--empirenews.page--]
3.2 速度采集程序設(shè)計(jì)
速度傳感器由紅外反射式傳感器和施密特觸發(fā)器組成,經(jīng)過施密特觸發(fā)器整形后信號(hào)的頻率與速度相關(guān),通過測量該信號(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ù)等待客戶端的連接請求,服務(wù)器端接收該連接請求后,雙方就此建立了連接??蛻舳送ㄟ^send()發(fā)送請求命令,服務(wù)器調(diào)用recv()函數(shù)接收該請求命令,通過命令解析來執(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é)語
該設(shè)計(jì)在自制電路板板上進(jìn)行了軟、硬件的系統(tǒng)集成及測試。測試結(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。