0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Arduino的OV7670相機(jī)模塊設(shè)計(jì)方案

西西 ? 來(lái)源:一板網(wǎng) ? 作者:風(fēng)箏 ? 2020-10-30 15:47 ? 次閱讀

電子行業(yè)中,相機(jī)一直占據(jù)著主導(dǎo)地位,因?yàn)樗猛緩V泛,如訪客監(jiān)控系統(tǒng)、救援系統(tǒng)、考勤系統(tǒng)等。現(xiàn)今,我們使用的相機(jī)非常智能,并具有早期相機(jī)中不存在的許多功能?,F(xiàn)今的數(shù)碼相機(jī)不僅捕捉圖像,還能捕捉高清晰度畫面并分析他們看到的內(nèi)容。它廣泛用于機(jī)器人、人工智能、機(jī)器學(xué)習(xí)等。捕獲的幀使用人工智能和機(jī)器學(xué)習(xí)進(jìn)行處理,然后用于許多應(yīng)用,如車牌檢測(cè)、物體檢測(cè)、運(yùn)動(dòng)檢測(cè)、面部識(shí)別等。

在本篇文章中,我們將使用最廣泛使用的相機(jī)模塊OV7670與Arduino UNO進(jìn)行連接。相機(jī)模塊OV7670也可以Arduino Mega開發(fā)板連接,具有相同的引腳配置、代碼和步驟。相機(jī)模塊很難連接,因?yàn)樗枰罅康囊_和雜亂的布線。當(dāng)使用相機(jī)模塊時(shí),走線變得非常重要,因?yàn)樽呔€方式的選擇和走線的長(zhǎng)度會(huì)顯著影響圖像質(zhì)量并且會(huì)帶來(lái)噪聲。

OV7670相機(jī)模塊工作在3.3V,因此必須要注意,Arduino在其輸出GPIO引腳上提供5V輸出。 OV7670是一款FIFO相機(jī)。但在本文中,我們將在沒(méi)有使用FIFO的情況下抓取圖片。本問(wèn)將提供簡(jiǎn)單的步驟和簡(jiǎn)化的編程,以便將OV7670與Arduino UNO進(jìn)行連接。

需要的組件

● Arduino UNO開發(fā)

● OV7670相機(jī)模塊

電阻(10k和4.7k)

● 跳線

有關(guān)相機(jī)模塊OV7670的注意事項(xiàng)

OV7670相機(jī)模塊是一種FIFO相機(jī)模塊,可從不同制造商處獲得,具有不同的引腳配置。 OV7670提供各種格式的全幀窗口8位圖像。圖像陣列能夠在VGA中以高達(dá)每秒30幀(fps)的速度運(yùn)行。 OV7670包括

圖像傳感器陣列(約656 x 488像素)

● 時(shí)序發(fā)生器

模擬信號(hào)處理器

● A / D轉(zhuǎn)換器

● 測(cè)試模式生成器

