Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:avaduva:ioan_calin.ilie [2025/05/19 21:41]
ioan_calin.ilie [Hardware Design]
pm:prj2025:avaduva:ioan_calin.ilie [2025/05/21 17:05] (current)
ioan_calin.ilie
Line 98: Line 98:
 ===== Software Design ===== ===== Software Design =====
  
- +**Descrierea codului aplicației**
-<note tip> +
-**Descrierea codului aplicației **+
  
 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'''​. 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'''​.
Line 115: Line 113:
   * '''​WaveDrom'''​ – pentru generarea diagramei de semnal   * '''​WaveDrom'''​ – pentru generarea diagramei de semnal
  
-** Librării și surse 3rd-party utilizate **+**Librării și surse 3rd-party utilizate**
  
 Au fost utilizate următoarele librării open-source:​ Au fost utilizate următoarele librării open-source:​
  
-  * '''​LCD_I2C.h'''​ – pentru afișarea pe LCD 16x2 prin I2C (PCF8574)+  * '''​LCD_I2C.h'''​ – pentru afișarea pe LCD 16x2 prin I2C
   * '''​Wire.h'''​ – pentru comunicația I2C   * '''​Wire.h'''​ – pentru comunicația I2C
   * '''​DHT.h'''​ – pentru senzorul DHT11 (temperatură și umiditate)   * '''​DHT.h'''​ – pentru senzorul DHT11 (temperatură și umiditate)
Line 125: Line 123:
 Toate librăriile sunt instalabile direct din Library Manager în Arduino IDE. Toate librăriile sunt instalabile direct din Library Manager în Arduino IDE.
  
-**Algoritmi și structuri implementate**+**Motivația alegerii bibliotecilor**
  
-Logica ​aplicației ​este guvernată de o automatizare ​pe bază de condiții combinate, implementată folosind:+Bibliotecile au fost alese pentru simplitatea integrării cu platforma Arduino și suportul extins oferit în comunitate. Acestea oferă interfețe standardizate și permit un timp redus de dezvoltare, permițând focusarea pe logica ​aplicației ​și nu pe detalii ​de nivel inferior.
  
-  ​**mașină ​de stare** simplă: '''​STOPPED''',​ '''​FORWARD''',​ '''​REVERSE'''​ +**Element ​de noutate al proiectului**
-  * Evaluarea în timp real a: +
-    * nivelului de apă (senzor ploaie, analog A3) +
-    * umidității și temperaturii (DHT11 pe D7) +
-  * Condiții pentru extindere:​ +
-    * ploaie detectată (valoare > prag) +
-    * umiditate > 60% +
-    * temperatură < 15°C +
-  * Extinderea/​retragerea se face prin activarea PWM către un driver L298N pentru o perioadă determinată +
-  * Afișajul LCD comută automat între: +
-    ​Starea pergolei: '''​Extinsă'''​ / '''​Retrasă'''​ +
-    ​Valorile senzorilor: temperatură și umiditate+
  
