BEEP & Heat – Statia meteo cu alerta sonora si vizuala - Niculici Mihai

Prezentarea pe scurt a proiectului

  • Ce face proiectul:

Proiectul meu este o statie meteo de interior realizata cu Arduino, care masoara temperatura si umiditatea folosind un senzor DHT11. Valorile sunt afisate pe un ecran LCD, iar sistemul ofera feedback vizual printr-un LED RGB si alerta sonora cu un buzzer daca temperatura devine prea mare. Datele sunt transmise si prin UART catre un PC.

  • Care este scopul lui:

Scopul proiectului este sa monitorizez in timp real conditiile de mediu dintr-o camera si sa fiu avertizat rapid in caz de temperatura ridicata, folosind componente simple, dar integrate eficient.

  • Care a fost ideea de la care am pornit:

Am vrut sa creez un proiect aplicat, care sa combine mai multe concepte din laboratoarele de PM intr-un mod functional si vizibil. Ideea a pornit de la nevoia de a avea un sistem de monitorizare ambientala usor de realizat si util in viata de zi cu zi.

  • De ce cred ca este util pentru altii si pentru mine:

Este un proiect educativ si practic – oricine vrea sa urmareasca confortul termic dintr-un spatiu inchis poate beneficia de el. Pentru mine, este o ocazie buna sa exersez integrarea senzorilor cu microcontrollerul si sa aplic in mod concret cunostintele din curs si laboratoare.

Descriere generala

Proiectul utilizeaza urmatoarele componente hardware, conectate pe o placa de prototipare PCB 10×10 cm. Interconectarea se face prin fire cu pas de 2.54 mm, iar alimentarea se realizeaza prin cablul USB conectat la placa Arduino. </note>

Schema bloc a proiectului

Aceasta este schema bloc a sistemului, care ilustreaza modul in care componentele hardware interactioneaza cu placa Arduino UNO. Arduino actioneaza ca unitate centrala de control, colectand date de la senzori si controland perifericele de afisare si alerta.

Schema bloc – BEEP & Heat

Descriere hardware si conexiuni

Ca functionalitati, proiectul foloseste urmatoarele concepte studiate in cadrul laboratoarelor:

  • PWM – pentru reglarea intensitatii si a culorii LED-ului RGB, in functie de temperatura.
  • Intreruperi externe – pentru comutarea unitatilor de masura afisate pe ecran, folosind un buton conectat la un pin digital.
  • I2C – pentru comunicarea cu ecranul LCD 16×2.
  • Placa de dezvoltare – Arduino UNO R3

Arduino UNO R3 – OptimusDigital

Rol: unitatea centrala care gestioneaza senzorii, afisajul, LED-ul RGB si buzzerul. De asemenea, transmite informatii prin UART catre un monitor serial.

  • LED RGB

LED RGB – OptimusDigital

Rol: semnalizare vizuala a temperaturii (albastru – rece, verde – optim, rosu – cald).

  • Senzor de temperatura si Umiditate – DHT22

Modul Senzor de Temperatura și Umiditate DHT22 – OptimusDigital

Rol: masurare temperatura si umiditate si comunicarea acestor informatii cu Arduino.

  • Ecran LCD 16×2 cu interfata I2C

LCD 1602 cu I2C – OptimusDigital

Rol: afisarea in timp real a temperaturii si umiditatii.

  • Buzzer pasiv 5V

Buzzer Pasiv de 5V – OptimusDigital

Rol: alerta sonora cand temperatura depaseste un prag.

  • Placa de prototipare PCB 10×10 cm

Placa PCB – OptimusDigital

Rol: organizarea componentelor hardware intr-un mod curat si stabil.

Bill of Materials (BOM)

Componenta Cant. Link produs Datasheet Pret (RON)
Arduino UNO R3 1 OptimusDigital Arduino UNO Rev3 54.37
Senzor DHT22 1 OptimusDigital DHT22 Datasheet 23.12
LED RGB (catod comun) 1 OptimusDigital RGB LED Common Cathode 1.00
LCD 16×2 + I2C 1 OptimusDigital LCD 1602 16.34
Buzzer pasiv 5V 1 OptimusDigital Buzzer 1.00
Buton 6×6 mm 1 OptimusDigital Tact Switch 6x6 0.36
PCB 10×10 cm 1 OptimusDigital - 5.00
Rezistente (220Ω, 10kΩ) 3–4 OptimusDigital Yageo CFR 0.50

Pret total estimativ: 101.69 RON

Schema electrica

