- Nepieciešamās sastāvdaļas
- Kas jāatceras par kameras moduli OV7670
- Ķēdes shēma
- Arduino UNO programmēšana
- Kā izmantot sērijas portu lasītāju attēlu lasīšanai
- Zemāk ir attēlu paraugi, kas uzņemti no OV7670
- Piesardzības pasākumi, lietojot OV7670
Kameras vienmēr ir dominējušas elektronikas nozarē, jo tai ir daudz lietojumu, piemēram, apmeklētāju uzraudzības sistēma, novērošanas sistēma, apmeklēšanas sistēma utt. Kameras, kuras mēs šodien izmantojam, ir gudras un tām ir daudz funkciju, kuru nebija iepriekšējās kamerās. Kamēr mūsdienu digitālās kameras ne tikai uzņem attēlus, bet arī uztver augsta līmeņa ainas aprakstus un analizē redzēto. To plaši izmanto robotikā, mākslīgajā intelektā, mašīnmācībā utt. Uzņemtie rāmji tiek apstrādāti, izmantojot mākslīgo intelektu un mašīnmācīšanos, un pēc tam tiek izmantoti daudzās lietojumprogrammās, piemēram, numura zīmes noteikšana, objektu noteikšana, kustību noteikšana, sejas atpazīšana utt.
Šajā apmācībā mēs interfeisēsim visplašāk izmantoto kameras moduli OV7670 ar Arduino UNO. Kameras moduli OV7670 var savienot ar Arduino Mega ar vienādu tapu konfigurāciju, kodu un soļiem. Kameras moduli ir grūti savienot, jo tam ir liels skaits tapu un izjaukta elektroinstalācija. Arī vads kļūst ļoti svarīgs, lietojot kameras moduļus, jo vadu un stieples izvēle var būtiski ietekmēt attēla kvalitāti un radīt troksni.
Mēs jau esam veikuši daudz projektu kamerās ar dažāda veida mikrokontrolleriem un IoT ierīcēm, piemēram:
- Apmeklētāju uzraudzības sistēma ar Raspberry Pi un Pi kameru
- IOT bāzes Raspberry Pi mājas drošības sistēma ar e-pasta brīdinājumu
- Raspberry Pi novērošanas kamera ar kustību fiksēšanu
Camera OV7670 darbi uz 3.3V, tāpēc tas kļūst ļoti svarīgi, lai izvairītos no Arduino kas dod 5V izejas pie savas produkcijas GPIO tapas. OV7670 ir FIFO kamera. Bet šajā apmācībā attēls vai rāmji tiks sagrābti bez FIFO. Šajā apmācībā būs vienkāršas darbības un vienkāršota programmēšana, lai saskarni OV7670 izveidotu ar Arduino UNO.
Nepieciešamās sastāvdaļas
- Arduino UNO
- OV7670 kameras modulis
- Rezistori (10k, 4.7k)
- Džemperi
Nepieciešamā programmatūra:
- Arduino IDE
- Seriālā porta lasītājs (lai analizētu izvades attēlu)
Kas jāatceras par kameras moduli OV7670
OV7670 kameras modulis ir FIFO kameras modulis, kas pieejams no dažādiem ražotājiem ar dažādām tapu konfigurācijām. TheOV7670 nodrošina pilna kadra un 8 bitu logus ar visdažādākajiem formātiem. Attēlu masīvs VGA režīmā var darboties ar ātrumu līdz 30 kadriem sekundē (fps). OV7670 ietver
- Attēla sensora masīvs (apmēram 656 x 488 pikseļi)
- Laika ģenerators
- Analogais signālu procesors
- A / D pārveidotāji
- Testa parauga ģenerators
- Digitālā signāla procesors (DSP)
- Attēlu mērogotājs
- Digitālā video pieslēgvieta
- LED un Strobe zibspuldzes vadības izeja
Attēla sensoru OV7670 kontrolē, izmantojot sērijveida kameras vadības kopni (SCCB), kas ir I2C interfeiss (SIOC, SIOD) ar maksimālo pulksteņa frekvenci 400KHz.
Kamera nāk ar rokasspiediena signāliem, piemēram:
- VSYNC: Vertikālās sinhronizācijas izeja - zema kadra laikā
- HREF: Horizontālā atskaite - Augsta rindas aktīvo pikseļu laikā
- PCLK: pikseļu pulksteņa izeja - bezmaksas darba pulkstenis. Dati ir derīgi uz augšējās malas
Papildus tam tam ir vēl vairāki signāli, piemēram,
- D0-D7: 8 bitu YUV / RGB video komponenta digitālā izeja
- PWDN: izslēgšanas režīma izvēle - normāls režīms un izslēgšanas režīms
- XCLK: sistēmas pulksteņa ievade
- Atiestatīt: atiestatīt signālu
OV7670 tiek regulēts no 24MHz oscilatora. Tādējādi pikseļu pulksteņa (PCLK) izeja ir 24 MHz. FIFO nodrošina 3Mbps video kadru bufera atmiņu. Pārbaudes modeļa ģeneratoram ir 8 joslu krāsu joslu raksts, nokrāsas līdz pelēkai krāsu joslu iezīme. Tagad sāksim programmēt Arduino UNO, lai pārbaudītu Camera OV7670 un satvertu rāmjus, izmantojot sērijas porta lasītāju.
Ķēdes shēma
Arduino UNO programmēšana
Programmēšana sākas ar nepieciešamās bibliotēkas iekļaušanu, kas nepieciešama OV7670. Tā kā OV7670 darbojas I2C saskarnē, tas ietverPēc tam OV7670 ir jāmaina reģistri. Lai labāk izprastu, programma ir sadalīta mazās funkcijās.
Setup () ietver visus sākotnējos uzstādījumus, kas nepieciešami tikai attēlu notveršanā. Pirmā funkcija ir arduinoUnoInut (), ko izmanto, lai inicializētu arduino uno. Sākotnēji tas atspējo visus globālos pārtraukumus un nosaka sakaru saskarnes konfigurācijas, piemēram, PWM pulksteni, pārtraukuma tapu izvēli, presclaer izvēli, pievienojot paritāti un stop bitus.
ArduinoUnoInut ();
Pēc Arduino konfigurēšanas kamera ir jākonfigurē. Lai inicializētu kameru, mums ir tikai iespējas mainīt reģistra vērtības. Reģistra vērtības jāmaina no noklusējuma uz pielāgotu. Pievienojiet arī nepieciešamo kavēšanos atkarībā no izmantotā mikrokontrollera frekvences. Tā kā lēniem mikrokontrolleriem ir mazāks apstrādes laiks, palielinot kavēšanos starp kadru uzņemšanu.
void camInit (void) { writeReg (0x12, 0x80); _delay_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK neieslēdz HBLANK. }
Kamera ir iestatīta QVGA attēla uzņemšanai, tāpēc ir jāizvēlas izšķirtspēja. Funkcija reģistru konfigurē, lai uzņemtu QVGA attēlu.
setResolution ();
Šajā apmācībā attēli tiek uzņemti vienkrāsainā veidā, tāpēc reģistra vērtība ir iestatīta vienkrāsaina attēla izvadīšanai. Funkcija nosaka reģistra vērtības no reģistru saraksta, kas iepriekš noteikts programmā.
setColor ();
Tālāk norādītā funkcija ir funkcija ierakstīt reģistram, kas reģistrēšanai reģistrē sešstūra vērtību. Ja jums ir kodēti attēli, mēģiniet nomainīt otro terminu, ti, 10 uz 9/11/12. Bet lielākoties šī vērtība darbojas labi, tāpēc nav jāmaina.
writeReg (0x11, 10);
Šo funkciju izmanto, lai iegūtu attēla izšķirtspējas lielumu. Šajā projektā mēs uzņemam attēlus 320 x 240 pikseļu lielumā.
uztveršanas mg (320, 240);
Izņemot šo, kodam ir arī I2C konfigurācijas, kas sadalītas vairākās daļās. Lai iegūtu datus no kameras, I2C konfigurācijās ir Start, Read, Write, Set Address funkcija, kas ir svarīga, lietojot I2C protokolu.
Šīs apmācības beigās varat atrast pilnu kodu ar demonstrācijas video. Vienkārši augšupielādējiet kodu un atveriet sērijas portu lasītāju un satveriet rāmjus.
Kā izmantot sērijas portu lasītāju attēlu lasīšanai
Serial Port Reader ir vienkārša GUI, lejupielādējiet to šeit. Tas uztver base64 kodējumu un atšifrē to, lai izveidotu attēlu. Vienkārši izpildiet šīs vienkāršās darbības, lai izmantotu sērijas portu lasītāju1. darbība: pievienojiet savu Arduino jebkuram datora USB portam
2. solis: Noklikšķiniet uz Pārbaudīt, lai atrastu savu Arduino COM portu
3. solis: Visbeidzot noklikšķiniet uz pogas Sākt, lai sāktu lasīt sērijveidā.
4. solis: Varat arī saglabāt šos attēlus, vienkārši noklikšķinot uz “Saglabāt attēlu”.
Zemāk ir attēlu paraugi, kas uzņemti no OV7670
Piesardzības pasākumi, lietojot OV7670
- Centieties pēc iespējas īsāk izmantot vadus vai džemperus
- Izvairieties no jebkura vaļīga kontakta ar Arduino vai OV7670 tapām
- Piesardzīgi pieslēdzieties, jo liels skaits elektroinstalāciju var izraisīt īssavienojumu
- Ja UNO dod 5V izeju GPIO, izmantojiet Level Shifter.
- Izmantojiet 3,3 V ieeju OV7670, jo sprieguma pārsniegšana var sabojāt OV7670 moduli.
Šis projekts ir izveidots, lai sniegtu pārskatu par kameras moduļa izmantošanu ar Arduino. Tā kā Arduino ir mazāk atmiņas, apstrāde var nebūt tik gaidīta. Apstrādei varat izmantot dažādus kontrollerus, kuriem ir vairāk atmiņas.