Environmental Comfort Monitor

Autor: Dincă Tudor-Cristian 332CA

Introducere

Descrierea proiectului
Environmental Comfort Monitor este un sistem integrat care monitorizează condițiile ambientale în timp real, folosind o varietate de senzori. Acesta detectează temperatura, umiditatea, nivelul de zgomot, luminozitatea ambientală, presiunea atmosferică, factorul UV și prezența gazelor inflamabile sau fumului. Datele sunt afișate pe un ecran LCD 1602 și transmise prin Wi-Fi către un telefon sau laptop pentru acces de la distanță. Utilizatorul poate comuta între moduri predefinite de operare (Home, Outdoor, GreenHouse etc.) folosind un buton dedicat.

Scopul proiectului
Scopul proiectului este de a crea un sistem de monitorizare portabil și adaptabil care poate fi folosit pentru a evalua confortul și siguranța mediului în diverse scenarii. Prin alertarea vizuală pe ecran în cazul depășirii anumitor praguri critice (de exemplu, temperatură prea ridicată sau prezența gazelor), proiectul oferă un mijloc practic de prevenție și control al calității mediului.

Ideea proiectului
Ideea a pornit de la necesitatea de a avea o soluție accesibilă și portabilă pentru monitorizarea confortului ambiental, atât în interiorul locuinței, cât și în medii mai sensibile, cum ar fi serele (GreenHouse) sau spațiile deschise. S-a dorit un sistem ușor de utilizat, cu afișaj local și conectivitate wireless pentru monitorizare de la distanță.

Utilitatea proiectului
Acest sistem este util deoarece poate fi aplicat în multiple domenii — de la monitorizarea unei camere de locuit, până la supravegherea condițiilor climatice într-o seră sau a calității aerului în spații urbane. Pentru utilizatori obișnuiți, oferă un mod simplu de a înțelege mediul în care trăiesc. Pentru dezvoltatori sau pasionați de IoT, oferă o platformă extensibilă pentru testare și învățare.

Descriere generală

Proiectul se bazează pe microcontrolerul ESP32-WROOM, alimentat cu 5V de la sursa de alimentare, care primește 9V de la suportul de baterii 6xAA. Senzorul de temperatură și umiditate DHT22 este conectat la un pin GPIO și alimentat cu 3.3V, în timp ce senzorul de gaz MQ-2 folosește o intrare analogică (ADC) și necesită 5V pentru funcționare optimă. Senzorul UV GUVA-S12SD este conectat tot la o intrare analogică, dar funcționează la 3.3V. Pentru măsurarea presiunii atmosferice, senzorul BMP280 comunică prin interfața SPI și este alimentat cu 3.3V. Modulul comparator LM393 și fotorezistorul pentru detectarea luminii sunt conectați la pini GPIO, respectiv ADC, ambele primind 3.3V. Display-ul LCD 1602 comunică prin interfața I²C și funcționează la 5V, iar un buton pentru controlul sistemului este conectat la un pin GPIO cu alimentare de 3.3V. Butonul permite ciclarea între starile “Home”, “Outdoor” sau “GreenHouse”, fiecare afișând parametri specifici pe LCD-ul 1602 prin rotație (primele două valori sunt afișate, apoi următoarele, în funcție de capacitatea ecranului). Toate componentele sunt montate pe un breadboard, unde sursa de alimentare distribuie tensiunile necesare de 3.3V și 5V pentru funcționarea corectă a fiecărui element. În plus, modulul ESP32 folosește conexiunea Wi-Fi integrată pentru a transmite toate datele colectate către un site web, unde acestea pot fi vizualizate și monitorizate de la distanță.

Schemă bloc

Hardware Design

Listă de piese

Nume piesă Descriere Link Datasheet
ESP32-WROOM Microcontroller ESP32 Optimus Digital Datasheet
DHT22 Senzor de tempertură și umiditate Optimus Digital Datasheet
MQ-2 Senzor de gaze Optimus Digital Datasheet
GUVA-S12SD Senzor solar UV Optimus Digital Datasheet
BMP280 Senzor de presiune barometrică Optimus Digital Datasheet
Microfon Senzor de sunet Optimus Digital Datasheet
Fotorezistor Fotorezistor Optimus Digital Datasheet
LCD 1602 Liquid Crystal Display Optimus Digital Datasheet
Sursă de alimentare Sursă de alimentare pentru breadboard Optimus Digital Datasheet
Suport 6 x AA Suport pentru 6 baterii AA Optimus Digital Datasheet
Buton Buton 6x6x6 Optimus Digital Datasheet
Restul componentelor breadboard 830 puncte, rezistențe, fire mamă-mamă, tată-tată, mamă-tată

Schemă electrică

Software Design

Mediu de dezvoltare
Proiectul a fost dezvoltat utilizând PlatformIO în cadrul Visual Studio Code, cu suport pentru framework-ul Arduino. Această soluție permite o gestionare eficientă a bibliotecilor, o integrare bună cu sistemele de control al versiunilor și un flux de lucru optim pentru dezvoltarea pe microcontrolerul ESP32-WROOM.

Biblioteci și surse third-party utilizate
Pentru integrarea hardware și accelerarea dezvoltării software au fost folosite următoarele biblioteci externe:

  • `iakop/LiquidCrystal_I2C_ESP32@^1.1.6` – control LCD 1602 prin I2C.
  • `adafruit/DHT sensor library@^1.4.4` – citire temperatură și umiditate (DHT22).
  • `adafruit/Adafruit BMP280 Library@^2.1.0` – citire temperatură și presiune atmosferică (BMP280).

