Differences

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

Link to this comparison view

pm:prj2026:andrei.batasev:daniel.malanca [2026/05/15 08:32]
daniel.malanca
pm:prj2026:andrei.batasev:daniel.malanca [2026/05/24 13:44] (current)
daniel.malanca
Line 13: Line 13:
 {{ https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​andrei.batasev/​daniel.malanca_block_diagram.png?​800 }} {{ https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​andrei.batasev/​daniel.malanca_block_diagram.png?​800 }}
  
-Proiectul functioneaza pe baza unui microcontroler ​ESP32 care actioneaza ca unitate centrala, care colecteaza date de la senzori si actioneaza diversi actuatori.+Proiectul functioneaza pe baza unui microcontroller ​ESP32 care actioneaza ca unitate centrala, care colecteaza date de la senzori si actioneaza diversi actuatori.
  
 **Schema bloc a sistemului:​** **Schema bloc a sistemului:​**
-  * **Modul Central:​** ​Microcontroler ​ESP32.+  * **Modul Central:​** ​Microcontroller ​ESP32.
   * **Module de Intrare (Input):**   * **Module de Intrare (Input):**
     * **DHT11:** Modul digital care transmite catre ESP32 valorile masurate pentru temperatura mediului ambiant si umiditatea relativa.     * **DHT11:** Modul digital care transmite catre ESP32 valorile masurate pentru temperatura mediului ambiant si umiditatea relativa.
Line 28: Line 28:
     * **LED RGB:** Indicator de stare comandat prin semnale PWM. Semnaleaza starea generala prin diverse culori si pulsatii.     * **LED RGB:** Indicator de stare comandat prin semnale PWM. Semnaleaza starea generala prin diverse culori si pulsatii.
     * **Buzzer:** Un modul audio actionat de un pin digital pentru a emite semnale acustice de avertizare in caz de parametrii critici.     * **Buzzer:** Un modul audio actionat de un pin digital pentru a emite semnale acustice de avertizare in caz de parametrii critici.
 +
 +===== Elemente de originalitate si complexitate =====
 +
 +Desi monitorizarea ambientala este un concept comun, acest proiect se diferentiaza prin rigoarea implementarii tehnice:
 +
 +  * **Procesare avansata a semnalelor analogice:​** Pentru citirea luminozitatii,​ s-a implementat o filtrare a zgomotului prin medierea a 64 de esantioane intr-o fereastra de 20ms, urmata de un clipping la intervalul de liniaritate al ADC controller-ului de pe ESP32.
 +  * **Arhitectura software bazata pe RTOS:** Trecerea de la o bucla de executie secventiala la task-uri FreeRTOS asigura ca citirea senzorilor cu timing strict (DHT11) nu este blocata de latentele retelei (MQTT).
 +  * **Sistem hibrid de alertare:** Sistemul functioneaza independent;​ ofera alarme locale (Buzzer/​RGB) in timp real, concomitent cu persistenta datelor in infrastructura de Cloud containerizata (InfluxDB + Grafana).
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 60: Line 68:
  
 ===== Software Design ===== ===== Software Design =====
 +Firmware-ul va fi dezvoltat in limbajul C, folosind framework-ul oficial ESP-IDF prin PlatformIO, permitand utilizarea conceptelor low-level invatate la laboratoare. Pentru implementarea multitasking-ului (ecran, senzori, networking) este folosit FreeRTOS.
  
-**Mediul de dezvoltare:​** 
-Firmware-ul va fi dezvoltat in limbajul C, folosind framework-ul oficial ESP-IDF prin PlatformIO. Acest mediu ofera un control avansat si precis asupra resurselor hardware ale microcontrolerului ESP32. ​ 
  
-Arhitectura server-side va fi bazata pe un singur docker-compose folosind containere preexistente pentru a asigurara o configuratie simplaintuitiva ​si modulara.+==== DHT11 ==== 
 +Senzorul DHT11 este un senzor ieftinconsacrat in industrie ​si de incredere. Acesta foloseste un protocol proprietar single wire pentru transmisia datelor, motiv pentru care am folosit o biblioteca (dht.c) pentru citirea valorilor.
  
-**Senzori**+Pentru calibrare am comparat rezultatele obtinute de acesta cu cele ale unui termometru digital, si am constatat ca se incadreaza in parametrii normali de eroare (umiditate ±5%, temperatura ±2℃)
  
-Pentru calibrarea senzorilor voi efectua urmatoarele:​+==== Senzor GL5528 ==== 
 +Senzorul fotorezistiv este conectat la o sursa de 3.3V, avand o rezistenta fixa de 10k Ohmi conectata la masa (GND). Acest circuit formeaza un divizor de tensiune, iar nivelul de tensiune este masurat de convertorul analog-digital (ADC) al placii ESP32.
  
