0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino的OV7670相机模块设计方案

西西 来源:一板网 作者:风筝 2020-10-30 15:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在电子行业中,相机一直占据着主导地位,因为它用途广泛,如访客监控系统、救援系统、考勤系统等。现今,我们使用的相机非常智能,并具有早期相机中不存在的许多功能。现今的数码相机不仅捕捉图像,还能捕捉高清晰度画面并分析他们看到的内容。它广泛用于机器人人工智能机器学习等。捕获的帧使用人工智能和机器学习进行处理,然后用于许多应用,如车牌检测、物体检测、运动检测、面部识别等。

在本篇文章中,我们将使用最广泛使用的相机模块OV7670与Arduino UNO进行连接。相机模块OV7670也可以Arduino Mega开发板连接,具有相同的引脚配置、代码和步骤。相机模块很难连接,因为它需要大量的引脚和杂乱的布线。当使用相机模块时,走线变得非常重要,因为走线方式的选择和走线的长度会显着影响图像质量并且会带来噪声。

OV7670相机模块工作在3.3V,因此必须要注意,Arduino在其输出GPIO引脚上提供5V输出。 OV7670是一款FIFO相机。但在本文中,我们将在没有使用FIFO的情况下抓取图片。本问将提供简单的步骤和简化的编程,以便将OV7670与Arduino UNO进行连接。

需要的组件

● Arduino UNO开发

● OV7670相机模块

电阻(10k和4.7k)

● 跳线

有关相机模块OV7670的注意事项

OV7670相机模块是一种FIFO相机模块,可从不同制造商处获得,具有不同的引脚配置。 OV7670提供各种格式的全帧窗口8位图像。图像阵列能够在VGA中以高达每秒30帧(fps)的速度运行。 OV7670包括

图像传感器阵列(约656 x 488像素)

● 时序发生器

模拟信号处理器

● A / D转换器

● 测试模式生成器

