Spoj moćnog Espressifovog ESP32 čipa i kamere, poznat pod imenom ESP32-CAM, otvara neke sasvim nove mogućnosti – npr. video streaming ili prepoznavanje lica. U kombinaciji s još kojim senzorom, za malo novaca može se napraviti neke prilično zanimljive projekte.
Mi ćemo iskoristiti Espressifov demo projekt da bi pokazali što i kako napraviti, a za sve više od toga prepušteni ste na milost i nemilost svojoj mašti. Od hardvera, osim samog ESP32-CAM paketa, trebati će nam i neki programator – mi ćemo koristiti USB – UART adapter s CP2102 naše e-Radionice (upute za instalaciju drivera), plus microUSB kabel da ga povežemo s računalom i 5 kabela sa ženskim Dupont konektorima za povezivanje programatora s ESP32 pločicom. Također, za napajanje će nam trebati bilo koji 5 V punjač za mobitele i USB kabel za napajanje (naravno, uvijek možete napraviti ritualno žrtvovanje nekog USB kabela koji vam više nije potreban i izvući žice za napajanje iz njega).
Za početak, pozabaviti ćemo se softverskim dijelom priče. Ako do sada niste radili s ESP32 pločicama, potrebno je da u Arduino IDE ubacite njihove definicije. Iz menija izaberite File->Preferences i u polje Additional Boards Manager URLs iskopirajte https://dl.espressif.com/dl/package_esp32_index.json . Ako tamo već imate neki link, razdvojite ih zarezom. Potvrdite izbor klikom na OK.
Nakon toga iz menija izaberite Tools->Board:->Boards Manager… i u polje Filter Your Search… upišite „esp32”. Dobiti ćete na izbor „esp32 by Espressif Systems” pa kliknite na gumb Install.
Sada na meniju možete izabrati Tools->Board:->ESP32 Wrower Module i na meniju Tools sada ćete vidjeti i ostale postavke od kojih promijenite samo Partition Scheme u Huge APP (3MB No OTA).
Na kraju iz menija izaberite File->Examples->ESP32->Camera->CameraWebServer, ovo je demo koji želimo uploadati na ESP32-CAM. U kodu koji je učitan promijeniti ćemo samo dvije stvari: liniju `#define CAMERA_MODEL_WROVER_KIT` ćemo pretvoriti u komentar, a odkomentirati ćemo liniju `#define CAMERA_MODEL_AI_THINKER` i upisati podatke za SSID i password WiFi mreže na koju će ESP32-CAM biti spojen. Krajnji rezultat trebao bi izgledati kao na slici, naravno s drugim podacima za WiFi mrežu.
Konačno, došao je trenutak da se prihvatimo i hardvera. Spojite programator i ESP32-CAM kako je prikazano na slici. Pri tome pazite da na programatoru prebacite prekidač za izlazni napon na 3.3 V i da spojite IO0 i GND na samom ESP32-CAM modulu – ovo omogućava upload koda na pločicu.
Kada je sve spojeno, priključite programator USB kabelom na računalo, u Arduino IDE-u izaberite port na kojem se nalazi i pokrenite Serial Monitor. Ukoliko je baud rate različit od 115200, postavite ga na tu vrijednost i na ESP32-CAM kratko pritisnite reset dugme. Ako je sve u redu, trebala bi se pojaviti poruka kao na donjoj slici. Ukoliko se to nije dogodilo, odspojite USB kabel i ponovno provjerite jeste li sve ispravno spojili.
Sada možete napraviti upload primjera koji smo otvorili u Arduino IDE-u i kroz 30-tak sekundi trebali bi dobiti čuvenu poruku „Done uploading.”. Nemojte se obazirati na poruku tipa „Hard reseting via … pin”, u ovom slučaju ništa se više neće dogoditi. Ostavite otvoren Serial Monitor i odspojite USB s računala. Zatim odspojite žicu koja je s programatora išla na 3V3 pin ESP32-CAM-a i uklonite žicu koja je povezivala IO0 i GND pinove, a sve ostale žice za sada ostavite na mjestu. Spojite 5 V napajanje na 5V i GND pinove ESP32-CAM-a, priključite USB programatora nazad na računalo, a zatim i 5V napajanje. Trebali bi vidjeti slijedeću poruku:
Ukoliko se ništa ne događa, ugasite i ponovno upalite Serial Monitor, a zatim na ESP32-CAM pritisnite reset. Ako se niti tada ništa ne događa, pokušajte promjeniti izvor napajanja, nama s nekim punjačima za mobitele ESP32 nije želio surađivati. Za prvu ruku, možete iskoristiti još jedan USB priključak na računalu, ali u tom slučaju vjerojatno ćete dobiti „Brownout detection” poruku i možda će se ESP32 restartati svaki puta kada se pokuša spojiti na WiFi mrežu. U gornjoj poruci možete vidjeti IP adresu uređaja, pa ju sada utipkajte u web browser i na stranici koja se učita kliknite na „Start Stream”.
Velika je vjerojatnost da će stream kojeg dobijete biti vrlo loše kvalitete, čak i na vrlo niskoj rezoluciji, jer ugrađena PCB kamera na modulu nema baš vrhunske performanse. Trik koji bi mogao pomoći je da za WiFi mrežu iskoristite smartphone na kojem uključite Hotspot opciju i postavite ga u blizinu ESP32-CAM modula, pa na njemu otvorite browser i učitate aplikaciju. Dugoročnije rješenje je korištenje vanjske antene putem uFL/IPEX konektora na modulu, ali da bi to mogli potrebno je premjestiti jedan SMD R0 otpornik, što je prilično teško izvesti u kućnim uvjetima. Naravno, uvijek možete smjestiti modul u blizinu kućnog routera, barem u fazi testiranja.
Što dalje? Već i unutar demo aplikacije, postoji velik broj opcija s kojima se možete poigrati, od kojih su posebno zanimljive Face Detection i Face Recognition, pa će možda već i ova verzija (uz sitne prepravke) biti sasvim zadovoljavajuća za određene primjene. U svakom slučaju, ako ćete se oslanjati na video streaming mogućnosti, nadogranja antene je neizbježna. Napajanje isto može biti problem ako se oslanjate na 5 V punjače, mi smo najstabilnije rezultate postigli s 9V/1A adapterom i step-down modulom na 5 V.