- Komponente potrebne
- Stvari koje treba zapamtiti o modulu kamere OV7670
- Kružni dijagram
- Programiranje Arduino UNO
- Kako koristiti čitač serijskih priključaka za čitanje slika
- Ispod su uzorci slika preuzetih s OV7670
- Mjere opreza pri uporabi OV7670
Kamere su uvijek dominirale u elektroničkoj industriji jer ima puno aplikacija kao što su sustav za nadzor posjetitelja, nadzorni sustav, sustav pohađanja itd. Kamere koje danas koristimo pametne su i imaju puno karakteristika koje nisu bile prisutne u ranijim kamerama. Iako današnji digitalni fotoaparati ne samo da snimaju slike, već snimaju i prizore na visokoj razini i analiziraju ono što vide. Intenzivno se koristi u robotici, umjetnoj inteligenciji, strojnom učenju itd. Snimljeni okviri obrađuju se pomoću umjetne inteligencije i strojnog učenja, a zatim se koriste u mnogim aplikacijama poput otkrivanja pločice s brojevima, otkrivanja predmeta, detekcije pokreta, prepoznavanja lica itd.
U ovom ćemo uputstvu povezati najčešće korišteni modul kamere OV7670 s Arduino UNO. Modul kamere OV7670 može se povezati s Arduino Mega s istom konfiguracijom pina, kodom i koracima. Modul kamere teško je povezati jer ima velik broj pinova i prepletenih ožičenja za izvođenje. Također žica postaje vrlo važna kada se koriste moduli kamere, jer izbor žice i duljina žice mogu značajno utjecati na kvalitetu slike i mogu donijeti buku.
Već smo napravili dovoljno projekata na fotoaparatima s različitim vrstama mikrokontrolera i IoT uređaja kao što su:
- Sustav za nadzor posjetitelja s Raspberry Pi i Pi kamerom
- Sustav kućne sigurnosti Raspberry Pi zasnovan na IOT-u s upozorenjem e-pošte
- Nadzorna kamera Raspberry Pi s hvatanjem pokreta
Kamere OV7670 radovi na 3.3V, tako da postaje vrlo važno kako bi se izbjeglo Arduino koji daje 5V izlaz na svoju proizvodnju GPIO igle. OV7670 je FIFO kamera. Ali u ovom vodiču slika ili okviri će se zgrabiti bez FIFO-a. Ovaj će vodič imati jednostavne korake i pojednostavljeno programiranje za povezivanje OV7670 s Arduino UNO.
Komponente potrebne
- Arduino UNO
- Modul kamere OV7670
- Otpornici (10k, 4,7k)
- Skakači
Potreban softver:
- Arduino IDE
- Čitač serijskog priključka (za analizu izlazne slike)
Stvari koje treba zapamtiti o modulu kamere OV7670
OV7670 modul kamere je FIFO modul kamere dostupan od različitih proizvođača s različitim konfiguracijama pinova. TheOV7670 pruža 8-bitne slike s punim okvirom, s prozorima u širokom rasponu formata. Niz slika može raditi do 30 sličica u sekundi (fps) u VGA. OV7670 uključuje
- Niz senzora slike (od oko 656 x 488 piksela)
- Generator vremena
- Analogni procesor signala
- A / D pretvarači
- Generator testnih uzoraka
- Digitalni procesor signala (DSP)
- Skeler za slike
- Ulaz za digitalni video
- Izlaz za upravljanje LED i Strobe bljeskalicom
Senzorom slike OV7670 upravlja se pomoću serijske upravljačke sabirnice kamere (SCCB) koja je I2C sučelje (SIOC, SIOD) s maksimalnom frekvencijom takta od 400KHz.


Kamera dolazi sa signalima rukovanja poput:
- VSYNC: Vertikalni izlaz za sinkronizaciju - nizak tijekom kadra
- HREF: vodoravna referenca - visoka tijekom aktivnih piksela reda
- PCLK: Izlaz sata piksela - Slobodni sat. Podaci vrijede na rastućem rubu
Uz ovo, ima još nekoliko signala kao što su
- D0-D7: 8-bitni YUV / RGB video komponentni digitalni izlaz
- PWDN: Odabir načina isključivanja - normalni način i način isključivanja
- XCLK: Unos sistemskog sata
- Resetiranje: resetiranje signala
OV7670 radi na taktu oscilatora od 24 MHz. To daje izlazni takt piksela (PCLK) od 24MHz. FIFO pruža 3Mbps memorije međuspremnika video okvira. Generator testnih uzoraka sadrži uzorak traka u boji od 8 traka, šareni trak u blijedo-sivoj boji. Počnimo sada programirati Arduino UNO za testiranje kamere OV7670 i hvatanje okvira pomoću čitača serijskih priključaka.
Kružni dijagram


