為機器魚配備的攝像頭是CMOS數(shù)字圖象傳感器。采用的是Ommvision公司的OV9650,OV9650具有130萬的像素、10Bit的數(shù)據(jù)接口與標(biāo)準(zhǔn)SCCB接口,其分辨率達1280x1024并采用CSP-28封裝該攝像頭用類似于IIc總線的Secb總線連接到ARM主芯片的IIc接口進行通信。在ARM芯片中,攝像頭的接口控制模塊(CAMIF)由圖像采集模塊、視頻預(yù)覽尺度模塊、模式混合模塊、特殊功能寄存器(SFR)模塊、碼流尺度模塊、視頻預(yù)覽DMA模塊以及碼流DMA模塊構(gòu)成。COMS攝像頭OV9650輸出的ITU-656格式視頻碼流,經(jīng)CAMIF處理后,將采集到的視頻碼流成兩路不同的格式進行傳輸,兩路格式不同的信號分別進入不同的幀存儲單元進行存貯,之后根據(jù)ARM控制器的指令通過視頻DMA通道進行傳輸。攝像頭原理如圖3所示。
1.5 LCD模塊
LCD液品顯示器是(Liquid Crystal Display)的簡稱,LCD的構(gòu)造是在兩片平行的玻璃當(dāng)中放置液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細小電線,透過通電與否來控制桿狀水晶分子改變方向,將光線折射出來產(chǎn)生畫面。LCD有扭轉(zhuǎn)式向列型(Super Twisted Nematic,簡稱STN)和薄膜式晶體管型(Thin Film Transistor,簡稱TFT)兩種主流類型。因為TFT有反應(yīng)速度快、可視角度大、色彩豐富、分辨率高、對比度、亮度高等優(yōu)點,所以我們選擇TFT的LCD。LCD硬件原理、LCD控制器功能如圖4所示。
LCD的工作受其控制器控制完成,圖5為LCD控制器功能圖。通過LCD控制器的寄存器組REGBANK來對LCD控制器的各項參數(shù)進行設(shè)置。而LCDCDMA則是LCD控制器專用的DMA通道,負責(zé)將視頻數(shù)據(jù)從顯存(顯存是SDRAM中的一塊區(qū)域,可利用REGBANK編程設(shè)定)中取出,并從VIDPRCS從VD[23:0]發(fā)送給LCD屏。同時LPC3600和TIMECEN負責(zé)產(chǎn)生LCD屏所需的控制時,然后從VIDEOMUX送給LCD屏。TIMEGEN包含可編程邏輯,可通過程序進行設(shè)定。TIMEGEN能產(chǎn)生不同LCD屏驅(qū)動電路所需要的時序信號。
LCD部分接口介紹。VFRAME/VSYNC/STV接口:傳送LCD控制器和LCD驅(qū)動器之間的幀同步信號。
VLINE/HSYNC/CPV接口:傳送LCD控制器和LCD驅(qū)動器之間的同步脈沖信號。
VCLK/LCD_HCLK接口:傳送LCD控制器和LCD驅(qū)動器之間的像素時鐘信號。
VM/VDEN/TP接口:傳送LCD驅(qū)動器使用的交流信號。
VD [23:0]接口:LCD的像素數(shù)據(jù)輸出端即RGB信號線。
2 系統(tǒng)軟件設(shè)計
2.1 主程序流程
ARM芯片通過AD管腳對紅外傳感器的發(fā)射模塊傳送命令。發(fā)射模塊發(fā)射紅外線,接收模塊接收遇到障礙物反射回來的紅外線,根據(jù)返回光強產(chǎn)生相應(yīng)的模擬電壓,經(jīng)過A/D轉(zhuǎn)換器后變成十位的二進制數(shù)據(jù)量,通過一定算法計算出到障礙物的距離。ARM芯片判斷計算出的距離與預(yù)設(shè)值的邏輯關(guān)系,根據(jù)結(jié)果判斷是否進行避障。攝像頭采集圖片后,將圖片緩存于SDRAM中,LCD讀取數(shù)據(jù)并將圖像顯示出來。主程序流程如圖6所示。
2.2 紅外模塊
在ARM的A/D進行轉(zhuǎn)換時,首先要對ADC控制寄存器進行初始化,選擇進行轉(zhuǎn)換的模擬輸入端,進行A/D轉(zhuǎn)換,并從ADCDAT0讀取轉(zhuǎn)換結(jié)果。探測的結(jié)果小于預(yù)設(shè)值時ARM芯片執(zhí)行中斷,改變PWM波的占空比使機器魚轉(zhuǎn)向進行避障,反之繼續(xù)前進。紅外模塊流程如圖7所示。
2.3 攝像頭模塊
攝像頭屬于字符類設(shè)備,所以能夠像字節(jié)流一樣被程序訪問,而且只能夠按順序讀寫。Linux內(nèi)核程序通過設(shè)備的位號來尋找攝像頭。Linux內(nèi)核發(fā)送測試信號到地址0X9650,以檢測攝像頭是否存在。OV9650擁有多組寄存器,圖像的輸出編碼方式和分辨率等參數(shù)取決于OV9650的寄存器。IIC (Inter Integration Circuit)是指內(nèi)部整合電路,是常用的標(biāo)準(zhǔn)串行接口。系統(tǒng)是通過IIC總線對寄存器進行整體配置,所以此過程不會占用系統(tǒng)數(shù)據(jù)總線??紤]到圖像傳輸?shù)男剩詳z像頭與ARM芯片之間的Data[0]~Data[7]的通道僅用以傳輸圖像數(shù)據(jù)。以下為攝像頭的部分初始化代碼。
SrcWidth=640-WinHorOffset*2;//CAM_SRC_HSIZE為640,CAM_SRC_VSIZE為480
SrcHeight=480-WinVerOffset*2;//計算得SrcWidth=440,SrcHeight=280
rCIWDOFST=0;//窗口垂直偏移為0
rCIWDOFST=(WinOfsEn<<31) | (WinHorOffset<<16) | (WinVerOffset);//水平偏移為100,垂直偏移為100
rCISRCFMT=(1<<31) | (0<<30) | (0<<29) |(640<<16) | (0<<14) | (480);//30位設(shè)置為1后,圖像顏色失真,偏彩色
Calculate Prescaler RatioShift (SreWidth,PrDstWidth,&PreHorRatio,&H_Shin);//計算并設(shè)置突發(fā)長度
Calculate Prescaler RatioShift (SrcHeight,PrDstHeight,&PreVerRatio,&V_Shift);//計算水平和垂直縮放比率和位移量、水平和垂直比率
攝像頭模塊流程如圖8所示。
3 結(jié)束語
本文介紹了紅外探測器在機器魚上的應(yīng)用以及畫面的實時顯示。通過紅外傳感器使機器魚具有了自主避障的功能。實驗表明基于ARM芯片和LINUX嵌入式系統(tǒng)平臺開發(fā)的自主避障功能的機器魚具有較高的實時避障功能,表明該機器魚具有靈敏度較高的自主避障功能。此設(shè)計提高了機器魚智能度,可作為后續(xù)自主視覺機器魚開發(fā)的基礎(chǔ)。相信隨著高智能的機器魚的研究與設(shè)計會給人類探索、開發(fā)海洋提供更多的幫助與便利。
STM32/STM8
意法半導(dǎo)體/ST/STM
評論