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/04 14:23]
daniel.malanca created
pm:prj2026:andrei.batasev:daniel.malanca [2026/05/24 13:44] (current)
daniel.malanca
Line 1: Line 1:
-====== ​Nume proiect ​======+====== ​ETH - Enviromental Telemetry Hub ====== 
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> +Proiectul ETH (Environmental Telemetry Hub) reprezinta un sistem IoT (Internet of Things) pentru monitorizarea conditiilor ​de mediu dintr-o incapere.
-Prezentarea pe scurt a proiectului vostru: +
-  * ce face +
-  * care este scopul lui +
-  * care a fost ideea de la care aţi pornit +
-  * de ce credeţi că este util pentru alţii şi pentru voi +
-</​note>​ +
-===== Descriere generală =====+
  
-<note tip> +Sistemul colecteaza date in timp real despre temperaturaumiditatea aerului si nivelul ​de lumina ambientala, pe care le trimite atat la un dashboard online precum si pe un ecran local, declansand alarme vizuale si sonore cand parametrii ies din valorile optime.
-O schemă bloc cu toate modulele proiectului vostruatât software cât şi hardware însoţită ​de o descriere a acestora precum şi a modului în care interacţionează.+
  
-Exemplu ​de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html +Scopul principal este mentinerea unui mediu de lucru sau de locuit sanatos si confortabil,​ sau mentinerea unui mediu pretentios (plante, echipamente electronice,​ muzee) in parametri optimi, informand utilizatorul cand trebuie sa ia masuri (ex. sa aeriseasca o camera, sa porneasca caldura sau sa adjusteze lumina ambientala). 
-</note>+ 
 +===== Descriere generala ===== 
 + 
 +{{ https://ocw.cs.pub.ro/courses/_media/​pm/​prj2026/​andrei.batasev/​daniel.malanca_block_diagram.png?800 }} 
 + 
 +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:​** 
 +  * **Modul Central:** Microcontroller ESP32. 
 +  * **Module de Intrare (Input):​** 
 +    * **DHT11:** Modul digital care transmite catre ESP32 valorile masurate pentru temperatura mediului ambiant si umiditatea relativa. 
 +    * **Fotorezistor (LDR):** Folosit intr-un divizor de tensiune, ofera o tensiune variabila citita de modulul ADC al ESP32-ului, care determina intensitatea luminoasa. 
 +  * **Module de Iesire (Output):​** 
 +    * **Infrastructura Online:** Datele colectate sunt trimise catre un VPS aflat online, care permite vizualizarea istoricului acestora. 
 +      * **Broker MQTT** - Mosquitto - Colecteaza datele trimise de sistem. 
 +      * **Baza de date** - InfluxDB v2 - Stocheaza datele colectate 
 +      * **Dashboard** - Grafana - Permite afisarea datelor colectate 
 +    * **Display OLED SSD1306:** Ecran ce primeste comenzi prin protocol I2C pentru a afisa parametrii exacti masurati si mici elemente de interfata. 
 +    * **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. 
 + 
 +===== 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 =====
  
-<note tip> +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​andrei.batasev/​daniel.malanca_electric.png?​1200}} 
-Aici puneţi tot ce ţine de hardware design+ 
-  * listă ​de piese +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​andrei.batasev/​daniel.malanca_hardware.jpg?​800}} 
-  * scheme electrice ​(se pot lua şi de pe Internet şi din datasheet-uri, e.ghttp://www.captain.at/electronic-atmega16-mmc-schematic.png) + 
-  diagrame de semnal ​ +^ Qty ^ Price (RON) ^ Item ^ Link ^ 
-  rezultatele simulării +| 1 | 60.35 | ESP32 WROOM 32D | [[https://​www.emag.ro/​modul-esp32-devkitc-v4-rqiurpn-esp32-wroom-32d-wifi-bluetooth-microusb-11-kfb-esp32-32d/​pd/​D9HL8L3BM/​|Link]] | 
-</note>+| 1 | 2.13 | Modul Led RGB | [[https://​www.bitmi.ro/​modul-led-rgb-3-culori-10401.html|Link]] | 
 +| 1 | 2.99 | Buzzer Pasiv | [[https://​www.bitmi.ro/​module-electronice/​modul-buzzer-pasiv-ky-006-10678.html|Link]] | 
 +| 1 | 18.98 | SSD1306 | [[https://​www.bitmi.ro/​electronica/​ecran-oled-0-96-cu-interfata-iic-i2c-10488.html|Link]] | 
 +| 1 | 6.99 | DHT11 | [[https://​www.bitmi.ro/​electronica/​modul-senzor-de-temperatura-si-umiditate-dht11-compatibil-arduino-10393.html|Link]] | 
 +| 1 | 1.49 | Fotorezistor ​(tip 5528) | [[https://​www.optimusdigital.ro/​ro/​componente-electronice-altele/​1863-fotorezistor-tip-5528.html|Link]] | 
 +| 1 | 0.1 | Rezistor 10k | [[https://​www.optimusdigital.ro/​ro/​componente-electronice-rezistoare/​1088-rezistor-025w-100k.html|Link]] | 
 +| 1 | 13.99 | Breadboard 830 | [[https://​www.bitmi.ro/​electronica/​breadboard-830-puncte-mb-102-10500.html|Link]] | 
 +| 1 | 9.99 | Set Fire Dupont tata-tata 10cm | [[https://​www.bitmi.ro/​electronica/​set-de-65-fire-dupont-tata-tata-9-16-cm-10638.html|Link]] | 
 +| 1 | 6.99 | Set Fire Dupont tata-mama 20cm | [[https://www.bitmi.ro/electronica/​40-x-fire-dupont-tata-mama-20cm-10512.html|Link]] | 
 +| | 124.00 | | 
 + 
 +^ Componenta ^ Pin Componenta ^ Net Label ^ Pin ESP32 ^ Functie ^ 
 +**Ecran OLED** | SDA | ''​I2C_SDA''​ | **IO21** | Date I2C | 
 +**Ecran OLED** | SCL | ''​I2C_SCL''​ | **IO22** | Ceas I2C | 
 +| **Senzor DHT11** | DATA | ''​DHT_DATA''​ | **IO4** | Date digitale Temp/Umiditate | 
 +| **LED RGB** | R (Rosu) | ''​LED_R''​ | **IO25** | Control PWM Rosu | 
 +| **LED RGB** | G (Verde) | ''​LED_G''​ | **IO26** | Control PWM Verde | 
 +| **LED RGB** | B (Albastru) | ''​LED_B''​ | **IO27** | Control PWM Albastru | 
 +| **Senzor LDR** | Midpoint | ''​LDR''​ | **IO34** | Intrare Analogica (ADC) | 
 +| **Buzzer** | S (Semnal) | ''​BUZZER''​ | **IO33** | Iesire PWM | 
  
 ===== 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.
  
  
-<note tip> +==== DHT11 ==== 
-Descrierea codului aplicaţiei (firmware):​ +Senzorul DHT11 este un senzor ieftin, consacrat in industrie si de incredereAcesta foloseste un protocol proprietar single wire pentru transmisia datelormotiv pentru care am folosit o biblioteca ​(dht.c) pentru citirea valorilor.
-  * mediu de dezvoltare (if any) (e.g. AVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party ​(e.gProcyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+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℃)
  
-<note tip> +==== Senzor GL5528 ==== 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +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.
-</​note>​+
  
-===== Concluzii =====+1. Calculul Rezistentei LDR 
 +Rezistenta curenta a senzorului (''​R_ldr''​) se calculeaza din valoare bruta ADC astfel:
  
-===== Download =====+''​R_ldr ​R_fixed * ((4095 / ADC_Raw) - 1)''​
  
-<note warning>​ +2. Calculul Iluminarii ​(Lux)
-O arhivă ​(sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă ​este cazul)**Exemplu:** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +Relatia dintre rezistenta LDR si nivelul ​de lumina ​este log-liniaraFormula standard pentru conversie este:
-</​note>​+
  
-===== Jurnal =====+''​Lux ​10 * (R10 / R_ldr) ^ (1 / Gamma)''​
  
-<note tip+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.  
-Puteți avea și secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului+ 
-</note>+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-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 
 + 
 +===== Rezultate Obtinute ===== 
 + 
 +<​html>​<a href="​https:​//​drive.google.com/​file/​d/​1AF1xj1J54qJoGAdxvQm7j4wwsGwPy_x1/​view"​>Link</​a></​html>​ Video Demo 
 + 
 +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. 
 + 
 +===== 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 =====
  
-<note+<html><​a href="​https://​cdn.sparkfun.com/​datasheets/​Sensors/​LightImaging/​SEN-09088.pdf">​Datasheet LDR GL5528</​a></​html
-Listă cu documente, ​datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+ 
-</note>+<​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.1777893789.txt.gz · Last modified: 2026/05/04 14:23 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