数字信号处理器(DSP

● 图像缩放器

● 数字视频端口

LED和频闪闪光控制输出

OV7670图像传感器使用串行摄像机控制总线协议(SCCB)进行控制,SCCB是I2C协议的一种(SIOC、SIOD),最大时钟频率为400KHz。

相机协议带有握手信号,例如:

● VSYNC:垂直同步输出 - 帧期间低电平

● HREF:水平参考 - 行的有效像素期间为高电平

● PCLK:像素时钟输出 - 自由运行时钟。数据在上升沿有效

除此之外,它还有几个信号,如

● D0-D7:8位YUV / RGB视频分量数字输出

● PWDN:掉电模式选择 - 正常模式和掉电模式

● XCLK:系统时钟输入

● Reset:复位信号

OV7670采用24MHz振荡器提供时钟。这使得像素时钟(PCLK)输出为24MHz。 FIFO提供3Mbps的视频帧缓冲存储器。测试图案生成器具有8条彩条图案、淡灰色条纹图案。现在让我们开始编程Arduino UNO以测试相机模块OV7670,并使用串行端口读取器抓取帧。

电路原理

编程Arduino UNO开发板

首先包含OV7670所需的库。由于OV7670使用的是I2C接口,因此需要包含《util / twi.h》库。该项目中使用的库是ArduinoIDE的内置库。我们只需要包含库来完成工作。

在此之后,需要针对OV7670修改寄存器。该程序分成几个部分进行讲解,以便能够更好地理解。

Setup()包括图像捕获所需的所有初始设置。第一个函数是arduinoUnoInut(),它用于初始化Arduino Uno。首先它会禁用所有全局中断并进行设置通信接口配置,例如PWM时钟、中断引脚选择、预分频器选择添加奇偶校验和停止位。

​arduinoUnoInut();

配置Arduino后,必须配置相机。要初始化相机,我们只能选择更改寄存器值。寄存器值需要从默认值更改为自定义。还要根据我们使用的微控制器频率添加所需的延迟时间。因为,低速微控制器具有较少的处理时间,以及捕获帧之间更多的延迟。

void camInit(void){

writeReg(0x12, 0x80);

_delay_ms(100);

wrSensorRegs8_8(ov7670_default_regs);

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

}

相机设置为拍摄QVGA图像,因此需要选择分辨率。以下函数用于配置寄存器以获取QVGA图像。

setResolution();

在本文中,图像以单色拍摄,因此寄存器值设置为输出单色图像。该函数设置寄存器列表中的寄存器值,该寄存器列表在程序中预定义。

setColor();

以下函数用于写入寄存器,将十六进制值写入寄存器。如果你得到了扰乱的图像,那么试着改变第二个参数,即10到9/11/12。但大多数时候这个值工作正常,所以不需要改变它。

writeReg(0x11, 10);

以下函数用于设置图像分辨率大小。在这个项目中,我们拍摄的照片尺寸为320 x 240像素。

captureImg(320, 240);

除此之外,代码还将I2C配置分为几个部分。只是为了从摄像机获取数据,I2C配置有启动、读取、写入、设置地址等函数,这些函数在使用I2C协议时非常重要。

如何使用串行端口读取器读取图像

串行端口读取器是一个简单的GUI。该工具将捕获base64编码并对其进行解码以形成图像。只需按照以下简单步骤即可使用串行端口读取器

第1步:将Arduino开发板连接到PC的任何USB端口

第2步:单击“Check”,找到您的Arduino COM端口

第3步:最后点击“Start”按钮开始连续读取图像。

第4步:只需点击“Save Picture”即可保存这些图片。

以下是从OV7670拍摄的图像示例

使用OV7670时的注意事项

● 尽量确保使用的导线或跳线越短越好

● 避免与Arduino或OV7670上的任何引脚接触不良

● 连接时要小心,因为大量的布线会导致短路

● 如果UNO向GPIO提供5V输出,请使用电平转换器。

● 使用3.3V作为OV7670的输入,超过此电压可能会损坏OV7670模块。

本文主要是为了简单介绍如何基于Arduino使用相机模块。由于Arduino的内存较小,因此处理可能不如预期。您可以使用具有更多内存的不同控制器进行处理。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17915

    浏览量

    195818
  • 数码相机
    +关注

    关注

    2

    文章

    445

    浏览量

    40594
  • OV7670
    +关注

    关注

    5

    文章

    59

    浏览量

    28327
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索Alvium 1800 C-2050c:嵌入式视觉的高性能相机模块

    者提供了强大的视觉解决方案。今天,我们就来深入了解一下这款相机模块。 文件下载: 14868.pdf 产品概述 Alvium 1800 C-2050c采用了IMX183 CMOS传感器,搭配
    的头像 发表于 05-10 11:40 387次阅读

    探索Alvium 1800 C-2460m:高性能嵌入式视觉相机模块

    Alvium 1800 C MIPI CSI - 2相机系列。该系列为嵌入式系统开发者提供了访问索尼高性能图像传感器的途径,这些传感器在机器视觉行业广
    的头像 发表于 05-10 11:05 370次阅读

    Allied Vision Alvium 1800 C-240c:嵌入式视觉的高性能相机模块

    Allied Vision Alvium 1800 C-240c:嵌入式视觉的高性能相机模块 在嵌入式视觉领域,相机模块的性能至关重要。Allied Vision的Alvium 180
    的头像 发表于 05-10 10:15 363次阅读

    探索Alvium 1500 C-500m裸板相机:嵌入式视觉的强大解决方案

    相机,看看它为嵌入式视觉带来了哪些革新。 文件下载: 12888.pdf 产品概述 Alvium 1500 C-500m是一款革命性的MIPI CSI - 2相机模块,专为嵌入式视觉应用进行了优化。它
    的头像 发表于 05-09 15:40 108次阅读

    Alvium 1800 C-319c:嵌入式视觉的高性能相机模块

    Alvium 1800 C-319c:嵌入式视觉的高性能相机模块 在嵌入式视觉领域,高性能相机模块的需求日益增长。Alvium 1800 C-319c
    的头像 发表于 05-09 15:30 94次阅读

    探索Alvium 1800 C-319m:嵌入式视觉的高性能相机模块

    传感器,搭配ALVIUM图像处理技术和MIPI CSI - 2接口,为嵌入式系统开发者提供了强大的视觉解决方案。该系列相机模块属于Alvium 1800 C系列,是面向嵌入式视
    的头像 发表于 05-09 15:15 116次阅读

    求大佬指导。如何将rk3562模拟成虚拟摄像头,被电脑识别成usb,进行视频传输

    ov13850相机连接rk3562的csi接口,然后把3562和电脑通过usb连接,将3562模拟成摄像头,电脑能够识别后,进行图像传输,这一环节该怎么实现啊
    发表于 04-07 23:11

    深入剖析MAXQ7670A微控制器:功能、特性与应用

    : MAXQ7670AATL/V+.pdf 二、基本概述 2.1 产品定位 MAXQ7670A是一款高度集成的解决方案,主要用于测量多个模拟信号,并将
    的头像 发表于 04-04 10:05 300次阅读

    250kW全SiC模块四线制工商业储能变流器设计方案

    250kW全SiC模块四线制工商业储能变流器设计方案 倾佳电子力推BASiC基本半导体SiC碳化硅MOSFET单管,SiC碳化硅MOSFET功率模块,SiC
    的头像 发表于 03-29 09:22 388次阅读
    250kW全SiC<b class='flag-5'>模块</b>三<b class='flag-5'>相</b>四线制工商业储能变流器<b class='flag-5'>设计方案</b>

    电磁频谱监测平台系统设计方案

    电磁频谱监测平台系统设计方案
    的头像 发表于 10-23 16:03 881次阅读
    电磁频谱监测平台系统<b class='flag-5'>设计方案</b>

    电磁频谱管理系统设计方案

    电磁频谱管理系统设计方案
    的头像 发表于 10-20 14:02 1388次阅读
    电磁频谱管理系统<b class='flag-5'>设计方案</b>

    电磁频谱监测系统软件设计方案

    电磁频谱监测系统平台设计方案
    的头像 发表于 09-28 16:03 595次阅读
    电磁频谱监测系统软件<b class='flag-5'>设计方案</b>

    电磁频谱监测系统设计方案

    电磁频谱监测系统平台设计方案
    的头像 发表于 09-28 15:58 1101次阅读
    电磁频谱监测系统<b class='flag-5'>设计方案</b>

    摄像头模组开发,感光芯片硬触发拍照方案问题 OV系列 和 IMX系列

    想使用Image Sensor芯片 OV 或者 IMX系列(MIPI CSI 协议输出数据流)开发一款相机模组,能够支持外部硬件触发拍照,求一个大概的思路方案(XVS XHS) (VSYNAC)。
    发表于 08-07 11:49

    步进电机驱动电路的设计

    介绍了BYG通用系列二步进电机最常采用的的单极性和双极性2种驱动电路的设计方案,从原理上体现了一步进电机的控制方法,增加了步进电机驱动电路设计的灵活性。二步进电机的单极性和双极性
    发表于 05-28 15:38