Cameră Foto Autonomă

ESP32-CAM este o placă de dezvoltare foarte populară care combină puterea sistemului ESP32 cu un modul de cameră integrat.
În centrul ESP32-CAM se află ESP32 SoC, un microcontroller foarte cunoscut pentru capabilitățile sale în aplicațiile IoT. Placa este echipată cu un modul de cameră OV2640, care permite captarea imaginilor și video cu rezoluții de până la 2 megapixeli (1600x1200 pixeli). Modulul camerei, deși cu focalizare fixă, oferă capabilități de imagine fiabile pentru o varietate de proiecte. În ceea ce privește memoria și stocarea, ESP32-CAM include de obicei 4 MB de memorie flash pentru stocarea programelor. De asemenea, are 520 KB de SRAM pentru stocarea temporară a datelor și utilizare variabilă. Această combinație de resurse de memorie asigură funcționarea fără probleme și gestionarea eficientă a imaginilor capturate.
Conectivitatea este un aspect fundamental al oricărui dispozitiv IoT: placuta prezinta Wi-Fi (802.11 b/g/n) și Bluetooth 4.2 încorporate, permițând comunicarea fără fir fără întreruperi și integrarea în rețelele existente. Aceste caracteristici deschid o lume de posibilități pentru monitorizarea de la distanță, partajarea imaginilor și transmiterea de date.
Placa este echipată cu o serie de pini de intrare/ieșire de uz general (GPIO), permițând integrarea ușoară cu senzori externi și alte periferice.
Programarea ESP32-CAM este un proces simplu, datorită compatibilității sale cu Arduino IDE și alte medii de dezvoltare populare. Bibliotecile concepute special pentru funcționalitatea camerei simplifică captarea și procesarea de bază a imaginilor, făcându-le accesibile chiar și celor care sunt începători în procesarea imaginilor.
Proiectul realizat de mine are ca scop fotografierea cand se detecteaza miscare in fata camerei si salvarea pozei pe un card de memorie microSD.
Supplies



- Placa de dezvoltare ESP32 cu modul camera
- Convertor serial USB la TTL
- Senzor ultrasonic
- Card de memorie microSD de maximum 8GB
- Fire de conexiune
- Breadboard
Realizarea Partii Hardware


.jpeg)
Dificultatea in realizarea camerei foto a pornit de la faptul ca placuta de dezvoltare ESP32 CAM are destul de putini pini care pot fi folositi, chiar daca ea dispune de multe functionalitati, precum modul bluetooth integrat, WiFi, camera, etc. In partea dreapta a placutei aproape toti pinii sunt folositi de cardul microSD (GPIO4, GPIO2,GPIO14, GPIO15, GPIO12), in afara de pinul GPIO13, care a fost legat la pinul Echo de Input de la senzorul ultrasonic.
Pinul GPIO4 este necesar si pentru realizarea pozelor pentru ca activeaza blitul pe camera. De asemenea, in parte dreapta a placutei se gasesc si pinii pentru 5V si GND.
In partea stanga, de sus in jos se regasesc urmatorii pini: 3V, GPIO16 (care a fost folosit pentru a lega pinul trigger de output de la senzorul ultrasonic), GPIO0 , 3.3V/5V, GPIO3, GPIO1, si GND, care sunt folositi pentru comunicarea cu Serial Monitor si punerea codului pe placuta.
La senzorul ultrasonic intalnim urmatorii pini: Vcc (5V), GND, Trig si Echo.
Adaptorul ajuta la transmisia datelor si conexiunea catre computer si trebuie legat la placuta.
Realizarea Partii Software





Pentru realizarea proiectul am folosit urmatoarele componente:
- Biblioteci:
Codul include mai multe biblioteci necesare pentru funcționarea ESP32-CAM, cum ar fi „esp_camera.h” pentru funcțiile legate de cameră, „Arduino.h” pentru funcționalitățile generale Arduino, „FS.h” și „SD_MMC.h” pentru accesarea cardului SD, „soc/soc.h” și „soc/rtc_cntl_reg.h” pentru a dezactiva problemele de întrerupere și „driver/rtc_io.h” pentru a configura intrarea/ieșirea ceasului în timp real.
- Definiri și variabile:
Codul definește dimensiunea EEPROM (memorie flash) pentru a stoca un singur octet. Acesta declară o variabilă numită „bootCount” , folosită pentru a ține evidența de câte ori dispozitivul a fost pornit. Atribuțiile de pin GPIO sunt furnizate pentru diferite semnale ale camerei, cum ar fi oprirea, resetarea (RESET).
În plus, se realizează alocarea pinii pentru pinii trigger și echo utilizați pentru măsurarea distanței cu un senzor ultrasonic.
- Setup:
Funcția de configurare este apelată o dată când pornește microcontrolerul.
Acesta configurează pinii de trigger și ecou ca ieșire și, respectiv, intrare.
Comunicația serială este inițializată cu o viteză de transmisie de 9600.
Structura configurației camerei este definită, specificând pinii GPIO pentru diferite semnale ale camerei, formatul pixelilor și calitatea imaginii.
În funcție de prezența PSRAM (RAM externă), dimensiunea cadrului și calitatea JPEG sunt setate corespunzător.
Camera este inițializată cu configurația furnizată și orice eroare de inițializare este raportată.
Inițializarea cardului SD se realizează folosind SD_MMC.begin(), iar prezența unui card SD este verificată.
- Captarea și salvarea imaginii ini loop():
EEPROM (memoria flash) este inițializată, iar numărul imaginii este citit din EEPROM și incrementat cu 1.
Calea pentru salvarea imaginii este construită folosind numărul imaginii. Sistemul de fișiere SD_MMC este accesat și un fișier cu calea construită este deschis în modul de scriere. Dacă deschiderea fișierului are succes, datele imaginii din memoria cadrelor camerei (fb) sunt scrise în fișier. Numărul imaginii este scris înapoi în EEPROM, iar modificările sunt comise, spoi fișierul este închis.
Se adaugă o întârziere de 2 secunde pentru a lăsa timp pentru următoarea iterație a buclei.