- Komponenter kreves
- Ting å huske på kameramodul OV7670
- Kretsdiagram
- Programmering Arduino UNO
- Hvordan bruke Serial Port Reader for lesing av bilder
- Nedenfor er eksempler på bilder tatt fra OV7670
- Forholdsregler ved bruk av OV7670
Kameraer har alltid dominert elektronikkindustrien, da det har mange applikasjoner som besøkende overvåkingssystem, overvåkingssystem, oppmøte system osv. Kameraer som vi bruker i dag er smarte og har mange funksjoner som ikke var tilstede i tidligere kameraer. Mens dagens digitale kameraer ikke bare tar bilder, men også fanger beskrivelser på scenen på høyt nivå og analyserer det de ser. Den brukes mye i robotikk, kunstig intelligens, maskinlæring osv. De fangede rammene blir behandlet ved hjelp av kunstig intelligens og maskinlæring, og brukes deretter i mange applikasjoner som nummerplatedeteksjon, gjenkjenning av gjenstander, bevegelsesdeteksjon, ansiktsgjenkjenning etc.
I denne opplæringen vil vi grensesnitt mest brukte kameramodul OV7670 med Arduino UNO. Kameramodulen OV7670 kan kobles til Arduino Mega med samme pin-konfigurasjon, kode og trinn. Kameramodulen er vanskelig å grensesnitt fordi den har et stort antall pinner og rotete ledninger å utføre. Ledningen blir også veldig viktig når du bruker kameramoduler, da valget av ledning og ledningens lengde kan påvirke bildekvaliteten betydelig og kan gi støy.
Vi har allerede gjort mange prosjekter på kameraer med forskjellige typer mikrokontrollere og IoT-enheter som:
- Visitor Monitoring System med Raspberry Pi og Pi Camera
- IOT-basert Raspberry Pi Home Security System med e-postvarsling
- Raspberry Pi overvåkingskamera med bevegelsesopptak
Den Kamera OV7670 fungerer på 3.3V, så det blir svært viktig å unngå Arduino som gir 5V utgang på sin produksjon GPIO pins. OV7670 er et FIFO-kamera. Men i denne opplæringen vil bildet eller rammene bli tatt uten FIFO. Denne opplæringen vil ha enkle trinn og forenklet programmering for å grensesnitt OV7670 med Arduino UNO.
Komponenter kreves
- Arduino UNO
- OV7670 kameramodul
- Motstander (10k, 4,7k)
- Gensere
Programvare nødvendig:
- Arduino IDE
- Seriell portleser (for å analysere utdata)
Ting å huske på kameramodul OV7670
OV7670 kameramodul er en FIFO kameramodul tilgjengelig fra forskjellige produsenter med forskjellige pin-konfigurasjoner. TheOV7670 gir 8-biters bilder i fullformat i et bredt spekter av formater. Bildearrayen kan fungere med opptil 30 bilder per sekund (fps) i VGA. OV7670 inkluderer
- Image Sensor Array (med omtrent 656 x 488 piksler)
- Timing Generator
- Analog signalprosessor
- A / D-omformere
- Testmønstergenerator
- Digital signalprosessor (DSP)
- Image Scaler
- Digital videoport
- LED og Strobe Flash Control Output
OV7670-bildesensoren styres ved hjelp av Serial Camera Control Bus (SCCB), som er et I2C-grensesnitt (SIOC, SIOD) med en maksimal klokkefrekvens på 400 KHz.
Kameraet leveres med håndtrykksignaler som:
- VSYNC: Vertikal synkroniseringsutgang - Lav under ramme
- HREF: Horisontal referanse - Høy under aktive piksler på rad
- PCLK: Pixel Clock Output - Gratis klokke. Data er gyldige på stigende kant
I tillegg til dette har den flere flere signaler som
- D0-D7: 8-biters YUV / RGB videokomponent digital utgang
- PWDN: Valg av avslåingsmodus - Normal modus og Slå av modus
- XCLK: System Clock Input
- Tilbakestill: Tilbakestill signal
OV7670 er klokket fra en 24MHz oscillator. Dette gir en Pixel Clock (PCLK) -utgang på 24MHz. FIFO gir 3 Mbps med videorammebufferminne. Testmønstergeneratoren har 8-stolpers fargelinjemønster, blek-til-grå fargelinjemønster. La oss nå begynne å programmere Arduino UNO for å teste kamera OV7670 og gripe rammer ved hjelp av seriell portleser.
Kretsdiagram
Programmering Arduino UNO
Programmeringen starter med å inkludere det nødvendige biblioteket som er nødvendig for OV7670. Siden OV7670 kjører på I2C-grensesnitt, inkluderer denEtter dette må registrene endres for OV7670. Programmet er delt inn i små funksjoner for bedre forståelse.
Den Oppsett () omfatter alle de innledende oppsett som kreves for bare å ta bilder. Den første funksjonen er arduinoUnoInut () som brukes til å initialisere arduino uno. I utgangspunktet deaktiverer den alle globale avbrudd og setter kommunikasjonsgrensesnittkonfigurasjonene som PWM-klokke, valg av avbruddspinner, presclaer-valg, legge til paritet og stoppbiter.
ArduinoUnoInut ();
Etter at du har konfigurert Arduino, må kameraet konfigureres. For å initialisere kameraet har vi bare muligheter for å endre registerverdiene. Registerverdiene må endres fra standard til tilpasset. Legg også til nødvendig forsinkelse avhengig av mikrokontrollerfrekvensen vi bruker. Som sakte mikrokontrollere har mindre behandlingstid og gir mer forsinkelse mellom å fange rammer.
ugyldig camInit (ugyldig) { writeReg (0x12, 0x80); _forsink_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK slår ikke på HBLANK. }
Kameraet er satt til å ta et QVGA-bilde, slik at oppløsningen må velges. Funksjonen konfigurerer registeret til å ta et QVGA-bilde.
setResolution ();
I denne opplæringen er bildene tatt i svart-hvitt, så registerverdien er satt til å sende ut et monokromt bilde. Funksjonen angir registerverdiene fra registerlisten som er forhåndsdefinert i programmet.
setColor ();
Funksjonen nedenfor er skrive for å registrere funksjon som skriver den hexverdien som skal registreres. Hvis du får kryptert bilder, så prøv å endre den andre termen, dvs. 10 til 9/11/12. Men mesteparten av tiden fungerer denne verdien bra, så du trenger ikke å endre den.
writeReg (0x11, 10);
Denne funksjonen brukes til å få oppløsningsstørrelsen. I dette prosjektet tar vi bilder i størrelsen 320 x 240 piksler.
captureImg (320, 240);
Annet enn dette har koden også I2C-konfigurasjonene delt inn i flere deler. Bare for å hente dataene fra kameraet har I2C-konfigurasjonene Start, Les, Skriv, Angi adresse-funksjon som er viktig når du bruker I2C-protokollen.
Du finner den komplette koden med en demonstrasjonsvideo på slutten av denne veiledningen. Bare last opp koden og åpne Serial Port Reader og ta tak i rammene.
Hvordan bruke Serial Port Reader for lesing av bilder
Serial Port Reader er en enkel GUI, last den ned herfra. Dette fanger base64-koden og dekoder den for å danne et bilde. Bare følg disse enkle trinnene for å bruke Serial Port ReaderTrinn 1: Koble Arduino til hvilken som helst USB-port på PCen
Trinn 2: Klikk på "Kontroller" for å finne din Arduino COM-port
Trinn 3: Klikk til slutt på "Start" -knappen for å begynne å lese seriell.
Trinn 4: Man kan også lagre disse bildene ved å klikke på “Lagre bilde”.
Nedenfor er eksempler på bilder tatt fra OV7670
Forholdsregler ved bruk av OV7670
- Prøv å bruke ledninger eller gensere så korte som mulig
- Unngå løs kontakt med pinner på Arduino eller OV7670
- Vær forsiktig med å koble til, da et stort antall ledninger kan føre til kortslutning
- Hvis UNO gir 5V utgang til GPIO, bruk deretter Level Shifter.
- Bruk 3.3V-inngang for OV7670 som overskrider spenning enn dette kan skade OV7670-modulen.
Dette prosjektet er laget for å gi oversikt over bruk av en kameramodul med Arduino. Siden Arduino har mindre minne, er behandlingen kanskje ikke som forventet. Du kan bruke forskjellige kontrollere som har mer minne for behandling.