- Szükséges alkatrészek
- Az OV7670 fényképezőgép-modullal kapcsolatos megjegyzések
- Kördiagramm
- Arduino UNO programozása
- Hogyan használható a soros portolvasó a képek olvasásához
- Az alábbiakban az OV7670-ből készített mintaképek találhatók
- Óvintézkedések az OV7670 használatakor
A kamerák mindig is dominálták az elektronikai ipart, mivel rengeteg alkalmazással rendelkezik, például látogatói megfigyelő rendszer, megfigyelő rendszer, jelenléti rendszer stb. A manapság használt kamerák okosak és sok olyan funkcióval rendelkeznek, amelyek nem voltak jelen a korábbi kamerákban. Míg a digitális kamerák nemcsak képeket készítenek, hanem a jelenet magas szintű leírását és elemzik a látottakat is. Széles körben használják a robotikában, a mesterséges intelligenciában, a gépi tanulásban stb. A rögzített kereteket a mesterséges intelligencia és a gépi tanulás segítségével dolgozzák fel, majd számos alkalmazásban használják, például rendszámtábla-felismerés, tárgyfelismerés, mozgásérzékelés, arcfelismerés stb.
Ebben az oktatóanyagban a legszélesebb körben használt OV7670 kamera modult fogjuk összekapcsolni az Arduino UNO-val. Az OV7670 kameramodul azonos tűkonfigurációval, kóddal és lépésekkel csatlakoztatható az Arduino Mega- hoz. A kameramodult nehéz kezelni, mert nagy számú csapot és zavart vezetéket kell végrehajtani. A vezeték a kamera modulok használatakor is nagyon fontossá válik, mivel a vezeték és a vezeték hosszának megválasztása jelentősen befolyásolhatja a képminőséget és zajt okozhat.
Már rengeteg projektet hajtottunk végre kamerákon, különféle mikrovezérlőkkel és IoT eszközökkel, például:
- Látogató megfigyelő rendszer Raspberry Pi és Pi kamerával
- IOT alapú Raspberry Pi otthoni biztonsági rendszer e-mail riasztással
- Raspberry Pi térfigyelő kamera mozgásrögzítéssel
Az OV7670 kamera 3,3 V- on működik, ezért nagyon fontos lesz elkerülni az Arduinót, amely 5 V kimenetet ad a kimeneti GPIO csapoknál. Az OV7670 egy FIFO kamera. De ebben az oktatóanyagban a képet vagy a kereteket FIFO nélkül fogjuk meg. Ez az oktatóanyag egyszerű lépéseket és egyszerűsített programozást tartalmaz az OV7670 és az Arduino UNO interfészéhez.
Szükséges alkatrészek
- Arduino UNO
- OV7670 kamera modul
- Ellenállások (10k, 4.7k)
- Ugrók
Szükséges szoftver:
- Arduino IDE
- Soros portolvasó (a kimeneti kép elemzéséhez)
Az OV7670 fényképezőgép-modullal kapcsolatos megjegyzések
Az OV7670 Camera Module egy FIFO kamera modul, amelyet különböző gyártók kaphatnak, különböző tűkonfigurációkkal. Az TheOV7670 teljes képkockás, ablakos, 8 bites képeket kínál széles formátumban. A képtömb legfeljebb 30 képkocka / másodperc (fps) sebességgel képes VGA-ban működni. Az OV7670 tartalmazza
- Képérzékelő tömb (kb. 656 x 488 képpont)
- Időzítés generátor
- Analóg jelfeldolgozó
- A / D átalakítók
- Tesztmintagenerátor
- Digitális jelfeldolgozó (DSP)
- Képméretező
- Digitális videó port
- LED és Strobe Flash Control kimenet
Az OV7670 képérzékelőt a Serial Camera Control Bus (SCCB) segítségével vezérlik, amely egy I2C interfész (SIOC, SIOD), maximális órajel-frekvenciája 400KHz.
A fényképezőgép kézfogási jelekkel érkezik, például:
- VSYNC: Függőleges szinkron kimenet - alacsony képkocka közben
- HREF: Vízszintes referencia - magas a sor aktív képpontjai alatt
- PCLK: Pixel Clock Output - Ingyenes futó óra. Az adatok emelkedő szélen érvényesek
Ezen felül még több jelet tartalmaz, mint pl
- D0-D7: 8 bites YUV / RGB videokomponens digitális kimenet
- PWDN: Kikapcsolási mód kiválasztása - Normál és Kikapcsolási mód
- XCLK: Rendszeróra bemenet
- Visszaállítás: Jel visszaállítása
Az OV7670-et egy 24 MHz-es oszcillátor vezérli. Ez 24 MHz-es Pixel Clock (PCLK) kimenetet eredményez. A FIFO 3Mbps video frame buffer memóriát biztosít. A tesztminta-generátor 8 sávos színes sáv mintázattal, elhalványuló-szürke színű sávmintával rendelkezik. Most kezdjük el programozni az Arduino UNO-t a Camera OV7670 teszteléséhez és a keretek megragadásához a soros portolvasóval.
Kördiagramm
Arduino UNO programozása
A programozás az OV7670-hez szükséges könyvtár hozzáadásával kezdődik. Mivel az OV7670 I2C interfészen fut, ide tartozikEzt követően a regisztereket módosítani kell az OV7670 számára. A program a jobb megértés érdekében apró funkciókra oszlik.
A Beállítás () tartalmazza a csak képrögzítéshez szükséges összes kezdeti beállítást. Az első függvény az arduinoUnoInut (), amely az arduino uno inicializálására szolgál. Kezdetben letiltja az összes globális megszakítást, és beállítja a kommunikációs interfész konfigurációit, például a PWM órát, a megszakítási csapok kiválasztását, a presclaer kiválasztását, a paritás és a stop bitek hozzáadását.
ArduinoUnoInut ();
Az Arduino konfigurálása után a kamerát konfigurálni kell. A kamera inicializálásához csak a regiszterértékek megváltoztatására van lehetőségünk. A regiszter értékeit alapértelmezettről egyénire kell változtatni. Adja meg a szükséges késleltetést az általunk használt mikrovezérlő frekvenciájától függően is. Mint ahogy, a lassú mikrovezérlőknek kevesebb feldolgozási ideje van, ami nagyobb késleltetést jelent a rögzítési keretek között.
void camInit (void) { writeReg (0x12, 0x80); késedelem_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // A PCLK nem kapcsol be a HBLANK-ra. }
A kamera QVGA kép készítésére van beállítva, ezért a felbontást ki kell választani. A funkció a regisztert QVGA kép készítésére konfigurálja.
setResolution ();
Ebben az oktatóanyagban a képek monokróm módon készülnek, így a regiszter értéke monokróm kép kiadására van beállítva. A függvény a regiszterértékeket a programban előre definiált regiszterlistából állítja be.
setColor ();
Az alábbi függvény a write to register függvény, amely beírja a regisztrálni kívánt hexa értéket. Ha megkapja a kódolt képeket, akkor próbálja meg megváltoztatni a második kifejezést, azaz 10-et 12/11/12-re. De legtöbbször ez az érték jól működik, így nem kell változtatni rajta.
writeReg (0x11, 10);
Ezt a funkciót használja a képfelbontás méretének meghatározásához. Ebben a projektben 320 x 240 képpont méretű képeket készítünk.
captureImg (320, 240);
Ezen kívül a kód az I2C konfigurációkat is több részre osztja. Az I2C konfigurációk csak azért, hogy adatokat kapjanak a kamerából, rendelkeznek Start, Read, Write, Address Set funkcióval, amelyek fontosak az I2C protokoll használatakor.
A teljes kódot bemutató videóval találhatja meg az oktatóanyag végén. Csak töltse fel a kódot, nyissa meg a soros portolvasót, és fogja meg a kereteket.
Hogyan használható a soros portolvasó a képek olvasásához
A Serial Port Reader egy egyszerű GUI, töltse le innen. Ez rögzíti az base64 kódolást, és dekódolja képet. Csak kövesse ezeket az egyszerű lépéseket a soros portolvasó használatához1. lépés: Csatlakoztassa Arduino készülékét a számítógép bármely USB portjához
2. lépés: Kattintson a „Check” gombra az Arduino COM port megtalálásához
3. lépés: Végül kattintson a „Start” gombra a soros olvasás megkezdéséhez.
4. lépés: Ezeket a képeket a „Kép mentése” gombra kattintva is elmentheti.
Az alábbiakban az OV7670-ből készített mintaképek találhatók
Óvintézkedések az OV7670 használatakor
- Próbáljon a lehető legrövidebb ideig használni vezetékeket vagy jumpereket
- Kerülje az Arduino vagy az OV7670 érintkezőinek laza érintkezését
- Vigyázzon a csatlakoztatásra, mivel nagyszámú vezeték rövidzárlatot okozhat
- Ha az UNO 5V kimenetet ad a GPIO-nak, akkor használja a Level Shiftert.
- Használjon 3,3 V-os bemenetet az OV7670-hez, mivel a feszültség túllépése károsíthatja az OV7670 modult.
Ez a projekt azért készült, hogy áttekintést adjon az Arduino kameramodul használatáról. Mivel az Arduino memóriája kevesebb, ezért a feldolgozás nem biztos, hogy a vártnak felel meg. Különböző vezérlőket használhat, amelyek több memóriával rendelkeznek a feldolgozáshoz.