This is an old revision of the document!
Cameră de securitate controlată prin aplicație mobilă
Introducere
Prezentarea pe scurt a proiectului:
Acest proiect constă într-un sistem de supraveghere portabil, autonom, bazat pe modulul ESP32-CAM. Dispozitivul este alimentat de la o baterie Li-Ion și poate stoca imagini pe un card SD, dar și transmite date către o aplicație mobilă personalizată prin WiFi.
Ce face:
- Captează imagini la intervale regulate sau la detecția mișcării.
- Salvează imaginile pe un card microSD.
- Trimite notificări și imagini către o aplicație mobilă.
- Poate fi controlat de la distanță printr-o interfață mobilă.
Scopul:
Scopul este realizarea unui sistem de supraveghere autonom, ușor de amplasat în diverse locații, fără a necesita infrastructură complicată sau alimentare permanentă.
Ideea de la care am pornit:
Am dorit un dispozitiv simplu, accesibil, portabil și wireless, care să poată monitoriza un spațiu și să alerteze utilizatorul în timp real.
Utilitate:
Este util pentru monitorizarea locuințelor, birourilor, grădinilor, spațiilor de parcare sau în proiecte educaționale și hobby-uri DIY. Poate fi un bun punct de plecare pentru aplicații IoT mai complexe.
Descriere generală
Schema bloc:
Descrierea modulelor:
ESP32-CAM – modulul principal care controlează tot sistemul. Capturează imagini, gestionează conexiunea WiFi și salvează pe SD card.
Baterie Li-Ion + Modul de alimentare (TP4056) + Convertor MT3608 – sursa de alimentare a sistemului.
Card microSD – folosit pentru stocarea imaginilor local.
Aplicație mobilă – oferă interfață pentru vizualizarea imaginilor și trimiterea comenzilor către ESP32.
Modul WiFi (integrat în ESP32) – pentru comunicarea cu telefonul.
Hardware Design
Componente utilizate:
Schema electrica:
Software Design
Mediu de dezvoltare:
Biblioteci utilizate:
`FS.h` – pentru interactiunea cu fisiere
`SD_MMC.h` – pentru interacțiunea cu cardul microSD
`WiFi.h` – conexiune wireless
`esp_camera.h` – controlul camerei
Functii adaugate:
*ESP32-CAM
* onTimer() (ISR marcat cu IRAM_ATTR):
* Funcție de tip întrerupere (ISR) apelată de timer la un interval configurat (în exemplu, la 500 ms). Setează flag‑ul (motionCheckFlag) care indică faptul că trebuie verificată prezența mișcării.
* startRecording():
* Creează un fișier nou pe cardul SD (nume incrementat automat) cu extensia .mjpeg. Pornește înregistrarea, reținând momentul de start, pentru a ști ulterior când să se oprească după un anumit interval (ex. 5 secunde).
* stopRecording():
* Închide fișierul de înregistrare și setează indicatorul de înregistrare (isRecording) pe false. Resetează flag‑urile și memoria dedicată primei capturi, pentru a pregăti sistemul pentru o nouă înregistrare.
* downscaleGrayscale(const camera_fb_t *fb, uint8_t *output):
* Converteste cadrul JPEG (fb→buf) în format RGB și apoi îl reduce la o imagine 64×64 în tonuri de gri (8 biți/pixel). Folosește sampling 3×3 pentru a face o mică anti-aliasing și calculează media valorilor de gri. Returnează true/false în funcție de reușita procesării.
* detectMotion(const camera_fb_t *fb):
* Preia cadrul de la cameră, apoi îl trimite către downscaleGrayscale(). Compară rezultatul cu cadrul anterior (prevFrame) și calculează media diferențelor pixel cu pixel. Dacă media diferențelor depășește MOTION_THRESHOLD, consideră că s-a detectat mișcare și întoarce true.
* getLastFileNumber():
* Scanează directorul rădăcină de pe cardul SD pentru a găsi fișiere de tipul motion_x.mjpeg. Caută cel mai mare număr x deja folosit în denumirea fișierelor și returnează următorul index disponibil.
* checkMotion():
* Se apelează atunci când motionCheckFlag este setat de întrerupere (onTimer()). Obține un nou cadru de la cameră, apelează detectMotion() și dacă este detectată mișcare, pornește înregistrarea (startRecording()).
===== Rezultate Obţinute =====
===== Concluzii =====
===== Cod sursă =====
* [Repo GitHub](https://github.com/arthurpeter/Pm-Project) – toate fișierele sursă.
Structura repo:
* CameraWebServer - Cod pentru placuta.
* CameraApp - Cod aplicatie mobila.
===== Jurnal =====
* Etapa 1
: Alegerea componentelor și testarea ESP32-CAM
* Etapa 2
: Algoritm de detectare a miscarii
* Etapa 3
: Captura video și salvarea pe SD
* Etapa 4
: Interfață mobilă + transmisie WiFi
* Etapa 5
: Integrare finală și testare pe baterie
===== Bibliografie / Resurse =====
Hardware:
* [ESP32-CAM datasheet](https://www.espressif.com/sites/default/files/documentation/esp32-cam_datasheet_en.pdf)
* [TP4056 datasheet](https://www.electronicsdatasheets.com/download/90c913a424f8e6d5f3e164c81bfc9c5c)
Software:**
-