Nume: Luca Plian
Grupa: 332CA
SmartThermo este un proiect creat cu scopul de a transforma citirea temperaturii dintr-un proces simplu și abstract într-o experiență multisenzorială — vizuală, mecanică și sonoră. Cu ajutorul LED-urilor RGB, a unui servo care mimează mișcarea mercurului dintr-un termometru clasic, a unui afișaj LCD, a unui ventilator care se activează automat, a unui buzzer de avertizare pentru praguri critice, dar și a unui modul RTC care resetează zilnic valorile minime și maxime. În plus, două butoane adaugă funcționalitate suplimentară: unul oprește alerta sonoră, iar celălalt comută între afișajul temperaturii curente și informațiile despre data curentă și valorile extreme.
Ideea proiectului a pornit dintr-o nevoie personală: am observat că atunci când temperatura din cameră crește, îmi scade semnificativ capacitatea de concentrare. Astfel, am vrut să creez un sistem care să reacționeze automat la variațiile de temperatură — fără să fie nevoie de intervenția mea.
Proiectul folosește o plăcuță compatibilă cu Arduino Uno R3 care conține procesorul ATMega328P conectată la un senzor de temperatură digital DS18B20, cu rezistor pull-up de 4.7 kΩ. În funcție de valoarea obținută, LED-ul RGB (catod comun) își schimbă culoarea, un servomotor SG90 mișcă un indicator printr-un mecanism tip crank-slider, iar valorile sunt afișate pe un LCD I²C 1602. Dacă temperatura depășește un prag setat, un ventilator de 5V pornește automat pentru răcire activă. Ventilatorul este controlat cu ajutorul unui tranzistor NPN 2N2222A, protejat cu o diodă flyback 1N4007 și un rezistor de bază. De asemenea, un buzzer activ este declanșat acustic când se atinge un prag critic. Un modul RTC DS3231 resetează valorile minime și maxime zilnic, iar două butoane adaugă funcționalități precum}} comutarea între moduri de afișaj și dezactivarea buzzerului.
Toate componentele sunt montate pe breadboard și conectate cu fire Dupont.
Componente utilizate:
Mediu de dezvoltare: Arduino IDE (C/C++)
Librării utilizate:
Algoritmi și funcții:
Lista de componente (Bill of Materials)
Componentă | Model / Detalii | Conectare la Arduino UNO | Observații |
---|---|---|---|
Arduino UNO R3 | ATmega328P | - | Placă principală |
DS18B20 | Senzor digital temperatură | D8, VCC, GND | Necesită rezistor de 4.7kΩ între PWM și VCC |
Rezistor pull-up | 4.7kΩ | Între PWM8 și VCC | Asigură funcționarea corectă a protocolului 1-Wire |
Modul LED RGB | RGB, catod comun | D9 (B), D10 (G), D11 (R) | Control culoare prin PWM |
Servomotor SG90 | SG90 90° | D6 (PWM), VCC, GND | Mișcare indicator termometru |
Ventilator 5V | DC, 3 fire | VCC, GND, control prin tranzistor | Răcire automată |
Tranzistor NPN | 2N2222A | Bază → A3, Emitor → GND, Colector → GND fan | Control ON/OFF pentru ventilator |
Diodă flyback | 1N4007 | Între VCC și GND ventilator | Protejează de tensiuni inverse |
Condensator | 100 µF | Între VCC și GND ventilator | Filtrare și stabilizare |
Rezistor bază | 330Ω | Între A3 și baza tranzistorului | Limitare curent |
Buzzer activ | Modul simplu | A1, GND | Alertă acustică |
LCD 1602 I²C | Afișaj I2C | SDA → A4, SCL → A5 | Afișează temperatura și stare |
Modul RTC DS3231 | Real Time Clock | SDA → A4, SCL → A5, VCC, GND | Pinurile SQW și 32K NU sunt folosite |
Buton 1 | Tact switch | D4, GND | Activare mod informații LCD |
Buton 2 | Tact switch | D7, GND | Activare / Dezactivare buzzer (mod silențios) |
Stadiul actual al implementării:
Până în acest moment, am conectat și testat cu succes următoarele componente hardware: senzorul de temperatură DS18B20, LED-ul RGB, servomotorul MG90, buzzer-ul și un ventilator de 5V, care este controlat printr-un tranzistor NPN și un condensator de 100 µF pentru stabilizarea alimentării. De asemenea, afișajul LCD I²C funcționează corespunzător și afișează temperatura în timp real.
Servomotorul este utilizat pentru a mișca un indicator din plastic într-un mecanism de tip crank-slider, simulând urcarea sau coborârea „mercurului” dintr-un termometru clasic, în funcție de temperatura măsurată. Acesta funcționează corespunzător, răspunzând la variațiile de temperatură.
Sistemul reacționează dinamic: dacă temperatura crește peste un prag definit, se activează ventilatorul pentru răcire activă, iar buzzer-ul emite un semnal sonor de avertizare.
Schematic:
Schema electrică prezintă conexiunile dintre componentele proiectului. Pentru a evita aglomerarea și suprapunerile vizuale ale firelor, unele conexiuni nu au fost trasate direct, fiind înlocuite cu etichete explicative (în paranteze), care indică pinul de ieșire corespunzător.
Poze:
Pozele sunt cu scopul de a arată funcționare dispozitivului
Video: https://youtube.com/shorts/4BHMPG3DN1A?si=zHZJEK0EK-5zXnsQ
În urma implementării proiectului SmartThermo, sistemul funcționează stabil și îndeplinește toate funcționalitățile propuse:
Proiectul SmartThermo demonstrează cum o combinație de componente accesibile și logică bine structurată poate duce la realizarea unui sistem complet de monitorizare și reacție la temperatură. Dispozitivul funcționează în mod autonom, oferind utilizatorului o experiență clară și intuitivă prin afișare, semnale vizuale, acustice și mecanice.
Folosirea unui LED RGB pentru feedback vizual, a unui servomotor pentru simularea termometrului clasic și a unui LCD pentru afișarea valorilor în timp real transformă o funcționalitate simplă într-o interfață prietenoasă și educativă. Integrarea ventilatorului și a buzzerului oferă răspuns automat la condiții de temperatură ridicată, iar modulul RTC asigură gestionarea corectă a valorilor pe termen lung. Cele două butoane oferă un nivel suplimentar de control și personalizare a interacțiunii.
Prima modificare importantă a fost adăugarea unui ventilator controlat automat cu ajutorul unui tranzistor NPN, pentru a activa un mecanism de răcire în cazul temperaturilor ridicate. Ulterior, am înlocuit senzorul analogic LM35 cu DS18B20, un senzor digital care oferă măsurători mai precise și mai stabile.
Pentru o interfață mai intuitivă, am integrat un afișaj LCD I²C, care afișează temperatura în timp real și mesaje contextuale. Am adăugat apoi două butoane: unul pentru a comuta între afișarea temperaturii curente și a altor informații (dată, temperaturi maxime și minime), iar celălalt pentru a dezactiva alerta sonoră (buzzer-ul) în modul silențios.
O contribuție semnificativă a fost integrarea unui modul RTC DS3231, care permite resetarea automată a valorilor maxime și minime ale temperaturii în fiecare zi la ora 00:00, oferind o funcționalitate suplimentară de tip jurnal zilnic.
Proiectul a fost testat în mai multe etape, optimizat pentru funcționare continuă, iar integrarea s-a realizat treptat, cu atenție la alimentare și la stabilitatea software-ului. La final, toate componentele funcționează armonios, iar sistemul este gata de prezentare.