-  * **DHT11** - Voi compara rezultatele obtinute ​de acesta ​cu cele ale unui termometru digital, si voi constata incadrarea ​in parametrii ​normali ​de eroare.+1. Calculul Rezistentei LDR 
 +Rezistenta curenta a senzorului (''​R_ldr''​) se calculeaza din valoare bruta ADC astfel: 
 + 
 +''​R_ldr = R_fixed ​((4095 / ADC_Raw) - 1)''​ 
 + 
 +2. Calculul Iluminarii (Lux) 
 + 
 +Relatia dintre rezistenta LDR si nivelul de lumina este log-liniara. Formula standard pentru conversie este: 
 + 
 +''​Lux = 10 (R10 / R_ldr) ^ (1 / Gamma)''​ 
 + 
 +Deoarece datasheet-ul ofera un interval destul ​de larg pentru valoare R10 (8k - 20k), am decis sa calibrez valoarea prin comparatie ​cu un senzor de referinta (al telefonului). Astfel am plasat cei doi senzori cat mai apropiat si paraleli, si am colectat date.  
 + 
 +In urma calibrarii am obtinut ca senzorul meu are o valoare R10 de 17k Ohm, iar Gamma este conform specificatiei de 0.7. 
 + 
 +Deoarece ADC-ul intern al controller-ului ESP32 se comporta neliniar la capete, am decis sa fac clip la valorile acestuia intr-un interval care sa excluda capetele (<100mV, >​3100mV). 
 + 
 +Pentru anularea zgomotului implementat luarea mediei a 64 de esantioane luate la interval de 312 microsecunde (20ms in total), intr-o sectiune critica de cod. 
 + 
 +==== Buzzer pasiv ==== 
 +Un buzzer pasiv este folosit pentru a semnala situatii de urgenta (temperatura,​ umiditate iesite din parametrii de siguranta) folosind un semnal PWM 
 + 
 +==== Led RGB ==== 
 +Un LED RGB este folosit pentru ​ a semnala situatia curenta (parametrii optimi sau nu). 
 + 
 +==== Ecran OLED 0.96 SSD1306 ==== 
 +Ecranul OLED de 0.96 inch echipat cu controller-ul SSD1306 este un display ce permite afisarea culorilor albastru si galben pe un fundal negru, cu o rezolutie tipica de 128x64 pixeli.  
 + 
 +Comunicarea este realizata folosind biblioteca SSD1306 prin protocolul I2C. 
 + 
 +Ecranul este folosit pentru afisarea valorilor in timp real. 
 + 
 +==== Modul Wi-Fi ==== 
 +Modulul Wi-Fi prezent pe placa de dezvoltare ESP32 este folosit pentru a trimite datele inregistrate prin protocolul mqtt catre un broker Mosquitto, pentru a fi stocate si ulterior afisate de dashboard. 
 + 
 +Pentru implementarea protocolului MQTT este folosita biblioteca esp-mqtt. 
 + 
 + 
 +===== Dashboard ===== 
 +Arhitectura server-side este bazata pe un singur docker-compose folosind containere preexistente pentru a asigurara o configuratie simpla, intuitiva si modulara. 
 + 
 +===== Laboratoare Folosite ===== 
 + 
 +* Laboratorul 0 - GPIO + Laboratul 3 - Timere. PWM 
 +  - Gestionarea led-ului RGB si a buzzer-ului passiv folosind LEDC 
 + 
 +* Laboratorul 1 - UART 
 +  - UART este protocolul folosit pentru incarcarea codului pe placa, precum si pentru monitorizarea output-ului de debug emis de aceasta. 
 + 
 +* Laboratorul 2 - Intreruperi 
 +  - Am introdus un ISR pentru prelucrarea garantata a butonului de intrerupere a alarmei 
 + 
 +* Laboratorul 4 - ADC 
 +  - Valoarea rezistentei LDR este dedusa din tensiunea masurata de controller-ul ADC 
 + 
 +* Laboratorul 6 - I2C 
 +  - Ecranul OLED SSD1306 este controlat prin protocolul I2C
  
-  * **Fotorezistor** - Voi folosi senzorul de luminozitate al telefonului ca benchmark, si voi determina formula si parametrii care aduc valoarea de tensiune la o valoare de intensitate care corespunde celei de benchmark. 
 ===== Rezultate Obtinute ===== ===== Rezultate Obtinute =====
  
-===== Concluzii =====+<​html><​a href="​https://​drive.google.com/​file/​d/​1AF1xj1J54qJoGAdxvQm7j4wwsGwPy_x1/​view">​Link</​a></​html>​ Video Demo
  
-===== Download =====+Am reusit sa duc la capat proiectul, obtinand ceea ce mi-am propus la inceput: un sistem IoT care monitorizeaza un mediu si alerteaza cand sunt depasite constragerile acestuia.
  
-===== Jurnal ​=====+===== Concluzii ​===== 
 + 
 +Pentru imbunatatirea proiectului exista urmatoarele posibilitati:​ 
 +  - Folosire unor senzori cu precizie si acuratete mai mare 
 +  - Folosirea unui PCB custom pentru minimizarea proiectului 
 +  - Optimizarea pentru Power Consumption,​ permitand functionarea pe durate lungi fara alimentare externa ​
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-Link catre repository ​- <​html><​a href="​https://​github.com/​Daniel729/​eth">​GitHub</​a></​html>​+<​html><​a href="​https://​cdn.sparkfun.com/​datasheets/​Sensors/​LightImaging/​SEN-09088.pdf">​Datasheet LDR GL5528</​a></​html>​ 
 + 
 +<​html><​a href="​https://​www.mouser.com/​datasheet/​2/​758/​DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf">​Datasheet DHT11</​a></​html>​ 
 + 
 +<​html><​a href="​https://​github.com/​Daniel729/​eth">​GitHub</​a></​html>​ 
 + 
 +<​html><​a href="​https://​mdaniel.me/​d/​adfhwpd/​eth-sensor-data?​orgId=1&​from=now-30m&​to=now&​timezone=browser">​Dashboard</​a></​html>​
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2026/andrei.batasev/daniel.malanca.1778823120.txt.gz · Last modified: 2026/05/15 08:32 by daniel.malanca
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