Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:bianca.popa1106:victoria.plamadeala [2026/05/25 10:59]
victoria.plamadeala [Software Design]
pm:prj2026:bianca.popa1106:victoria.plamadeala [2026/05/25 13:06] (current)
victoria.plamadeala [Hardware]
Line 79: Line 79:
 {{:​pm:​prj2026:​bianca.popa1106:​victoria.plamadeala:​schem_2.png?​400|}} {{:​pm:​prj2026:​bianca.popa1106:​victoria.plamadeala:​schem_2.png?​400|}}
  
- 
-===== Hardware Design ===== 
- 
-<note tip> 
-Aici puneţi tot ce ţine de hardware design: 
-  * listă de piese 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) 
-  * diagrame de semnal ​ 
-  * rezultatele simulării 
-</​note>​ 
  
  
Line 162: Line 152:
      - Sursa primara de alimentare a sistemului      - Sursa primara de alimentare a sistemului
      - Conectata prin AMS1117 -> 3.3V pentru ESP-01 si periferice      - Conectata prin AMS1117 -> 3.3V pentru ESP-01 si periferice
 +
 +
 +{{:​pm:​prj2026:​bianca.popa1106:​victoria.plamadeala:​whatsapp_image_2026-05-25_at_12.58.42.jpeg?​200|}}
 +{{:​pm:​prj2026:​bianca.popa1106:​victoria.plamadeala:​2.jpeg?​200|}}
 +
  
 **Componente din BOM-ul initial neutilizate in versiunea finala:** **Componente din BOM-ul initial neutilizate in versiunea finala:**
  
   - Camera OV7670 (CMOS VGA 640x480, fara FIFO)   - Camera OV7670 (CMOS VGA 640x480, fara FIFO)
-    Inlocuita cu telefon Android + IP Webcam din motivele explicate in +    Inlocuita cu telefon Android + IP Webcam din motivele explicate in decrierea ​generala (timing inadecvat pe ESP32-WROOM fara PSRAM). Datasheet OV7670 (pentru referinta): https://​www.voti.nl/​docs/​OV7670.pdf 
-    descrierea ​generala (timing inadecvat pe ESP32-WROOM fara PSRAM). +{{:​pm:​prj2026:​bianca.popa1106:​victoria.plamadeala:​camera.jpg?​100|}} ​    
-    ​Datasheet OV7670 (pentru referinta): +{{:​pm:​prj2026:​bianca.popa1106:​victoria.plamadeala:​camera_1.jpg?​100|}} 
-    ​https://​www.voti.nl/​docs/​OV7670.pdf+{{:​pm:​prj2026:​bianca.popa1106:​victoria.plamadeala:​img_7100.jpg?​100|}}
  
-**Telefon Android ​second-hand ​(camera IP)**+**Telefon Android ​vechi (camera IP)**
   - Functie: server video HTTP cu stream MJPEG si endpoint /photo.jpg   - Functie: server video HTTP cu stream MJPEG si endpoint /photo.jpg
   - App: IP Webcam (Pavel Khlebovich, gratuit pe Google Play)   - App: IP Webcam (Pavel Khlebovich, gratuit pe Google Play)
Line 203: Line 198:
  
   - **Multi-tasking FreeRTOS pe 2 core-uri** - loop principal pe Core 1 (PIR + MPU + heartbeat + safety), iar pe Core 0 ruleaza 3 task-uri pinned: taskBT (citire comenzi Bluetooth), taskSnap (snapshot HTTP via ESP-01), taskLog (scriere asincrona pe SD). Comunicatia inter-task se face prin queue-uri FreeRTOS si mutex-uri.   - **Multi-tasking FreeRTOS pe 2 core-uri** - loop principal pe Core 1 (PIR + MPU + heartbeat + safety), iar pe Core 0 ruleaza 3 task-uri pinned: taskBT (citire comenzi Bluetooth), taskSnap (snapshot HTTP via ESP-01), taskLog (scriere asincrona pe SD). Comunicatia inter-task se face prin queue-uri FreeRTOS si mutex-uri.
- 
   - **State machine pentru parser HTTP** - parser cu trei stari (WAIT_IPD, READ_DATA, finished) pentru a decoda raspunsul ESP-01 in chunks `+IPD,<​len>:<​data>​`,​ sari peste header-ul HTTP (pana la `\r\n\r\n`) si scriere a payload-ului JPEG direct pe SD octet cu octet, cu cap maxim de 150 KB si yield obligatoriu la 512 octeti pentru watchdog-ul ESP32.   - **State machine pentru parser HTTP** - parser cu trei stari (WAIT_IPD, READ_DATA, finished) pentru a decoda raspunsul ESP-01 in chunks `+IPD,<​len>:<​data>​`,​ sari peste header-ul HTTP (pana la `\r\n\r\n`) si scriere a payload-ului JPEG direct pe SD octet cu octet, cu cap maxim de 150 KB si yield obligatoriu la 512 octeti pentru watchdog-ul ESP32.
- 
   - **Filtru low-pass pentru MPU-6050** - detectia vibratiei pe usa foloseste un filtru exponential de tip `prev = (prev * 7 + curr) / 8` care actualizeaza baseline-ul lent, asa incat gravitatia constanta si drift-ul senzorului nu trigger-eaza fals-pozitive. Doar schimbarile bruste (delta > 2000 pe oricare axa) sunt considerate alerta.   - **Filtru low-pass pentru MPU-6050** - detectia vibratiei pe usa foloseste un filtru exponential de tip `prev = (prev * 7 + curr) / 8` care actualizeaza baseline-ul lent, asa incat gravitatia constanta si drift-ul senzorului nu trigger-eaza fals-pozitive. Doar schimbarile bruste (delta > 2000 pe oricare axa) sunt considerate alerta.