Aceasta este schema electrica a proiectului BEEP & Heat – Statie meteo cu alerta sonora si vizuala. Schema prezinta modul in care sunt interconectate componentele principale: Arduino UNO, senzorul DHT22, modulul WiFi ESP-01, buzzer-ul pasiv, LED-ul RGB si ecranul LCD 1602 cu interfata I2C.

  • Ecranul LCD comunica cu Arduino prin magistrala I2C (pinii A4 - SDA si A5 - SCL).
  • Senzorul DHT22 este conectat la pinul digital D7 pentru a transmite temperatura si umiditatea.
  • Modulul WiFi ESP-01 este conectat pe pinii Digitali D4 si D5 ai placii Arduino.
  • Buzzer-ul pasiv este activat printr-un pin digital.
  • LED-ul RGB (catod comun) este controlat prin pinii D9, D10 si D11 folosind semnale PWM.

Schema electrica - BEEP & Heat

Aceasta schema electrica (Fisierul EAGLE 9.X Compatible Schematic File .sch) poate fi descarcata din sectiunea Downloads.

Acestea sunt cateva imagini diferite componente ale proiectului:

  • Ecranul LCD 1602:

Schema electrica - BEEP & Heat

  • Senzorul de Temperatura si Umiditate DHT22:

Schema electrica - BEEP & Heat

  • Placa de dezvoltare Arduino UNO R3:

Schema electrica - BEEP & Heat

Software Design

Pentru implementarea software a proiectului BEEP & Heat – Statia meteo cu alerta sonora si vizuala, s-a utilizat mediul de dezvoltare Arduino IDE, impreuna cu mai multe biblioteci externe pentru controlul senzorilor si perifericelor. Codul este structurat modular si urmareste o logica clara de prelucrare si afisare a datelor, precum si de generare a alertelor.

Functionalitati implementate

  • Citirea temperaturii si umiditatii (DHT22):

Se foloseste biblioteca `DHT.h` pentru a citi valorile senzorului DHT22 conectat la pinul D7. Valorile sunt utilizate atat pentru afisaj, cat si pentru logica de alerta.

  • Afisarea datelor pe LCD (16×2, I2C):

Se utilizeaza biblioteca `LiquidCrystal_I2C`. Datele sunt afisate pe un ecran LCD conectat prin I2C (pinii A4 – SDA, A5 – SCL). Este inclusa si comutarea intre unitati de masura: Celsius, Kelvin si Fahrenheit, printr-un buton extern care genereaza o intrerupere.

  • Feedback vizual prin LED RGB (tranzitie animata, PWM + easing):

Culorile se schimba progresiv in functie de temperatura:

  • Sub 20°C → albastru
  • 20–25°C → tranzitie animata albastru → verde
  • 25–30°C → tranzitie animata verde → rosu
  • Peste 30°C → rosu complet + alarma
  Tranzitiile sunt realizate **doar daca temperatura s-a modificat**, prin interpolare intre valorile anterioare si cele noi. Functia `interPolateColor()` face aceasta animatie cu pasi intermediari calculati prin `for()`, folosind o functie de easing (`smoothstep`) si un boost de intensitate pentru efect vizual.
  • Alerta sonora (RickRoll):

La temperaturi peste 30°C se declanseaza melodia “Never Gonna Give You Up” prin buzzer (functia `playRickRoll()`), ca metoda de alerta amuzanta. Un flag `alreadyRickRolled` previne repetarea inutila a melodiei.

  • Comunicare UART:

Valorile masurate sunt trimise continuu la monitorul serial din Arduino IDE prin `Serial.print()`.

  • Tratarea intreruperilor externe:

Un buton conectat la pinul D2 activeaza o intrerupere (`attachInterrupt()`), schimband ciclic unitatea de masura afisata pe LCD (Celsius → Kelvin → Fahrenheit).

Biblioteci utilizate

Biblioteca Scop
`LiquidCrystal_I2C` Control LCD 16×2 prin interfata I2C
`Wire.h` Comunicare I2C cu LCD
`DHT.h` Citire temperatura si umiditate (DHT22)

Principii de proiectare si optimizari

  • Codul este modular, fiecare functionalitate fiind separata logic:
    1. `interPolateColor()` – realizeaza tranzitia animata intre temperaturi
    2. `applyColorForTemp()` – calculeaza culoarea pentru o temperatura data
    3. `playRickRoll()` – declansare alarma sonora
    4. `setColor()` – scriere valori PWM pentru LED
    5. `ISR_BUTTON()` – tratarea intreruperii externe
  • Se foloseste `constrain()` pentru limitarea valorilor PWM in intervalul [0–255].
  • Tranzitiile vizuale folosesc functia de easing `smoothstep` pentru efect natural.
  • Animatia de culoare este executata doar cand temperatura se modifica semnificativ.
  • Sistemul are un delay de 2 secunde intre citiri pentru stabilitate si evitare congestie.

Concluzie

Partea software a proiectului integreaza functionalitati de citire senzoriala, feedback vizual animat si auditiv, comunicare seriala si control prin intreruperi. Codul este clar, modular si extensibil pentru functionalitati ulterioare, oferind in acelasi timp o experienta vizuala placuta si interactiva.

