ThermoGuard este un termostat avansat bazat pe doua placi de dezvoltare ATmega328P care permite monitorizarea si controlul temperaturii in timp real, oferind o interfata vizuala printr-un display TFT dedicat.
Sistemul este compus din doua module distincte care comunica wireless prin protocol NRF24L01 la 2.4GHz:
Utilizatorul interactioneaza cu sistemul printr-un encoder rotativ KY-040 (rotire infinita + apasare) pentru navigare meniu si setare temperatura. Datele afisate pe ecran includ temperatura curenta, setpoint-ul activ si modul de functionare (AUTO/MANUAL).
Sistemul implementeaza histerezis pentru stabilitate si este alimentat dintr-o baterie Li-Po 1000mAh cu incarcare USB Type-C, fiind portabil si independent de reteaua electrica.
Ideea a pornit de la termostatelele comerciale de camera (ex: Honeywell, Salus) care actioneaza centrala termica prin contact uscat - ThermoGuard reproduce aceasta functionalitate intr-un sistem embedded realizat de la zero.
Proiectul este util deoarece demonstreaza integrarea mai multor periferice embedded (SPI, ADC, Timer, PWM, comunicatie wireless) intr-un sistem real cu aplicabilitate practica.
Laboratoare folosite: GPIO, ADC, Timer, SPI, I2C, UART.
Nod 1 - Modulul Termostat (ATmega328P standalone)
setpoint, mod activ, ora)
Nod 2 - Modulul de Incalzire (Arduino UNO)
IRF520 cu semnal PWM
Flux de functionare:
incalzire porneste
Moduri de functionare:
configurate (ex: zi 22 grade C, noapte 18 grade C)
encoder
| Componenta | Link | Descriere |
|---|---|---|
| ATmega328P standalone | din kit Microchip | Microcontroller principal - Modul Termostat |
| Arduino UNO R3 | din kit | Microcontroller - Modul Incalzire |
| DHT11 | din kit | Senzor temperatura si umiditate |
| Display TFT SPI 2.8 inch 240×320 ST7789V | eMAG | Afisaj interfata utilizator |
| Encoder rotativ KY-040 | eMAG | Input utilizator (rotire infinita + apasare) |
| Modul NRF24L01 2.4GHz | eMAG | Comunicatie wireless intre noduri (x2) |
| Modul MOSFET IRF520 | eMAG | Control element incalzire prin PWM |
| Cartus incalzire 12V 40W | eMAG | Element de incalzire |
| Modul TP4056 BMS USB Type-C | eMAG | Incarcare si protectie baterie Li-Po |
| Modul DC-DC Boost XL6009 | eMAG | Ridicare tensiune 3.7V la 5V |
| Acumulator Li-Po 1000mAh 3.7V JST | eMAG | Alimentare Modul Termostat |
| Sursa alimentare 12V 2A | eMAG | Alimentare Modul Incalzire |
| Mufa alimentare DC 5.5mm x 2.1mm | eMAG | Conector sursa 12V |
| Breadboard + fire | din kit | Montaj prototip |
| Rezistori, LED-uri | din kit | Componente pasive |
| Componenta | Pini Modul | Conexiune ATmega328PB | Observatii |
|---|---|---|---|
| Display TFT 2.8” | VCC, GND | 5V, GND | Alimentare modul |
| LED | 3.3V | Alimentare iluminare fundal | |
| RESET | PB0 | Conectat prin divizor de tensiune (5V → 3.3V) | |
| MOSI, SCK, CS, DC | PB3, PB5, PB2, PB1 | Conectati printr-un level shifter | |
| NRF24L01 | VCC, GND | 3.3V, GND | Alimentare directa (strict 3.3V) |
| CE, CSN | PC0, PC1 | Control | |
| SCK, MOSI, MISO | PB5, PB3, PB4 | SPI Hardware (legati *inaintea* divizorului TFT) | |
| Encoder KY-040 | VCC, GND | 5V, GND | |
| CLK, DT | PD2, PD3 | Intreruperi externe (INT0, INT1) | |
| SW | PD4 | Buton encoder (pull-up intern) | |
| Senzor DHT11 | VCC, GND, DATA | 5V, GND, PC2 | |
| Buton BACK | Pini contact | GND, PD5 | Buton auxiliar (pull-up intern) |
| Componenta | Pini Modul | Conexiune Arduino UNO | Observatii |
|---|---|---|---|
| NRF24L01 | VCC, GND | 3.3V, GND | Alimentare directa (strict 3.3V) |
| CE, CSN | A0, A1 | Control | |
| SCK, MOSI, MISO | D13, D11, D12 | SPI Hardware | |
| Modul MOSFET | SIG, VCC, GND | D2, 5V, GND | Control logic / Semnal PWM pe pinul D2 |
| VIN, GND (șurub) | Sursa 12V (+ / -) | Alimentare de putere (sursa externa) | |
| V+, V- (șurub) | Cartus Incalzire | Conectare sarcina (element incalzire 40W) |
Nod 1 - Modulul Termostat
Microcontrollerul principal este ATmega328PB Xplained Mini, alimentat la 5V prin lantul: baterie Li-Po 3.7V → modul TP4056 BMS (incarcare USB Type-C si protectie) → modul XL6009 (boost DC-DC reglat la 5V). Acest lant asigura portabilitatea sistemului si protectia bateriei impotriva supraincarcarii si supradescarcarii.
Senzorul DHT11 este conectat la pinul PC2 al microcontrollerului si furnizeaza temperatura si umiditatea camerei prin protocol single-wire.
Display-ul TFT 2.8 inch ST7789V comunica prin interfata SPI hardware (SCK-PB5, MOSI-PB3) si este alimentat la 5V. Deoarece pinii logici ai display-ului accepta maxim 3.3V, liniile principale de date si control (SCK, MOSI, CS, DC) sunt trecute printr-un modul level shifter (adaptor de nivel logic) pe 4 canale, care face conversia corecta si rapida a semnalelor de la 5V la 3.3V. Pinul de RESET (RST) foloseste un divizor de tensiune rezistiv clasic (R_sus=10kΩ, R_jos=20kΩ) pentru reducerea tensiunii. Pinul LED (backlight) este alimentat direct la 3.3V.
Encoder-ul rotativ KY-040 este conectat pe pinii de intrerupere hardware INT0 (PD2) si INT1 (PD3), permitand detectarea directiei de rotatie prin ISR fara polling. Butonul integrat al encoder-ului este conectat la PD4, iar butonul simplu de BACK la PD5, ambele cu pull-up intern activat in firmware.
Modulul NRF24L01 comunica prin SPI hardware impartit cu display-ul, folosind pini separati de Chip Select: CSN pe PC1 si CE pe PC0. Modulul este alimentat la 3.3V (pinul 3V3 al placii), iar semnalele SPI sunt tolerante la 5V conform specificatiilor modulului, deci nu necesita level shifter pe liniile de date.
Nod 2 - Modulul de Incalzire
Microcontrollerul secundar este Arduino UNO R3 (ATmega328P), alimentat din sursa externa de 12V 2A prin mufa DC 5.5×2.1mm. Regulatorul onboard al placii Arduino furnizeaza 5V si 3.3V pentru periferice.
Modulul NRF24L01 este conectat pe pinii SPI hardware ai Arduino (SCK-D13, MOSI-D11, MISO-D12) cu CE pe A0 si CSN pe A1, alimentat la 3.3V de pe placa.
Controlul elementului de incalzire se realizeaza prin modulul MOSFET IRF520 conectat la pinul D2 al Arduino prin semnalul de control SIG. Modulul primeste semnal PWM de la microcontroller si comuta cartusul de incalzire de 12V 40W conectat la terminalele V+ si V- ale modulului. GND-ul sursei de 12V si GND-ul Arduino sunt unite intr-un nod comun obligatoriu pentru functionarea corecta a circuitului.
Poze din timpul proiectarii