- 
   - **Debounce temporal pentru PIR si MPU** - intre doua alerte consecutive ale aceluiasi senzor trebuie sa treaca minim 5 secunde (`DEBOUNCE_MS`),​ pentru a evita spam-ul de alerte pe Bluetooth si snapshot-uri redundante.   - **Debounce temporal pentru PIR si MPU** - intre doua alerte consecutive ale aceluiasi senzor trebuie sa treaca minim 5 secunde (`DEBOUNCE_MS`),​ pentru a evita spam-ul de alerte pe Bluetooth si snapshot-uri redundante.
- 
   - **Counter persistent in NVS** - numarul snapshot-ului curent (`/​snap_NNN.jpg`) e salvat in NVS Preferences si supravietuieste reset-urilor,​ astfel incat numerotarea fisierelor e continua intre reboots.   - **Counter persistent in NVS** - numarul snapshot-ului curent (`/​snap_NNN.jpg`) e salvat in NVS Preferences si supravietuieste reset-urilor,​ astfel incat numerotarea fisierelor e continua intre reboots.
- 
   - **Ceas de sistem din timpul de compilare** - la fiecare upload, sketch-ul citeste `__DATE__` si `__TIME__` la compile-time,​ le converteste in `time_t` cu `mktime()` si seteaza ceasul de sistem cu `settimeofday()`. Comanda Bluetooth `T<​iso_date>​` permite corectarea manuala in timpul rularii.   - **Ceas de sistem din timpul de compilare** - la fiecare upload, sketch-ul citeste `__DATE__` si `__TIME__` la compile-time,​ le converteste in `time_t` cu `mktime()` si seteaza ceasul de sistem cu `settimeofday()`. Comanda Bluetooth `T<​iso_date>​` permite corectarea manuala in timpul rularii.
- 
   - **Eliberare memorie BLE neutilizata** - apel `esp_bt_controller_mem_release(ESP_BT_MODE_BLE)` la pornire elibereaza ~30 KB DRAM care altfel ar fi rezervati pentru stiva BLE pe care nu o folosim.   - **Eliberare memorie BLE neutilizata** - apel `esp_bt_controller_mem_release(ESP_BT_MODE_BLE)` la pornire elibereaza ~30 KB DRAM care altfel ar fi rezervati pentru stiva BLE pe care nu o folosim.
  
Line 248: Line 237:
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Am obtinut un sistem de securitat rudimentar de usa prin intermediul a doi senzori de miscare si a unui telefon vechi pe post de camera.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
 +Pe viitor, proiectul ar putea fi imbunatatit prin:
 +  - Folosirea unui modul de camera mai performant si mai mic (decat un telefon) pentru a nu iesi in evidenta; ideal ar fi ca aceasta camera sa poata fi pusa in locul unui vizor. De-asemenea,​ din moment ce senzorii detecteaza orice fel de miscare (nu ar putea face diferenta dintre miscarea din interiorul casei vs miscarea de dupa usa), rezolutia camerei ar trebui sa fie destul de buna pentru ca microcontoller-ul sa poata analiza fluxul de imagini: detectarea miscarii se fie pe baza fluxului de imagini, eventual cu ajutorul inteligentei artificiale ​
 +  - Implementarea unei aplicatii de mobil prin care alertele de miscare sa nu depinda de conexiunea bluetooth. In momentul de fata, sistemul de securitate ar fi functional doar daca utilizatorul este in aceeasi camera / proximitate cu componentele fizice. In viata reala, acest sistem nu este fiabil. Printr-o aplicatie de mobil care ar functiona prin intermediul WIFI-ului, utilizatorul ar putea vedea alertele si daca nu s-ar afla la domiciliu
 +  - Crearea unui PCB in loc de breadboard / placute de prototipare
 +  - Crearea unei carcase 3D mai compacte si mai mici
 ===== Concluzii ===== ===== Concluzii =====
  
 +In concluzie, a fost un proiect interesant si este un MVP (minimal viable product). Imbunatatirea acestuia ar putea constitui un adevarat sistem de securitate si chiar si lucrarea de licenta, cine stie 8-O
 ===== Download ===== ===== Download =====
  
Line 264: Line 257:
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +Proietul a suferit niste schimbari majore in implementare. ​ 
-Puteți avea și o secțiune ​de jurnal în care să poată urmări asistentul ​de proiect ​progresul ​proiectului. +  - Modulul ​de camera OV7670 nu a fost destul ​de performant pentru acest proiect ​si a fost nevoie de schimbarea acestuia cu un telefon vechi pe post de camera. Astfel ca au fost si niste schimbari in arhitectura ​proiectului: folosirea unui modul de WIFI separat de placuta ESP32 si folosirea unui server web
-</​note>​ +  - Dupa implementarea de pe breadboard, am decis sa folosesc placute de prototipare si lipituri, insa am facut o eroare si s-au ars in proces doua componente (placuta ESP32 si modulul de WIFI). Mi-am comandat din nou aceste componente si am implementat din nou proiectul pe breadboard pentru prezentare la PM Fair.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
pm/prj2026/bianca.popa1106/victoria.plamadeala.1779695967.txt.gz · Last modified: 2026/05/25 10:59 by victoria.plamadeala
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0