Rezultate Obţinute

Functionalitatile Proiectului pot fi urmarite pe Youtube: https://youtu.be/yKRfma8m8SQ

Proiectul a fost implementat cu succes, integrand toate componentele hardware si functionalitatile software. Sistemul afiseaza temperatura si umiditatea in timp real, ofera feedback vizual si sonor, iar comutarea unitatilor functioneaza corect.

  • Proiect Final:

BEEP & Heat BEEP & Heat

Concluzii

Proiectul BEEP & Heat reprezintă o aplicație practică și educativă, care integrează concepte esențiale din proiectarea cu microprocesoare: senzori, comunicare serială, afișare I2C, control PWM și întreruperi externe. Sistemul a fost conceput pentru a monitoriza în timp real temperatura și umiditatea dintr-un spațiu închis și pentru a oferi feedback instant prin LED RGB și buzzer.

Prin implementarea tranzițiilor de culoare cu interpolare și easing, proiectul oferă un feedback vizual elegant și intuitiv. De asemenea, alerta sonoră de tip RickRoll adaugă o notă creativă și unică, transformând o simplă notificare într-o experiență interactivă și memorabilă.

Pe parcursul realizării proiectului am reușit:

  • să înțeleg mai bine modul în care se interacționează cu senzori digitali și analogici;
  • să aplic conceptele de control PWM și semnalizare prin LED-uri RGB;
  • să lucrez cu protocoale de comunicare precum I2C și UART;
  • să gestionez evenimente asincrone prin întreruperi externe;
  • să aplic tehnici de interpolare și optimizare vizuală.

Proiectul este ușor de replicat, util în contexte educaționale și poate fi extins ușor pentru aplicații IoT (de exemplu, integrarea cu un server web prin modulul WiFi). Pentru mine, acest proiect a fost o oportunitate excelentă de a integra în mod creativ mai multe noțiuni studiate și de a construi un sistem funcțional și util.

Download

Mai jos se regasesc fisierele rezultate in urma realizarii proiectului BEEP & Heat – Statia meteo cu alerta sonora si vizuala:

Schema electrica (.sch): schematic.zip

Cod sursa Arduino (.ino): source_code.zip

Jurnal

Acest jurnal documenteaza etapele de dezvoltare ale proiectului BEEP & Heat – Statia meteo cu alerta sonora si vizuala, evidentiind progresul, problemele intalnite si solutiile aplicate.

Ziua 1 – 3 mai 2025

  • Definirea ideii de proiect: statie meteo cu alerta sonora si vizuala.
  • Selectarea componentelor hardware.
  • Schitarea functionalitatilor si a structurii bloc.

Ziua 2 – 5 mai 2025

  • Testare senzor DHT22 – valori corecte afisate si transmise prin serial.
  • Testare LCD 16×2 – mesajele apar corect si clar.
  • Afisarea temperaturii in grade Celsius pe LCD I2C.

Ziua 3 – 8 mai 2025

  • Adaugarea unui buton pentru comutarea unitatilor de masura (Celsius, Kelvin, Fahrenheit).
  • Implementarea intreruperii externe cu `attachInterrupt()` – testare cu succes.

Ziua 4 – 10 mai 2025

  • Testare LED RGB cu PWM pentru fiecare culoare.
  • Primele tranzitii brute in functie de temperatura – functionale, dar neoptimizate vizual.

Ziua 5 – 13 mai 2025

  • Implementarea functiei `interPolateColor()` cu easing (`smoothstep`) si boost de intensitate.
  • Rezultate vizuale mult imbunatatite fata de varianta cu tranzitie liniara simpla.

Ziua 6 – 15 mai 2025

  • Implementarea functiei `playRickRoll()` cu refrenul melodiei “Never Gonna Give You Up”.
  • Testarea buzzerului pe diferite frecvente cu `tone()` – validare corecta a secventei muzicale.

Ziua 7 – 19 mai 2025

  • Integrarea tuturor componentelor in schema completa.
  • Afisarea temperaturii si umiditatii pe doua randuri ale LCD-ului.
  • Ultimele testari de stabilitate si functionalitate combinata.

Ziua 8 – 24 mai 2025

  • Realizarea demonstratiei video pentru proiect.
  • Testare finala a functionalitatilor integrate: senzor, LCD, LED RGB, buzzer si UART.
  • Verificarea functionarii pe placa de prototipare alimentata prin USB.

Ziua 9 – 27 mai 2025

  • Actualizarea paginii de documentatie in OCW cu toate sectiunile finale (Jurnal, Concluzii, Rezultate).
  • Incarcarea videoclipului de prezentare pe YouTube.
  • Verificare finala a structurii si formatarea corecta in stil DokuWiki pentru predare.

Bibliografie/Resurse

pm/prj2025/fstancu/mihai.niculici.txt · Last modified: 2025/05/28 02:06 by mihai.niculici
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