- Súčasti sú povinné
- Čo by ste si mali pamätať o kamerovom module OV7670
- Schéma zapojenia
- Programovanie Arduino UNO
- Ako používať čítačku sériového portu na čítanie obrázkov
- Ďalej sú uvedené ukážky obrázkov prevzatých z modelu OV7670
- Preventívne opatrenia pri používaní OV7670
Fotoaparáty vždy dominovali v elektronickom priemysle, pretože majú veľa aplikácií, ako je monitorovací systém pre návštevníkov, sledovací systém, dochádzkový systém atď. Fotoaparáty, ktoré dnes používame, sú inteligentné a majú veľa funkcií, ktoré v starších fotoaparátoch neboli. Zatiaľ čo dnešné digitálne fotoaparáty nielen snímajú obrázky, ale aj zachytávajú popisy scény na vysokej úrovni a analyzujú to, čo vidia. Široko sa používa v robotike, umelej inteligencii, strojovom učení atď. Zachytené rámy sa spracúvajú pomocou umelej inteligencie a strojového učenia a potom sa používajú v mnohých aplikáciách, ako je detekcia ŠPZ, detekcia objektov, detekcia pohybu, rozpoznávanie tváre atď.
V tomto návode prepojíme najpoužívanejší kamerový modul OV7670 s Arduino UNO. Kamerový modul OV7670 je možné prepojiť s rozhraním Arduino Mega s rovnakou konfiguráciou pinov, kódom a krokmi. Kamerový modul je ťažko prepojiteľný, pretože má veľké množstvo pinov a neusporiadané zapojenie. Pri použití kamerových modulov je vodič veľmi dôležitý, pretože výber vodiča a jeho dĺžka môžu významne ovplyvniť kvalitu obrazu a spôsobiť šum.
Na kamerách sme už vykonali dostatok projektov s rôznymi druhmi mikrokontrolérov a zariadení IoT, ako napríklad:
- Monitorovací systém pre návštevníkov s kamerou Raspberry Pi a Pi
- IOT založený domáci bezpečnostný systém Raspberry Pi s e-mailovým upozornením
- Dozorná kamera Raspberry Pi s technológiou Motion Capture
Camera OV7670 pracuje na 3,3 V, takže sa stáva veľmi dôležité, aby sa zabránilo Arduino, ktorý dáva 5V výstup na ich výstupe GPIO piny. OV7670 je fotoaparát FIFO. Ale v tomto tutoriáli budú obrázky alebo rámy zachytené bez FIFO. Tento tutoriál bude obsahovať jednoduché kroky a zjednodušené programovanie pre prepojenie OV7670 s Arduino UNO.
Súčasti sú povinné
- Arduino UNO
- Modul kamery OV7670
- Rezistory (10k, 4,7k)
- Skokani
Potrebný softvér:
- Arduino IDE
- Čítačka sériového portu (na analýzu výstupného obrazu)
Čo by ste si mali pamätať o kamerovom module OV7670
Kamerový modul OV7670 je kamerový modul FIFO dostupný od rôznych výrobcov s rôznymi konfiguráciami pinov. TheOV7670 poskytuje full frame, okenné 8-bitové obrázky v širokej škále formátov. Obrazové pole je schopné pracovať pri VGA až 30 snímok za sekundu (fps). OV7670 obsahuje
- Pole obrazového snímača (asi 656 x 488 pixelov)
- Generátor časovania
- Analógový signálny procesor
- A / D prevodníky
- Generátor testovacích vzorov
- Procesor digitálneho signálu (DSP)
- Škálovač obrázkov
- Port digitálneho videa
- LED a výstup ovládania blesku
Obrazový snímač OV7670 sa ovláda pomocou Serial Camera Control Bus (SCCB), čo je rozhranie I2C (SIOC, SIOD) s maximálnou frekvenciou hodín 400 kHz.
Fotoaparát je vybavený signálmi potriasania rukou, ako napríklad:
- VSYNC: Výstup vertikálnej synchronizácie - počas snímania nízky
- HREF: Horizontálna referencia - vysoká počas aktívnych pixelov radu
- PCLK: Pixel Clock Output - hodiny bežiace zadarmo. Údaje sú platné pri stúpajúcej hrane
Okrem toho má ešte niekoľko ďalších signálov ako napr
- D0-D7: 8-bitový YUV / RGB komponentný digitálny výstup videa
- PWDN: Výber režimu vypnutia - normálny režim a režim vypnutia
- XCLK: Vstup systémových hodín
- Reset: Reset signálu
OV7670 je taktovaný z 24MHz oscilátora. Takto je dosiahnutý výstup pixelových hodín (PCLK) 24 MHz. FIFO poskytuje 3 Mbps vyrovnávacej pamäte videozáznamu. Generátor testovacích vzorov je vybavený 8-pruhovým farebným pruhovým vzorom, farebným pruhom od fade-to-grey. Teraz začnime programovať Arduino UNO na testovanie kamery OV7670 a snímanie snímok pomocou čítačky sériového portu.
Schéma zapojenia
Programovanie Arduino UNO
Programovanie začína zahrnutím požadovanej knižnice potrebnej pre OV7670. Pretože OV7670 beží na I2C rozhraní, obsahuje ajPotom je potrebné registre upraviť pre OV7670. Program je pre lepšie pochopenie rozdelený na malé funkcie.
Setup () zahŕňa všetky počiatočné nastavovaných potrebné len pre snímanie obrazu. Prvá funkcia je arduinoUnoInut (), ktorá sa používa na inicializáciu arduino uno. Spočiatku zakáže všetky globálne prerušenia a nastaví konfigurácie komunikačného rozhrania, ako sú hodiny PWM, výber pinov prerušenia, výber predspínača, pridanie parity a stop bitov.
ArduinoUnoInut ();
Po nakonfigurovaní Arduina je potrebné nakonfigurovať kameru. Na inicializáciu fotoaparátu máme iba možnosti zmeniť hodnoty registra. Hodnoty registra je potrebné zmeniť z predvolených na vlastné. Pridajte tiež požadované oneskorenie v závislosti od frekvencie mikrokontroléra, ktorú používame. Pomalé mikrokontroléry majú kratší čas na spracovanie a zvyšujú tak oneskorenie medzi snímaním rámcov.
void camInit (void) { writeReg (0x12, 0x80); _delay_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK sa na HBLANK neprepína. }
Fotoaparát je nastavený na snímanie obrazu QVGA, takže je potrebné zvoliť rozlíšenie. Táto funkcia konfiguruje register na zhotovenie obrazu QVGA.
setResolution ();
V tomto návode sú obrázky nasnímané čiernobielo, takže hodnota registra je nastavená na výstup monochromatického obrázka. Funkcia nastavuje hodnoty registra zo zoznamu registrov, ktorý je preddefinovaný v programe.
setColor ();
Nasledujúca funkcia je funkcia zápisu do registra, ktorá zapíše hexadecimálnu hodnotu do registra. Ak získate kódované obrázky, skúste zmeniť druhé volebné obdobie, tj 10. až 11. september 2012. Väčšinou však táto hodnota funguje dobre, takže ju nie je potrebné meniť.
writeReg (0x11, 10);
Táto funkcia sa používa na získanie veľkosti rozlíšenia obrázka. V tomto projekte fotografujeme vo veľkosti 320 x 240 pixelov.
captureImg (320, 240);
Okrem toho má kód tiež konfigurácie I2C rozdelené do niekoľkých častí. Konfigurácie I2C majú iba na získanie dát z kamery funkciu Štart, Čítanie, Zápis, Nastaviť adresu, ktoré sú dôležité pri použití protokolu I2C.
Nájdete kompletný kód v ukážkovom videu na konci tohto návodu. Stačí nahrať kód a otvoriť čítačku sériových portov a chytiť rámy.
Ako používať čítačku sériového portu na čítanie obrázkov
Serial Port Reader je jednoduché grafické užívateľské rozhranie, stiahnite si ho odtiaľto. Toto zachytí kódovanie base64 a dekóduje ho na vytvorenie obrázka. Ak chcete použiť aplikáciu Serial Port Reader, postupujte podľa týchto jednoduchých krokovKrok 1: Pripojte svoje Arduino k ľubovoľnému portu USB vášho počítača
Krok 2: Kliknite na „Skontrolovať“ a nájdite svoj port Arduino COM
Krok 3: Nakoniec kliknite na tlačidlo „Štart“ a začnite čítať sériovo.
Krok 4: Jeden môže tiež uložiť tieto obrázky kliknutím na „Uložiť obrázok“.
Ďalej sú uvedené ukážky obrázkov prevzatých z modelu OV7670
Preventívne opatrenia pri používaní OV7670
- Snažte sa používať drôty alebo prepojky čo najkratšie
- Dajte pozor, aby ste sa nedotkli kolíkov na Arduine alebo OV7670
- Pri pripájaní buďte opatrní, pretože veľké množstvo káblov môže viesť ku skratu
- Ak UNO dáva výstup 5V do GPIO, použite radenie úrovní.
- Použite vstup 3,3 V pre OV7670, pretože prekročenie napätia môže poškodiť modul OV7670.
Tento projekt je vytvorený, aby poskytol prehľad o použití kamerového modulu s Arduino. Pretože má Arduino menej pamäte, spracovanie nemusí byť také, ako sa očakávalo. Môžete použiť rôzne radiče, ktoré majú viac pamäte na spracovanie.