Programiranje Arduino UNO
Programiranje započinje uključivanjem potrebne biblioteke potrebne za OV7670. Budući da OV7670 radi na I2C sučelju, to uključujeNakon toga, registre treba izmijeniti za OV7670. Program je podijeljen na male funkcije radi boljeg razumijevanja.
Postavljanje () obuhvaća sve početne postavke potrebne samo slika hvatanje. Prva funkcija je arduinoUnoInut () koja se koristi za inicijalizaciju arduino uno. U početku onemogućava sve globalne prekide i postavlja konfiguracije komunikacijskog sučelja kao što su PWM sat, odabir prekida prekida, odabir presclaer-a, dodavanje pariteta i zaustavnih bitova.
ArduinoUnoInut ();
Nakon konfiguriranja Arduina, kamera se mora konfigurirati. Da bismo inicijalizirali kameru, imamo samo mogućnosti za promjenu vrijednosti registra. Vrijednosti registra treba promijeniti iz zadanih u prilagođene. Također dodajte potrebno kašnjenje ovisno o frekvenciji mikrokontrolera koju koristimo. Budući da spori mikrokontroleri imaju manje vremena obrade, što dodaje veće kašnjenje između hvatanja okvira.
void camInit (void) { writeReg (0x12, 0x80); _zakašnjenje_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK se ne uključuje na HBLANK. }
Kamera je postavljena za snimanje QVGA slike pa treba odabrati rezoluciju. Funkcija konfigurira registar za snimanje QVGA slike.
setResolution ();
U ovom vodiču slike se snimaju u jednobojnoj, pa je vrijednost registra postavljena tako da daje jednobojnu sliku. Funkcija postavlja vrijednosti registra s popisa registara koji je unaprijed definiran u programu.
setColor ();
Sljedeća funkcija je funkcija upisivanja u registar koja upisuje hex vrijednost za registraciju. Ako dobijete kodirane slike, pokušajte promijeniti drugi termin, tj. 10 na 9/11/12. Ali većinu vremena ta vrijednost djeluje u redu pa je nije potrebno mijenjati.
writeReg (0x11, 10);
Ova se funkcija koristi za dobivanje veličine razlučivosti slike. U ovom projektu fotografiramo u veličini 320 x 240 piksela.
captureImg (320, 240);
Osim ovog, kod također ima I2C konfiguracije podijeljene u nekoliko dijelova. Samo za dobivanje podataka s kamere, I2C konfiguracije imaju funkciju Start, Read, Write, Set Address koje su važne pri korištenju I2C protokola.
Kompletni kod s demonstracijskim videozapisom možete pronaći na kraju ovog vodiča. Samo prenesite kod i otvorite čitač serijskih priključaka i uhvatite okvire.
Kako koristiti čitač serijskih priključaka za čitanje slika
Čitač serijskih priključaka jednostavan je GUI, preuzmite ga odavde. Ovo snima base64 kodiranje i dekodira ga tako da tvori sliku. Samo slijedite ove jednostavne korake za upotrebu čitača serijskih priključakaKorak 1: Spojite svoj Arduino na bilo koji USB priključak računala

Korak 2: Kliknite "Provjeri" da biste pronašli svoj Arduino COM priključak

Korak 3: Napokon kliknite gumb "Start" da biste započeli serijsko čitanje.

Korak 4: Ove slike možete spremiti i klikom na "Spremi sliku".
Ispod su uzorci slika preuzetih s OV7670



Mjere opreza pri uporabi OV7670
- Pokušajte koristiti žice ili kratkospojnike što je kraće moguće
- Izbjegavajte labavi kontakt bilo kakvih igla na Arduinu ili OV7670
- Pripazite na spajanje jer velik broj ožičenja može dovesti do kratkog spoja
- Ako UNO daje izlaz od 5 V na GPIO, upotrijebite Level Shifter.
- Koristite ulaz od 3,3 V za OV7670 jer prekoračenje napona može oštetiti modul OV7670.
Ovaj projekt stvoren je kako bi dao pregled korištenja modula kamere s Arduinom. Budući da Arduino ima manje memorije, obrada možda neće biti onakva kakva se očekivala. Možete koristiti različite kontrolere koji imaju više memorije za obradu.