數(shù)字信號(hào)處理器(DSP

● 圖像縮放器

● 數(shù)字視頻端口

LED和頻閃閃光控制輸出

OV7670圖像傳感器使用串行攝像機(jī)控制總線協(xié)議(SCCB)進(jìn)行控制,SCCB是I2C協(xié)議的一種(SIOC、SIOD),最大時(shí)鐘頻率為400KHz。

相機(jī)協(xié)議帶有握手信號(hào),例如:

● VSYNC:垂直同步輸出 - 幀期間低電平

● HREF:水平參考 - 行的有效像素期間為高電平

● PCLK:像素時(shí)鐘輸出 - 自由運(yùn)行時(shí)鐘。數(shù)據(jù)在上升沿有效

除此之外,它還有幾個(gè)信號(hào),如

● D0-D7:8位YUV / RGB視頻分量數(shù)字輸出

● PWDN:掉電模式選擇 - 正常模式和掉電模式

● XCLK:系統(tǒng)時(shí)鐘輸入

● Reset:復(fù)位信號(hào)

OV7670采用24MHz振蕩器提供時(shí)鐘。這使得像素時(shí)鐘(PCLK)輸出為24MHz。 FIFO提供3Mbps的視頻幀緩沖存儲(chǔ)器。測(cè)試圖案生成器具有8條彩條圖案、淡灰色條紋圖案?,F(xiàn)在讓我們開始編程Arduino UNO以測(cè)試相機(jī)模塊OV7670,并使用串行端口讀取器抓取幀。

電路原理

編程Arduino UNO開發(fā)板

首先包含OV7670所需的庫(kù)。由于OV7670使用的是I2C接口,因此需要包含《util / twi.h》庫(kù)。該項(xiàng)目中使用的庫(kù)是ArduinoIDE的內(nèi)置庫(kù)。我們只需要包含庫(kù)來(lái)完成工作。

在此之后,需要針對(duì)OV7670修改寄存器。該程序分成幾個(gè)部分進(jìn)行講解,以便能夠更好地理解。

Setup()包括圖像捕獲所需的所有初始設(shè)置。第一個(gè)函數(shù)是arduinoUnoInut(),它用于初始化Arduino Uno。首先它會(huì)禁用所有全局中斷并進(jìn)行設(shè)置通信接口配置,例如PWM時(shí)鐘、中斷引腳選擇、預(yù)分頻器選擇添加奇偶校驗(yàn)和停止位。

?arduinoUnoInut();

配置Arduino后,必須配置相機(jī)。要初始化相機(jī),我們只能選擇更改寄存器值。寄存器值需要從默認(rèn)值更改為自定義。還要根據(jù)我們使用的微控制器頻率添加所需的延遲時(shí)間。因?yàn)?,低速微控制器具有較少的處理時(shí)間,以及捕獲幀之間更多的延遲。

void camInit(void){

writeReg(0x12, 0x80);

_delay_ms(100);

wrSensorRegs8_8(ov7670_default_regs);

writeReg(REG_COM10, 32);//PCLK does not toggle on HBLANK.

}

相機(jī)設(shè)置為拍攝QVGA圖像,因此需要選擇分辨率。以下函數(shù)用于配置寄存器以獲取QVGA圖像。

setResolution();

在本文中,圖像以單色拍攝,因此寄存器值設(shè)置為輸出單色圖像。該函數(shù)設(shè)置寄存器列表中的寄存器值,該寄存器列表在程序中預(yù)定義。

setColor();

以下函數(shù)用于寫入寄存器,將十六進(jìn)制值寫入寄存器。如果你得到了擾亂的圖像,那么試著改變第二個(gè)參數(shù),即10到9/11/12。但大多數(shù)時(shí)候這個(gè)值工作正常,所以不需要改變它。

writeReg(0x11, 10);

以下函數(shù)用于設(shè)置圖像分辨率大小。在這個(gè)項(xiàng)目中,我們拍攝的照片尺寸為320 x 240像素。

captureImg(320, 240);

除此之外,代碼還將I2C配置分為幾個(gè)部分。只是為了從攝像機(jī)獲取數(shù)據(jù),I2C配置有啟動(dòng)、讀取、寫入、設(shè)置地址等函數(shù),這些函數(shù)在使用I2C協(xié)議時(shí)非常重要。

如何使用串行端口讀取器讀取圖像

串行端口讀取器是一個(gè)簡(jiǎn)單的GUI。該工具將捕獲base64編碼并對(duì)其進(jìn)行解碼以形成圖像。只需按照以下簡(jiǎn)單步驟即可使用串行端口讀取器

第1步:將Arduino開發(fā)板連接到PC的任何USB端口

第2步:?jiǎn)螕簟癈heck”,找到您的Arduino COM端口

第3步:最后點(diǎn)擊“Start”按鈕開始連續(xù)讀取圖像。

