- Tarvittavat komponentit
- Muistettavaa kameramoduulista OV7670
- Piirikaavio
- Arduino UNO -ohjelmointi
- Kuinka käyttää sarjaporttilukijaa kuvien lukemiseen
- Alla on esimerkkikuvia, jotka on otettu OV7670: stä
- Varotoimet käytettäessä OV7670: tä
Kamerat ovat aina dominoineet elektroniikkateollisuutta, koska sillä on paljon sovelluksia, kuten kävijöiden valvontajärjestelmä, valvontajärjestelmä, läsnäolojärjestelmä jne. Nykyään käyttämämme kamerat ovat älykkäitä ja niillä on paljon ominaisuuksia, joita ei ollut aikaisemmissa kameroissa. Vaikka nykyään digitaalikamerat paitsi kaapata kuvia myös kaapata korkean tason kuvaus kohtauksen ja analysoida mitä he näkevät. Sitä käytetään laajasti robotiikassa, tekoälyssä, koneoppimisessa jne. Siepatut kehykset käsitellään tekoälyn ja koneoppimisen avulla, ja niitä käytetään sitten monissa sovelluksissa, kuten rekisterikilven tunnistus, esineentunnistus, liiketunnistus, kasvojentunnistus jne.
Tässä opetusohjelmassa yhdistämme yleisimmin käytetyn kameramoduulin OV7670 Arduino UNO: n kanssa. Kameramoduuli OV7670 voidaan liittää Arduino Megan kanssa samalla tapilla, koodilla ja vaiheilla. Kameramoduulia on vaikea liittää, koska siinä on paljon nastoja ja sekaisin johdotuksia. Myös langasta tulee erittäin tärkeä kameramoduuleja käytettäessä, koska langan ja langan valinta voi vaikuttaa merkittävästi kuvan laatuun ja aiheuttaa melua.
Olemme jo tehneet runsaasti projekteja kameroille erilaisilla mikro-ohjaimilla ja IoT-laitteilla, kuten:
- Vierailijoiden seurantajärjestelmä Raspberry Pi- ja Pi-kameralla
- IOT-pohjainen Raspberry Pi -kotiturvajärjestelmä ja sähköpostihälytys
- Raspberry Pi -valvontakamera liiketallennuksella
Kamera OV7670 toimii 3.3V, joten se on erittäin tärkeää välttää Arduino joka antaa 5V ulostulo tuotantoaan GPIO nastat. OV7670 on FIFO-kamera. Mutta tässä opetusohjelmassa kuva tai kehykset napataan ilman FIFOa. Tässä opetusohjelmassa on yksinkertaiset vaiheet ja yksinkertaistettu ohjelmointi, jotta OV7670 voidaan liittää Arduino UNO: n kanssa.
Tarvittavat komponentit
- Arduino UNO
- OV7670-kameramoduuli
- Vastukset (10k, 4.7k)
- Neulepuserot
Vaadittu ohjelmisto:
- Arduino IDE
- Sarjaportinlukija (lähtökuvan analysointiin)
Muistettavaa kameramoduulista OV7670
OV7670-kameramoduuli on FIFO-kameramoduuli, jota on saatavana eri valmistajilta ja joilla on erilaiset pin-kokoonpanot. TheOV7670 tarjoaa täysikokoiset, ikkunoidut 8-bittiset kuvat monissa eri muodoissa. Kuvaryhmä pystyy toimimaan jopa 30 kuvaa sekunnissa (fps) VGA-tilassa. OV7670 sisältää
- Kuva-anturiryhmä (noin 656 x 488 pikseliä)
- Ajoitusgeneraattori
- Analoginen signaaliprosessori
- A / D-muuntimet
- Testaa kuvageneraattori
- Digitaalinen signaaliprosessori (DSP)
- Kuvan skaalain
- Digitaalinen videoportti
- LED- ja vilkkuva salaman ohjauslähtö
OV7670-kuvakennoa ohjataan sarjakameran ohjausväylällä (SCCB), joka on I2C-liitäntä (SIOC, SIOD) ja jonka maksimitaajuus on 400 kHz.
Kameran mukana tulee kättelysignaaleja, kuten:
- VSYNC: Pystysynkronointilähtö - matala kuvan aikana
- HREF: Vaakasuuntainen viite - korkea rivin aktiivisten pikselien aikana
- PCLK: Pixel Clock Output - ilmainen juoksukello. Tiedot ovat voimassa nousevalla reunalla
Tämän lisäksi sillä on useita muita signaaleja, kuten
- D0-D7: 8-bittinen YUV / RGB-videokomponentin digitaalilähtö
- PWDN: Virrankatkaisutilan valinta - normaalitila ja virrankatkaisutila
- XCLK: Järjestelmän kellotulo
- Nollaa: Nollaa signaali
OV7670 on kellotettu 24 MHz: n oskillaattorista. Tällöin Pixel Clock (PCLK) -lähtö on 24 MHz. FIFO tarjoaa 3Mbps videokehyksen puskurimuistia. Testikuvageneraattorissa on kahdeksan palkin väripalkkikuvio, haalistuvasta harmaaseen väripalkki. Aloitetaan nyt Arduino UNO: n ohjelmointi kameran OV7670 testaamiseksi ja kehysten nappaamiseksi sarjaportin lukijalla.
Piirikaavio
Arduino UNO -ohjelmointi
Ohjelmointi alkaa sisällyttämällä vaadittu kirjasto, joka tarvitaan OV7670: lle. Koska OV7670 toimii I2C-liitännällä, se sisältääTämän jälkeen rekistereitä on muutettava mallille OV7670. Ohjelma on jaettu pieniin toimintoihin ymmärtämisen parantamiseksi.
Setup () käsittää kaikki alkuperäisen asetukset tarvitaan vain kuvan kaappaaminen. Ensimmäinen toiminto on arduinoUnoInut (), jota käytetään alustamaan arduino uno. Aluksi se poistaa kaikki globaalit keskeytykset käytöstä ja asettaa tiedonsiirtoliitäntäkokoonpanot, kuten PWM-kellon, keskeytysnastojen valinnan, presclaer-valinnan, pariteetin ja lopetusbittien lisäämisen.
ArduinoUnoInut ();
Arduinon määrityksen jälkeen kamera on määritettävä. Kameran alustamiseksi meillä on vain vaihtoehtoja muuttaa rekisteriarvoja. Rekisteriarvot on vaihdettava oletusasetuksista mukautettuihin. Lisää myös vaadittu viive käytetyn mikro-ohjaimen taajuuden mukaan. Hitailla mikrokontrollereilla on vähemmän prosessointiaikaa, mikä lisää viivettä kaappauskehysten välillä.
void camInit (void) { kirjoitaReg (0x12, 0x80); _viive_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK ei vaihda asetukseen HBLANK. }
Kamera on asetettu ottamaan QVGA-kuva, joten resoluutio on valittava. Toiminto määrittää rekisterin ottamaan QVGA-kuvan.
setResolution ();
Tässä opetusohjelmassa kuvat otetaan yksivärisenä, joten rekisteriarvo asetetaan tuottamaan yksivärinen kuva. Toiminto asettaa rekisteriarvot ohjelmassa ennalta määritetystä rekisteriluettelosta.
setColor ();
Seuraava funktio on kirjoita rekisteriin -toiminto, joka kirjoittaa rekisteröidyn heksadesimaaliarvon. Jos saat salatut kuvat, yritä vaihtaa toinen termi eli 10 arvoon 9/11/12. Mutta useimmiten tämä arvo toimii hyvin, joten sitä ei tarvitse muuttaa.
writeReg (0x11, 10);
Tätä toimintoa käytetään kuvan tarkkuuskoon määrittämiseen. Tässä projektissa otamme kuvia, joiden koko on 320 x 240 pikseliä.
sieppaus mg (320, 240);
Tämän lisäksi koodissa on myös I2C-kokoonpanot jaettu useisiin osiin. Pelkästään tietojen saamiseksi kamerasta I2C-kokoonpanoissa on Käynnistä, Lue, Kirjoita, Aseta osoite -toiminto, jotka ovat tärkeitä I2C-protokollaa käytettäessä.
Löydät täydellisen koodin esittelyvideolla tämän opetusohjelman lopussa. Lataa koodi ja avaa Serial Port Reader ja tartu kehyksiin.
Kuinka käyttää sarjaporttilukijaa kuvien lukemiseen
Serial Port Reader on yksinkertainen käyttöliittymä, lataa se täältä. Tämä sieppaa base64-koodauksen ja purkaa sen muodostaen kuvan. Seuraa vain näitä yksinkertaisia vaiheita käyttääksesi Serial Port Reader -ohjelmaaVaihe 1: Liitä Arduino mihin tahansa tietokoneen USB-porttiin
Vaihe 2: Napsauta "Tarkista" löytääksesi Arduino COM -porttisi
Vaihe 3: Napsauta lopuksi Käynnistä-painiketta aloittaaksesi sarjan lukemisen.
Vaihe 4: Voit tallentaa tämän kuvan myös napsauttamalla "Tallenna kuva".
Alla on esimerkkikuvia, jotka on otettu OV7670: stä
Varotoimet käytettäessä OV7670: tä
- Yritä käyttää johtoja tai hyppääjiä mahdollisimman lyhyinä
- Vältä löysää kosketusta Arduinon tai OV7670: n nastoihin
- Ole varovainen liittämisen suhteen, koska suuri määrä johdotuksia voi johtaa oikosulkuun
- Jos UNO antaa 5 V: n lähdön GPIO: lle, käytä tasonvaihtajaa.
- Käytä OV7670: n 3,3 V: n tuloa, koska jännitteen ylitys voi vahingoittaa OV7670-moduulia.
Tämä projekti on luotu antamaan yleiskuva kameramoduulin käytöstä Arduinon kanssa. Koska Arduinolla on vähemmän muistia, käsittely ei välttämättä ole odotettua. Voit käyttää erilaisia ohjaimia, joilla on enemmän muistia käsittelyyn.