- Požadované komponenty
- Co je třeba pamatovat na kamerový modul OV7670
- Kruhový diagram
- Programování Arduino UNO
- Jak používat čtečku sériových portů ke čtení obrázků
- Níže jsou ukázky snímků pořízených z OV7670
- Bezpečnostní opatření při používání OV7670
Fotoaparáty vždy dominovaly elektronickému průmyslu, protože má mnoho aplikací, jako je monitorovací systém pro návštěvníky, sledovací systém, docházkový systém atd. Fotoaparáty, které dnes používáme, jsou chytré a mají mnoho funkcí, které v dřívějších kamerách nebyly. Zatímco dnešní digitální fotoaparáty nejen pořizují snímky, ale také pořizují vysoce kvalitní popisy scény a analyzují, co vidí. Používá se ve velké míře v robotice, umělé inteligenci, strojovém učení atd. Zachycené rámečky se zpracovávají pomocí umělé inteligence a strojového učení a poté se používají v mnoha aplikacích, jako je detekce SPZ, detekce objektů, detekce pohybu, rozpoznávání obličeje atd.
V tomto tutoriálu propojíme nejpoužívanější kamerový modul OV7670 s Arduino UNO. Kamerový modul OV7670 lze propojit s Arduino Mega se stejnou konfigurací pinů, kódem a kroky. Kamerový modul se obtížně propojuje, protože má velký počet pinů a neuspořádané zapojení. Drát se stává velmi důležitým také při použití kamerových modulů, protože výběr drátu a délka drátu mohou významně ovlivnit kvalitu obrazu a způsobit šum.
Již jsme na kamerách provedli řadu projektů s různými druhy mikrokontrolérů a zařízení IoT, jako například:
- Monitorovací systém pro návštěvníky s kamerou Raspberry Pi a Pi
- Domácí bezpečnostní systém Raspberry Pi založený na IOT s e-mailovým upozorněním
- Kamera pro sledování Raspberry Pi s funkcí Motion Capture
Camera OV7670 pracuje na 3,3 V, takže se stává velmi důležité, aby se zabránilo Arduino, který dává 5V výstup na jejich výstupu GPIO piny. OV7670 je kamera FIFO. Ale v tomto tutoriálu budou obrázky nebo rámečky zachyceny bez FIFO. Tento výukový program bude mít jednoduché kroky a zjednodušené programování pro propojení OV7670 s Arduino UNO.
Požadované komponenty
- Arduino UNO
- Kamerový modul OV7670
- Rezistory (10k, 4,7k)
- Svetry
Požadovaný software:
- Arduino IDE
- Čtečka sériového portu (pro analýzu výstupního obrazu)
Co je třeba pamatovat na kamerový modul OV7670
Kamerový modul OV7670 je kamerový modul FIFO dostupný od různých výrobců s různými konfiguracemi pinů. FotoaparátOV7670 poskytuje 8bitové obrazy s plným rámem a okny v široké škále formátů. Obrazové pole je schopné pracovat až 30 snímků za sekundu (fps) ve VGA. OV7670 obsahuje
- Pole obrazového snímače (přibližně 656 x 488 pixelů)
- Generátor časování
- Procesor analogového signálu
- A / D převaděče
- Generátor testovacích vzorů
- Procesor digitálního signálu (DSP)
- Škálovač obrázků
- Port digitálního videa
- Výstup ovládání LED a blesku
Obrazový snímač OV7670 je řízen pomocí Serial Camera Control Bus (SCCB), což je rozhraní I2C (SIOC, SIOD) s maximální taktovací frekvencí 400KHz.
Fotoaparát je vybaven signály potřesení rukou, například:
- VSYNC: Vertikální synchronizační výstup - nízký během snímku
- HREF: Vodorovná reference - vysoká během aktivních pixelů řádku
- PCLK: Pixel Clock Output - běžící hodiny zdarma. Data jsou platná na náběžné hraně
Kromě toho má několik dalších signálů, jako je
- D0-D7: 8bitový YUV / RGB video komponentní digitální výstup
- PWDN: Výběr režimu vypnutí - normální režim a režim vypnutí
- XCLK: Vstup systémových hodin
- Reset: Reset signálu
OV7670 je taktován z 24MHz oscilátoru. To dává výstupu Pixel Clock (PCLK) 24MHz. FIFO poskytuje 3Mbps vyrovnávací paměti snímků videa. Generátor testovacích vzorů je vybaven 8barevným barevným pruhem, barevným pruhem od fade-to-grey. Nyní začneme programovat Arduino UNO pro testování kamery OV7670 a pořizování snímků pomocí čtečky sériového portu.
Kruhový diagram
Programování Arduino UNO
Programování začíná zahrnutím požadované knihovny potřebné pro OV7670. Jelikož OV7670 běží na rozhraní I2C, obsahujePoté je třeba upravit registry pro OV7670. Program je pro lepší pochopení rozdělen na malé funkce.
Setup () zahrnuje všechny počáteční nastavovaných potřebné pouze pro snímání obrazu. První funkcí je arduinoUnoInut (), která se používá k inicializaci arduino uno. Zpočátku zakáže všechna globální přerušení a nastaví konfigurace komunikačního rozhraní, jako jsou hodiny PWM, výběr pinů přerušení, výběr presclaer, přidání parity a stop bitů.
ArduinoUnoInut ();
Po konfiguraci Arduina je třeba nakonfigurovat kameru. K inicializaci kamery máme pouze možnosti změnit hodnoty registru. Hodnoty registru je třeba změnit z výchozí na vlastní. Přidejte také požadované zpoždění v závislosti na frekvenci mikrokontroléru, kterou používáme. Pomalé mikrokontroléry mají kratší dobu zpracování a zvyšují tak zpoždění mezi snímáním snímků.
void camInit (void) { writeReg (0x12, 0x80); _delay_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK se na HBLANK nepřepíná. }
Fotoaparát je nastaven na pořizování obrazu QVGA, takže je třeba zvolit rozlišení. Funkce konfiguruje registr pro pořízení obrazu QVGA.
setResolution ();
V tomto kurzu jsou obrázky pořizovány černobíle, takže hodnota registru je nastavena na výstup monochromatického obrazu. Funkce nastavuje hodnoty registru ze seznamu registrů, který je předdefinován v programu.
setColor ();
Níže uvedená funkce je funkce write to register, která zapisuje hexadecimální hodnotu do registru. Pokud získáte kódované obrázky, zkuste změnit druhý termín, tj. 10. až 11. září 12. Většinou ale tato hodnota funguje dobře, takže ji není třeba měnit.
writeReg (0x11, 10);
Tato funkce se používá k získání velikosti rozlišení obrazu. V tomto projektu pořizujeme snímky ve velikosti 320 x 240 pixelů.
captureImg (320, 240);
Kromě toho má kód také konfigurace I2C rozdělené na několik částí. Aby bylo možné získat data z kamery, mají konfigurace I2C funkci Start, Read, Write, Set Address, které jsou důležité při použití protokolu I2C.
Najdete kompletní kód v ukázkovém videu na konci tohoto návodu. Stačí nahrát kód a otevřít čtečku sériových portů a uchopit rámečky.
Jak používat čtečku sériových portů ke čtení obrázků
Serial Port Reader je jednoduché grafické uživatelské rozhraní, stáhněte si jej zde. Tím se zachytí kódování base64 a dekóduje se tak, aby vytvořil obraz. Chcete-li použít čtečku sériových portů, postupujte podle těchto jednoduchých krokůKrok 1: Připojte své Arduino k libovolnému portu USB počítače
Krok 2: Klikněte na „Zkontrolovat“, abyste našli svůj COM port Arduino
Krok 3: Nakonec klikněte na tlačítko „Start“ pro zahájení sériového čtení.
Krok 4: Jeden může také uložit tyto obrázky pouhým kliknutím na „Uložit obrázek“.
Níže jsou ukázky snímků pořízených z OV7670
Bezpečnostní opatření při používání OV7670
- Zkuste použít dráty nebo propojky co nejkratší
- Zabraňte jakémukoli uvolnění kontaktu s kolíky na Arduinu nebo OV7670
- Při připojování buďte opatrní, protože velký počet vodičů může vést ke zkratu
- Pokud UNO dává 5V výstup GPIO, použijte Level Shifter.
- Použijte vstup 3,3 V pro OV7670, protože překročení napětí by mohlo poškodit modul OV7670.
Tento projekt je vytvořen, aby poskytl přehled o používání kamerového modulu s Arduino. Vzhledem k tomu, že Arduino má méně paměti, zpracování nemusí být podle očekávání. Můžete použít různé řadiče, které mají více paměti pro zpracování.