Algoritmi și structuri implementate / planificate

  • Citirea și normalizarea datelor senzorilor: temperatură, umiditate, presiune, zgomot, UV, lumină, calitatea aerului.
  • Calculul scorului de confort prin combinarea ponderată a valorilor normalizate.
  • Gestionarea modurilor de afișare pe LCD, schimbabile prin buton fizic și interfață web.
  • Debounce software pentru buton, prevenind citiri multiple nedorite.
  • Interfață web dinamică: afișare valori în timp real și control mod afișaj.
  • Structuri de date pentru configurare, limite și ponderi, scalabile și ușor de întreținut.

Funcțiile principale din cod și rolul lor

  • Inițializare și control principal
    • setup() – Inițializează senzori, LCD, WiFi și server web.
    • loop() – Gestionează conexiunea WiFi, cererile web, butonul și actualizează afișajul LCD.
  • Gestionarea butonului și modurilor de afișare
    • handleButton() – Detectează apăsarea butonului cu debounce și schimbă modul afișat.
    • handleSetMode() – Preia cereri web pentru schimbarea modului afișat.
  • Citirea senzorilor
    • readTemperature(), readHumidity(), readPressure(), readNoise(), readUVIndex(), readLightLevel(), readAirQuality() – Funcții dedicate pentru citirea valorilor senzorilor conectați.
  • Procesarea datelor și calculul confortului
    • normalizeValue() – Normalizează o valoare în funcție de limitele ideale și acceptabile.
    • processComfortParam() – Calculează punctajul ponderat pentru un parametru de confort.
    • calculateComfortScore() – Calculează scorul total de confort bazat pe parametrii relevanți.
  • Afișaj pe LCD
    • displayModeOnLCD() – Afișează modul curent și valorile măsurate, cicland prin metrici.
    • formatShortMetric() – Formatează valorile senzorilor pentru afișare scurtă pe LCD.
  • Interfața web
    • handleRoot() – Servește pagina web principală.
    • generateWebPage() – Construiește pagina HTML completă cu datele senzorilor și butoane pentru schimbarea modului.
    • renderMetric() – Generează secțiuni HTML pentru fiecare metrică afișată.
    • generateWarnings() – Creează lista de avertismente pe baza valorilor ce depășesc limitele de confort.

Laboratoare folosite

  • Laboratorul 0: GPIO – Buton fizic (input digital)
  • Laboratorul 4: ADC – Senzori calitate aer, lumină, UV (citire analogică)
  • Laboratorul 5: SPI – Senzor BMP280
  • Laboratorul 6: I2C – LCD 1602
  • BONUS: Wi-Fi – Conexiune la rețea, interfață web (server HTTP)

Rezultate Obţinute

În urma procesului de dezvoltare, s-a realizat un dispozitiv funcțional de monitorizare ambientală — Environmental Comfort Monitor — capabil să colecteze, să evalueze și să afișeze în timp real date esențiale despre mediul înconjurător. Sistemul oferă un scor de confort calculat inteligent pe baza parametrilor măsurați (temperatură, umiditate, presiune, UV, lumină, calitate aer), integrare Wi-Fi pentru acces web și o interfață LCD intuitivă. Fiabil, portabil și extensibil, acest dispozitiv se dovedește util atât în locuințe personale, cât și în aplicații educaționale sau semi-industriale.

Un clip demonstrativ: Demo proiect

Vedere din față:

Vedere din lateral:

Suportul de baterii este detașabil:

Concluzii

Proiectul Environmental Comfort Monitor oferă o soluție portabilă și versatilă pentru monitorizarea parametrilor de mediu, adresându-se unei game largi de utilizatori: de la utilizatori casnici interesați de confortul din locuințe, până la specialiști în monitorizarea ecosistemelor, mediilor urbane sau ferme inteligente. Sistemul furnizează date precise și actualizate în timp real, prin intermediul afișajului LCD și al unei interfețe web dinamice, asigurând accesibilitate și flexibilitate pentru utilizatori cu niveluri tehnice diverse.

Posibile îmbunătățiri

Pentru optimizarea și extinderea funcționalității, sunt propuse următoarele îmbunătățiri tehnice:

  • Integrarea platformelor cloud pentru stocarea și analiza pe termen lung a datelor colectate.
  • Implementarea notificărilor automate în caz de depășire a limitelor parametrilor de confort.
  • Dezvoltarea unui dashboard web avansat, cu vizualizări grafice și istoricul măsurătorilor, pentru o monitorizare detaliată și analitică.

Download

Codul proiectului Environmental Comfort Monitor este disponibil pe GitHub:

Jurnal

28.04.2025: Confirmare temă de proiect
01.05.2025: Stabilirea cerințelor funcționale și achiziția componentelor electronice
05.05.2025: Redactarea documentației tehnice (Introducere + Descriere generală)
06.05.2025: Ridicarea componentelor comandate
07.05.2025: Montarea senzorilor pe breadboard și testarea funcționalității de bază
08.05.2025: Configurarea afișajului LCD și validarea funcționalității acestuia
09.05.2025: Integrarea funcționalităților Wi-Fi și dezvoltarea interfeței de afișare a datelor la distanță
11.05.2025: Comandarea componentelor pentru management energetic și adăugarea secțiunii Hardware Design în documentația de tip wiki
12.05.2025: Ridicarea componentelor suplimentare și integrarea acestora în proiect
15.05.2025: Redesenare schemă bloc
20.05.2025: Adăugare butoane interactive pe web, scor de comfort al mediului și avertizări
21.05.2025: Finalizare secțiune Software

Bibliografie/Resurse

pm/prj2025/mdinica/tudor.dinca.txt · Last modified: 2025/05/29 16:53 by tudor.dinca
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