- Components necessaris
- Coses que cal recordar sobre el mòdul de càmera OV7670
- Esquema de connexions
- Programació Arduino UNO
- Com s'utilitza el lector de ports sèrie per llegir imatges
- A continuació es mostren imatges de mostra extretes de l’OV7670
- Precaucions en utilitzar OV7670
Les càmeres sempre han dominat la indústria electrònica, ja que té moltes aplicacions com ara el sistema de control de visitants, el sistema de vigilància, el sistema d’assistència, etc. Les càmeres que fem servir avui són intel·ligents i tenen moltes funcions que no estaven presents a les càmeres anteriors. Tot i que les càmeres digitals actuals no només capturen imatges, sinó que també capturen descripcions d’alt nivell de l’escena i analitzen el que veuen. S'utilitza àmpliament en robòtica, intel·ligència artificial, aprenentatge automàtic, etc. Els fotogrames capturats es processen utilitzant intel·ligència artificial i aprenentatge automàtic, i després s'utilitzen en moltes aplicacions com la detecció de plaques de números, detecció d'objectes, detecció de moviment, reconeixement facial, etc.
En aquest tutorial relacionarem el mòdul de càmera més utilitzat OV7670 amb Arduino UNO. El mòdul de càmera OV7670 es pot connectar amb Arduino Mega amb la mateixa configuració de pin, codi i passos. El mòdul de càmera és difícil d’interfície perquè té un gran nombre de pins i cablejat confús per dur a terme. A més, el cable es fa molt important quan s’utilitzen mòduls de càmera, ja que l’elecció del cable i la longitud del cable poden afectar significativament la qualitat de la imatge i poden provocar soroll.
Ja hem fet amplis projectes sobre càmeres amb diferents tipus de microcontroladors i dispositius IoT, com ara:
- Sistema de monitorització de visitants amb càmera Raspberry Pi i Pi
- Sistema de seguretat domèstic Raspberry Pi basat en IOT amb alerta per correu electrònic
- Càmera de vigilància Raspberry Pi amb captura de moviment
La càmera OV7670 funciona a 3,3 V, de manera que esdevé molt important evitar Arduino, que proporciona una sortida de 5 V als seus pins GPIO de sortida. L’OV7670 és una càmera FIFO. Però en aquest tutorial, la imatge o els marcs es capturaran sense FIFO. Aquest tutorial tindrà uns passos senzills i una programació simplificada per a la interfície OV7670 amb Arduino UNO.
Components necessaris
- Arduino UNO
- Mòdul de càmera OV7670
- Resistències (10k, 4.7k)
- Saltadors
Programari requerit:
- IDE Arduino
- Lector de ports sèrie (per analitzar la imatge de sortida)
Coses que cal recordar sobre el mòdul de càmera OV7670
OV7670 Camera Module és un mòdul de càmera FIFO disponible per a diferents fabricants amb diferents configuracions de pins. L’OV7670 proporciona imatges de 8 bits amb finestres de fotograma complet en una àmplia gamma de formats. La matriu d’imatges pot funcionar fins a 30 fotogrames per segon (fps) en VGA. El OV7670 inclou
- Arran del sensor d’imatge (d’uns 656 x 488 píxels)
- Generador de temps
- Processador de senyal analògic
- Convertidors A / D
- Generador de patrons de prova
- Processador de senyal digital (DSP)
- Escalador d’imatges
- Port de vídeo digital
- Sortida de control de flaix LED i estroboscòpic
El sensor d’imatge OV7670 es controla mitjançant un bus de control de càmera sèrie (SCCB), que és una interfície I2C (SIOC, SIOD) amb una freqüència de rellotge màxima de 400 KHz.


La càmera ve amb senyals d'aproximació de mans com:
- VSYNC: sortida de sincronització vertical : baixa durant el marc
- HREF: Referència horitzontal: alta durant els píxels actius de la fila
- PCLK: sortida de rellotge de píxels : rellotge de funcionament gratuït. Les dades són vàlides a l'alça ascendent
A més d'això, té diversos senyals més, com ara
- D0-D7: sortida digital de components de vídeo YUV / RGB de 8 bits
- PWDN: Selecció del mode d’ apagat: mode normal i mode d’ apagat
- XCLK: entrada de rellotge del sistema
- Restableix: restableix el senyal
L’OV7670 s’activa des d’un oscil·lador de 24 MHz. Això proporciona una sortida de rellotge de píxels (PCLK) de 24 MHz. El FIFO proporciona 3 Mbps de memòria intermèdia de memòria intermèdia. El generador de patrons de prova presenta un patró de barres de color de 8 barres, un patró de barres de color de fade-to-gray. Ara comencem a programar l’Arduino UNO per provar la càmera OV7670 i agafar fotogrames mitjançant un lector de ports sèrie.
Esquema de connexions