-Alternarea se face automat la fiecare 3 secunde cu ajutorul funcției <​code>​millis()</​code>​+Spre deosebire de o simplă acționare pe bază de ploaie, proiectul combină mai mulți parametri meteo (temperatură,​ umiditate, ploaiepentru a lua decizii inteligente,​ asemănător unui sistem de predicție meteo simplificat. Integrarea cu feedback vizual și animație pe LCD, împreună cu semnalizare LED, oferă un sistem intuitiv și robust.
  
-** Surse și funcții implementate ​**+**Justificarea utilizării ​funcționalităților din laborator**
  
-Fișierul principal este <​code>​main_pergola.ino</​code>​ și conține următoarele ​funcții principale:+Următoarele ​concepte învățate în laborator au fost aplicate: 
 +  * '''​GPIO'''​ – pentru controlul LED-urilor 
 +  * '''​PWM'''​ – pentru acționarea precisă a motoarelor DC 
 +  * '''​ADC'''​ – pentru citirea valorii analogice de la senzorul de ploaie 
 +  * '''​I2C'''​ – pentru comunicația eficientă cu modulul LCD 
 +  * '''​Temporizare'''​ – pentru afișare alternativă și evitarea '''​delay()'''​
  
-  ​<​code>​setup()</​code>​ – inițializări pini, senzori, LCD, serial +**Explicația scheletului ​și interacțiunii**
-  ​<​code>​loop()</​code>​ – logica de control: citiri senzori → decizie → acțiune +
-  * <​code>​driveMotors(direction)</​code>​ – comandă motoarele în direcția dorită +
-  * <​code>​stopMotors()</​code>​ – oprește motoarele +
-  ​<​code>​animateLCD(msg)</​code>​ – afișează mesaje animate pe LCD +
-  ​<​code>​updateLCD(temp,​ hum)</​code>​ – alternează automat afișajul între stare și valori meteo+
  
-</note>+Structura proiectului este organizată în jurul unei bucle infinite <​code>​loop()</codecare: 
 +  1. Citește senzorii 
 +  2. Evaluează condițiile de extindere/​retragere 
 +  3. Actualizează LCD-ul și LED-urile 
 +  4. Acționează motoarele prin funcții dedicate
  
 +Toate componentele sunt sincronizate logic, iar testarea a fost realizată incremental,​ pornind de la simulări în Tinkercad și verificări în consolă (Serial Monitor) pentru validarea fiecărei funcționalități.
 +
 +**Calibrarea elementelor de senzoristică**
 +
 +Senzorul de ploaie a fost testat empiric, prin observarea valorilor analogice returnate în stare uscată și umedă. Pragul de 700 a fost ales în urma testelor. Pentru DHT11, valorile de temperatură și umiditate au fost verificate comparativ cu un dispozitiv extern, iar pragurile de decizie au fost ajustate în cod pentru a reflecta condițiile reale.
 +
 +**Optimizări realizate**
 +
 +  * S-a eliminat utilizarea excesivă a <​code>​delay()</​code>,​ folosind în schimb <​code>​millis()</​code>​ pentru afișare ciclică.
 +  * Comenzile către motoare sunt executate doar dacă starea sistemului s-a schimbat, evitând comenzi redundante.
 +  * A fost adăugată o funcție <​code>​animateLCD()</​code>​ pentru a face tranziția de stare mai lizibilă pentru utilizator.
 +
 +**Demo video**
 +
 +[[https://​youtu.be/​CXqHmQ2gprg| Link către demo YouTube]]
 +
 +Videoclipul de mai sus prezintă funcționarea completă a sistemului de pergolă automatizată,​ evidențiind declanșarea extinderii sau retragerii în funcție de condițiile meteo detectate de senzori, afișajul dinamic pe LCD și semnalizarea vizuală cu LED-uri.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Proiectul a atins cu succes toate obiectivele propuse inițial, fiind realizat un sistem complet funcțional de pergolă automatizată,​ capabil să reacționeze inteligent la condițiile meteorologice detectate în timp real. În urma implementării, ​au fost obținute următoarele rezultate concrete: 
-Care au fost rezultatele ​obţinute în urma realizării proiectului vostru+ 
-</​note>​+  * Pergola se extinde automat ​în cazul detectării ploii, a umidității ridicate sau a temperaturilor scăzute, pe baza datelor de la senzori; 
 +  * Retragerea se realizează automat în absența acestor condiții, menținând astfel un spațiu deschis optim în condiții favorabile;​ 
 +  * Afișajul LCD 16x2 comută în mod ciclic între starea pergolei și valorile actuale de temperatură și umiditate, oferind feedback clar utilizatorului;​ 
 +  * LED-urile roșu și verde semnalizează vizual în timp real dacă pergola este extinsă sau retrasă; 
 +  * Sistemul a fost validat prin testare fizică și simulare, comportându-se stabil și previzibil;​ 
 +  * Codul firmware este modular, eficient și permite extinderi ulterioare (ex: integrare cu aplicații mobile sau senzori suplimentari). 
 + 
 +Proiectul demonstrează integrarea eficientă a mai multor funcționalități studiate în laborator, într-un sistem embedded cu aplicabilitate practică reală
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Proiectul realizat demonstrează posibilitatea construirii unui sistem automatizat de control al unei pergole, folosind concepte fundamentale din domeniul microcontrolerelor și al senzoristicii. Prin integrarea mai multor funcționalități studiate în cadrul laboratorului,​ am reușit să dezvolt o soluție capabilă să reacționeze în timp real la condițiile de mediu și să ofere un feedback clar utilizatorului.
 +
 +Implementarea s-a realizat incremental,​ cu validare individuală a fiecărui modul, ceea ce a condus la o structură de cod stabilă și extensibilă. Utilizarea afișajului LCD și a LED-urilor de stare a contribuit la o interfață de utilizare intuitivă, în timp ce gestionarea semnalelor PWM, ADC și I2C a oferit un exemplu concret de aplicare practică a noțiunilor teoretice.
 +
 +Proiectul poate fi îmbunătățit pe viitor prin integrarea unei conexiuni wireless (Bluetooth sau WiFi), adăugarea unui sistem de logare a datelor sau conectarea la o aplicație mobilă. În forma actuală, sistemul este complet funcțional și demonstrează eficiența soluțiilor embedded în automatizarea diverselor spații.
  
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Arhiva de mai jos conține toate fișierele ​relevante pentru proiectul „Pergolă Automatizată”inclusiv codul sursăschemele electricedocumentația auxiliară și un videoclip demonstrativ.
-O arhivă (sau mai multe dacă este cazul) cu fişierele ​obţinute în urma realizării proiectului:​ surseschemeetc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-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**. +Fișierele ​incluse: 
-</​note>​+  ​Codul sursă complet`main_pergola.ino` 
 +  ​Scheme electrice realizate în KiCad (`.kicad_sch`) și versiune exportată `.jpg` 
 +  ​Diagramă logică de semnal (`.png`) 
 +  ​Fotografii cu montajul fizic al circuitului 
 +  ​Fișier `README.txt` cu instrucțiuni detaliate 
 +  ​`ChangeLog.txt` cu istoricul modificărilor 
 +  * Videoclip de prezentare a funcționării sistemului
  
-===== Jurnal =====+[[https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2025/​avaduva/​pergola_automata_ilie_calin.zip |Descarcă arhiva completă a proiectului (.zip)]]
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +=== Resurse Hardware === 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** ​şi **Resurse Hardware**. +    * Datasheet ATmega328P – [https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf Datasheet oficial Microchip] 
-</note>+  ​Specificații senzor DHT11 – [https://​sigmanortec.ro/​senzor-temperatura-si-umiditate-dht22 Senzor DHT11 - Sigmanortec] 
 +  ​Modul senzor ploaie – [https://​www.optimusdigital.ro/​ro/​senzori-senzori-de-umiditate/​5775-modul-senzor-de-ploaie.html Modul senzor ploaie - Optimus Digital] 
 +  * Driver motoare L298N – [https://​www.handsontec.com/​dataspecs/​L298N%20Motor%20Driver.pdf Datasheet oficial L298N] 
 +  * LCD 16x2 cu I2C – [https://​www.optimusdigital.ro/​en/​lcds/​62-1602-lcd-with-i2c-interface-and-yellow-green-backlight.html LCD cu I2C - Optimus Digital] 
 + 
 + 
 + 
 +=== Resurse Software ​=== 
 +  ​Arduino IDE – [https://​www.arduino.cc/​en/​software] 
 +  ​Biblioteca DHT – [https://​github.com/​adafruit/​DHT-sensor-library] 
 +  ​Biblioteca LiquidCrystal_I2C – [https://​github.com/​johnrickman/​LiquidCrystal_I2C] 
 +  ​WaveDrom editor – [https://​wavedrom.com/​editor.html] 
 +  ​Tinkercad Circuits – [https://​www.tinkercad.com/​circuits] 
 +  ​KiCad EDA – [https://​www.kicad.org/] 
 + 
 +=== Alte resurse === 
 +  * Forum Arduino – [https://​forum.arduino.cc/]
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
  
pm/prj2025/avaduva/ioan_calin.ilie.1747680080.txt.gz · Last modified: 2025/05/19 21:41 by ioan_calin.ilie
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