第4步:只需點(diǎn)擊“Save Picture”即可保存這些圖片。

以下是從OV7670拍攝的圖像示例

使用OV7670時(shí)的注意事項(xiàng)

● 盡量確保使用的導(dǎo)線或跳線越短越好

● 避免與Arduino或OV7670上的任何引腳接觸不良

● 連接時(shí)要小心,因?yàn)榇罅康牟季€會(huì)導(dǎo)致短路

● 如果UNO向GPIO提供5V輸出,請(qǐng)使用電平轉(zhuǎn)換器。

● 使用3.3V作為OV7670的輸入,超過(guò)此電壓可能會(huì)損壞OV7670模塊。

本文主要是為了簡(jiǎn)單介紹如何基于Arduino使用相機(jī)模塊。由于Arduino的內(nèi)存較小,因此處理可能不如預(yù)期。您可以使用具有更多內(nèi)存的不同控制器進(jìn)行處理。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16423

    瀏覽量

    178878
  • 數(shù)碼相機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    441

    瀏覽量

    38425
  • OV7670
    +關(guān)注

    關(guān)注

    5

    文章

    59

    瀏覽量

    27458
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    索尼ILX-LR1相機(jī)在無(wú)人機(jī)航測(cè)有哪些優(yōu)秀的表現(xiàn)?

    索尼ILX-LR1相機(jī)在無(wú)人機(jī)航測(cè)中展現(xiàn)出了卓越的性能,其優(yōu)秀表現(xiàn)主要體現(xiàn)在以下幾個(gè)方面: 一、精準(zhǔn)性 高分辨率成像:凱茉銳電子ILX-LR1相機(jī)擁有約6100萬(wàn)有效像素的全畫幅背照式Exmor R
    的頭像 發(fā)表于 12-18 16:46 ?182次閱讀

    Arduino采集雷達(dá)模塊數(shù)據(jù)與串口繪圖

    Arduino采集雷達(dá)模塊數(shù)據(jù)與串口繪圖
    的頭像 發(fā)表于 12-14 11:44 ?276次閱讀
    <b class='flag-5'>Arduino</b>采集雷達(dá)<b class='flag-5'>模塊</b>數(shù)據(jù)與串口繪圖

    OV426相機(jī)橋接處理器規(guī)格書

    最新OV426漢譯版本,供大家參考。OV426 是 OV426 醫(yī)療應(yīng)用的單芯片解決方案。當(dāng) OV426 與
    發(fā)表于 10-09 14:08 ?6次下載

    OV7670攝像頭使用串口發(fā)送數(shù)據(jù)到另一個(gè)板子上的lcd,出現(xiàn)花屏

    測(cè)試色帶是正常的平整的,如圖所示 攝像頭端 void ov7670()//單片機(jī)讀取OV7670的圖片像素并發(fā)送到TFT屏幕上 { uint8_t sendData[5]; // 假設(shè)數(shù)組長(zhǎng)度為5
    發(fā)表于 09-12 23:32

    請(qǐng)問(wèn)A7670E通信芯片是否支持VAD檢測(cè)?

    A7670E 芯片可以實(shí)現(xiàn)物聯(lián)網(wǎng)接打電話,類似ESP32-S3-A7670E-4G這個(gè)方案https://www.waveshare.net/wiki/ESP32-S3-A7670E-
    發(fā)表于 07-23 08:01

    SN65LVDS315相機(jī)并行RGB到MIPI CSI-1串行轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《SN65LVDS315相機(jī)并行RGB到MIPI CSI-1串行轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-08 14:31 ?2次下載
    SN65LVDS315<b class='flag-5'>相機(jī)</b>并行RGB到MIPI CSI-1串行轉(zhuǎn)換器數(shù)據(jù)表

    如何將連接到FPGA的攝像頭數(shù)據(jù)發(fā)送到主機(jī)PC?

    已閱讀了 AN75779,并能夠驗(yàn)證(工作): 攝像頭 (OV7670) ---> FX3 ---> USB 主機(jī) (PC) 對(duì)于上述應(yīng)用,需要對(duì)固件和 GPIF 做哪些修改
    發(fā)表于 07-05 07:31

    UPS系統(tǒng)設(shè)計(jì)方案解讀

    UPS的應(yīng)用場(chǎng)景日趨多樣化,每個(gè)場(chǎng)景都有其獨(dú)特的需求,對(duì)應(yīng)不同的方案。UPS系統(tǒng)方案指南繼續(xù)上新,本文將聚焦UPS設(shè)計(jì)方案展開講述。
    的頭像 發(fā)表于 06-26 10:06 ?880次閱讀
    UPS系統(tǒng)<b class='flag-5'>設(shè)計(jì)方案</b>解讀

    STM32F407如何能直接出42MHz的方波?

    有一個(gè)OV7670不帶fifo,所以需要輸出一個(gè)差不多40MHz的方波信號(hào)作為時(shí)鐘源: 1、本來(lái)想的是用STM32F407的MCO1輸出,但是發(fā)現(xiàn),MCO1能夠輸出的方波信號(hào)在較高頻率時(shí)會(huì)變成正弦波
    發(fā)表于 05-30 07:31

    UVC相機(jī)識(shí)別不到的原因?

    我做了兩版硬件,一版可以識(shí)別到fx3相機(jī),另一版找不到。 但是兩版都能測(cè)試USBBulkSourceSink.img,并且速率都在4Gbps以上。 有區(qū)別的是不能識(shí)別fx3相機(jī)的版本用的是52m的參考時(shí)鐘, 請(qǐng)問(wèn)下可能的原因在哪里?
    發(fā)表于 05-29 08:16

    攝像頭配AL422B和直接DCMI連ARM的區(qū)別是什么?

    大家好,我是ARM的新手。我們計(jì)劃用STM32做二維碼的圖像識(shí)別。 ?目前計(jì)劃用OV7670攝像頭 + STM32F2 + 8Mbit SRAM。 ?但看到很多開發(fā)板上配置的都是
    發(fā)表于 05-17 06:51

    為什么Stm32F103驅(qū)動(dòng)ov7670有嚴(yán)重的分屏現(xiàn)象?

    為什么Stm32F103驅(qū)動(dòng)ov7670有嚴(yán)重的分屏現(xiàn)象。
    發(fā)表于 04-07 07:40

    低功耗、底噪度模擬相機(jī)方案和DATASHEET

    XS5018A 是一款針對(duì)CMOS 圖像傳感器的高性價(jià)比的圖像信號(hào)處理芯片,為ISP+TX 單芯片解決方案產(chǎn)品,內(nèi)部除集成 CPU 外,還包括 SPI,UART,I2C,GPIO 等豐富的外設(shè);集成
    發(fā)表于 03-29 14:12

    尼康Z9相機(jī)與鏡頭至國(guó)際空間站,助宇航員捕捉高質(zhì)影像

    自2017年起就在國(guó)際空間站上服役的尼康D5相機(jī)將由Z 9接任,這意味著自阿波羅15號(hào)任務(wù)以來(lái),已有超過(guò)50年的時(shí)間里尼康相機(jī)和鏡頭一直為NASA的太空探索活動(dòng)提供支持。
    的頭像 發(fā)表于 03-01 14:24 ?927次閱讀

    【開源項(xiàng)目】自制一個(gè)創(chuàng)客專屬的無(wú)反相機(jī)

    OV2640/OV3660/OV5640相機(jī)(最好是稍微長(zhǎng)一點(diǎn)的FPC) M12變焦鏡頭 四個(gè)12毫米M2平頭螺絲 小型相機(jī)三腳架 什么是
    發(fā)表于 02-29 15:50