Programació Arduino UNO
La programació comença amb la inclusió de la biblioteca necessària necessària per a OV7670. Com que OV7670 funciona amb interfície I2C, inclouDesprés d'això, cal modificar els registres per a OV7670. El programa es divideix en petites funcions per a una millor comprensió.
La configuració () comprèn totes les configuracions inicials necessàries només per a la captura d'imatges. La primera funció és arduinoUnoInut () que s’utilitza per inicialitzar l’arduino uno. Inicialment, desactiva totes les interrupcions globals i estableix les configuracions de la interfície de comunicació, com ara el rellotge PWM, la selecció de pins d'interrupció, la selecció de presclaer, l'addició de bits de paritat i d'aturada.
ArduinoUnoInut ();
Després de configurar l'Arduino, cal configurar la càmera. Per inicialitzar la càmera, només tenim les opcions per canviar els valors del registre. Cal canviar els valors del registre del valor predeterminat al costum. Afegiu també el retard necessari en funció de la freqüència del microcontrolador que estem utilitzant. De la mateixa manera, els microcontroladors lents tenen menys temps de processament afegint més retard entre la captura de fotogrames.
void camInit (void) { writeReg (0x12, 0x80); _delay_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK no commuta a HBLANK. }
La càmera està configurada per fer una imatge QVGA, de manera que cal seleccionar la resolució. La funció configura el registre per prendre una imatge QVGA.
setResolution ();
En aquest tutorial, les imatges es prenen en monocrom, de manera que el valor del registre s'estableix per generar una imatge monocroma. La funció estableix els valors de registre de la llista de registres que està predefinida al programa.
setColor ();
La funció següent és la funció d'escriure per registrar que escriu el valor hexadecimal per registrar. Si obteniu les imatges remenades, proveu de canviar el segon terme, és a dir, del 10 al 9/11/12. Però la majoria de les vegades aquest valor funciona bé, de manera que no cal canviar-lo.
writeReg (0x11, 10);
Aquesta funció s'utilitza per obtenir la mida de la resolució de la imatge. En aquest projecte estem prenent fotografies amb una mida de 320 x 240 píxels.
captureImg (320, 240);
A part d'això, el codi també té les configuracions I2C dividides en diverses parts. Només per obtenir les dades de la càmera, les configuracions I2C tenen la funció Inici, Llegir, Escriure, Establir adreça que són importants quan s’utilitza el protocol I2C.
Podeu trobar el codi complet amb un vídeo de demostració al final d’aquest tutorial. Simplement pengeu el codi i obriu el lector de ports sèrie i agafeu els fotogrames.
Com s'utilitza el lector de ports sèrie per llegir imatges
Serial Port Reader és una interfície gràfica d’usuari senzilla, descarregueu-la des d’aquí. Això captura el codi base64 i el descodifica per formar una imatge. Seguiu aquests senzills passos per utilitzar el lector de ports sèriePas 1: connecteu el vostre Arduino a qualsevol port USB del vostre PC

Pas 2: feu clic a "Comprova" per trobar el vostre port COM Arduino

Pas 3: Finalment, feu clic al botó "Inici" per començar a llegir en sèrie.

Pas 4: També podeu desar aquestes imatges només fent clic a "Desa la imatge".
A continuació es mostren imatges de mostra extretes de l’OV7670



Precaucions en utilitzar OV7670
- Intenteu utilitzar cables o ponts el més curts possible
- Eviteu qualsevol contacte solt amb els pins d'Arduino o OV7670
- Aneu amb compte amb la connexió, ja que un gran nombre de cables poden provocar un curtcircuit
- Si l’ONU dóna sortida de 5V a GPIO, utilitzeu Level Shifter.
- Utilitzeu l'entrada de 3,3 V per a OV7670 ja que el voltatge superior a aquest pot danyar el mòdul OV7670.
Aquest projecte està creat per donar una visió general de l’ús d’un mòdul de càmera amb Arduino. Atès que Arduino té menys memòria, és possible que el processament no sigui l’esperat. Podeu utilitzar diferents controladors que tinguin més memòria per al processament.
