This is an old revision of the document!
Proiectul constă în realizarea unei pergole retractabile automatizate, controlată de un microcontroler Arduino Uno. Aceasta își poate extinde sau retrage acoperișul în funcție de condițiile meteorologice detectate de senzori. Astfel, starea pergolei este determinată ce valorile înregistrate de senzori.
Scopul proiectului este de a crea un sistem autonom și eficient pentru protecția și confortul utilizatorilor în spațiile exterioare, cum ar fi terase, grădini sau foișoare. Prin automatizarea pergolei, se elimină nevoia de intervenție umană în funcționarea acesteia, crescând astfel gradul de confort și adaptabilitate la schimbările de vreme.
Ideea a pornit de la dorința de a automatiza un element frecvent întâlnit în zonele rezidențiale și comerciale, pentru a-l face mai inteligent și mai reactiv la mediul înconjurător. Am dorit să aduc un plus de funcționalitate unui element pasiv des întâlnit într-o grădină sau terasă.
Consider că proiectul este util deoarece poate fi aplicat în viața reală, oferind un plus de confort și protecție utilizatorilor. Reprezintă totodată şi o idee de afacere ce duce spre zona de automatizări ce influențează modul de trai al utilizatorilor, putând fi integrat ulterior cu sisteme SmartHome.
Schema bloc
Toate aceste module comunică și interacționează prin intermediul Arduino-ului, care rulează un program ce interpretează datele de la senzori, ia decizii și controlează motoarele. În același timp, informațiile utile sunt afișate pe ecranul LCD.
Componente hardware utilizate
| Componentă | Funcție | Detalii tehnice |
|---|---|---|
| Arduino UNO | Unitate de control principală | 14 pini digitali, 6 pini analogici, 5V |
| Senzor de ploaie | Detectează prezența apei pe suprafață | Ieșire analogică, conectat la A3 |
| Senzor DHT11 | Măsoară temperatura și umiditatea | Temperatură (0–50°C), umiditate (20–90%), pin digital 7 |
| Modul L298N | Control motor bidirecțional | 2 canale H-Bridge, alimentare 18V |
| Motoare DC x2 | Extind și retrag pergola | Alimentate la 18V prin driver L298N |
| LCD 16×2 | Afișează starea pergolei și valorile meteo | I2C, adresă 0x27, conectat la A4/A5 |
| LED verde | Indică pergolă retrasă | Conectat la pin digital 11, cu rezistență 220Ω |
| LED roșu | Indică pergolă extinsă | Conectat la pin digital 12, cu rezistență 220Ω |
| Surse baterii 9V | Alimentare separată pentru Arduino și motoare | 1x 9V pentru Arduino (jack), 2x 9V în serie pentru motoare |
Schema eletrică
Explicații
| Componentă | Pini folosiți | Descriere comportament |
|---|---|---|
| Arduino UNO | A3, D7, A4, A5, D2–D5, D9–D12 | Primește date de la senzori, controlează motoarele, LCD-ul și LED-urile |
| Driver motoare L293D | IN1–IN4 (D2–D5), ENA/ENB (D9/D10), VS, VSS, GND | Controlează sensul și viteza motoarelor, primește semnale de la Arduino |
| Motoare DC ×2 | OUT1–OUT4 (driver) | Extind și retrag fizic pergola, comandate de L293D |
| Senzor de ploaie | A3 (semnal analogic) | Trimite un semnal variabil în funcție de cantitatea de apă detectată |
| Senzor DHT11 | D7 | Trimite temperatura și umiditatea către Arduino |
| LCD 16×2 cu I2C | A4 (SDA), A5 (SCL), 5V, GND | Afișează alternativ starea pergolei și valorile senzorilor |
| Modul I2C (PCF8574) | SDA, SCL, P0–P7 → LCD | Controlează LCD-ul cu doar 2 fire, mapat intern la RS, E, D4–D7 |
| LED roșu | D12 (prin rezistor) | Se aprinde când pergola este extinsă |
| LED verde | D11 (prin rezistor) | Se aprinde când pergola este retrasă |
| Baterii 9V (×3) | VIN (Arduino), VS (driver), GND | 1 baterie → Arduino, 2 în serie → alimentare motoare; GND comun |
Diagramă de semnal
Explicații diagramă de semnal – Extindere automată pergolă
Diagrama de semnal evidențiază comportamentul sistemului în momentul în care sunt întrunite condițiile pentru extinderea automată a pergolei.
'RainSensor_A3' – semnal analogic de la senzorul de ploaie. Când începe să plouă, nivelul tensiunii scade sub pragul de detecție, indicând prezența apei.'DHT11_Trigger' – semnal digital generat în urma citirii temperaturii și umidității. Acesta devine activ (HIGH) dacă umiditatea depășește 60% sau temperatura scade sub 15°C.'Motor_OUT (PWM)' – semnal de control trimis către driverul de motoare. Devine activ pentru o durată scurtă, corespunzătoare timpului de extindere a pergolei.'LED_Rosu (D12)' – semnal care indică starea “pergola extinsă”. Se activează după ce extinderea s-a finalizat.'LED_Verde (D11)' – semnal care indică starea “pergola retrasă”. Este activ înainte de extindere și se dezactivează odată cu începerea procesului.Comportamentul general reflectă o reacție automată a sistemului la condiții meteo nefavorabile, cu o secvență logică bine determinată: detecție → comandă motoare → actualizare vizuală a stării prin LED-uri. Sistemul rămâne în starea extinsă atâta timp cât persistă condițiile de ploaie sau umiditate ridicată.
Stadiul actual al proiectului
Firmware-ul controlează în totalitate comportamentul automat al pergolei, în funcție de valorile returnate de senzori (ploaie, temperatură, umiditate). Codul este structurat modular și este executat pe un microcontroler 'ATmega328P' de pe placa 'Arduino UNO'.
Aplicația face citiri constante de la senzori, procesează valorile înregistrate și declanșează acțiuni în funcție de condițiile definite (extindere/retragere pergolă), oferind și feedback vizual printr-un LCD 16×2 și două LED-uri de stare.
Mediu de dezvoltare utilizat
Dezvoltarea a fost realizată folosind:
'Arduino IDE' – pentru scrierea, compilarea și încărcarea codului pe placă'Tinkercad Circuits' – pentru simularea inițială a montajului'KiCad 7' – pentru proiectarea schemei electrice'WaveDrom' – pentru generarea diagramei de semnalLibrării și surse 3rd-party utilizate
Au fost utilizate următoarele librării open-source:
'LCD_I2C.h' – pentru afișarea pe LCD 16×2 prin I2C (PCF8574)'Wire.h' – pentru comunicația I2C'DHT.h' – pentru senzorul DHT11 (temperatură și umiditate)Toate librăriile sunt instalabile direct din Library Manager în Arduino IDE.
Algoritmi și structuri implementate
Logica aplicației este guvernată de o automatizare pe bază de condiții combinate, implementată folosind:
'STOPPED', 'FORWARD', 'REVERSE''Extinsă' / 'Retrasă'Alternarea se face automat la fiecare 3 secunde cu ajutorul funcției
millis()
Surse și funcții implementate
Fișierul principal este
main_pergola.ino
și conține următoarele funcții principale:
setup()
– inițializări pini, senzori, LCD, serial
loop()
– logica de control: citiri senzori → decizie → acțiune
driveMotors(direction)
– comandă motoarele în direcția dorită
stopMotors()
– oprește motoarele
animateLCD(msg)
– afișează mesaje animate pe LCD
updateLCD(temp, hum)
– alternează automat afișajul între stare și valori meteo
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.