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