Differences

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

Link to this comparison view

pm:prj2025:fstancu:mihai.niculici [2025/05/27 16:47]
mihai.niculici [Concluzii]
pm:prj2025:fstancu:mihai.niculici [2025/05/28 02:06] (current)
mihai.niculici [Rezultate Obţinute]
Line 17: Line 17:
  
 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. 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.
-</​note>​ 
 ===== Descriere generala ===== ===== Descriere generala =====
  
Line 33: Line 32:
  
 Ca functionalitati,​ proiectul foloseste urmatoarele concepte studiate in cadrul laboratoarelor:​ Ca functionalitati,​ proiectul foloseste urmatoarele concepte studiate in cadrul laboratoarelor:​
-  * **ADC** – pentru citirea datelor de la senzorul de temperatura (DHT22). 
   * **PWM** – pentru reglarea intensitatii si a culorii LED-ului RGB, in functie de temperatura.   * **PWM** – pentru reglarea intensitatii si a culorii LED-ului RGB, in functie de temperatura.
-  * **UART** – pentru ​trimiterea datelor catre un terminal serial ​pe laptop.+  * **Intreruperi externe** – pentru ​comutarea unitatilor de masura afisate ​pe ecran, folosind un buton conectat la un pin digital.
   * **I2C** – pentru comunicarea cu ecranul LCD 16x2.   * **I2C** – pentru comunicarea cu ecranul LCD 16x2.
  
Line 43: Line 41:
     Rol: unitatea centrala care gestioneaza senzorii, afisajul, LED-ul RGB si buzzerul. De asemenea, transmite informatii prin UART catre un monitor serial.     Rol: unitatea centrala care gestioneaza senzorii, afisajul, LED-ul RGB si buzzerul. De asemenea, transmite informatii prin UART catre un monitor serial.
  
-  * **Modul LED RGB**   +  * **LED RGB**   
-    [[https://​www.optimusdigital.ro/​ro/​optoelectronice-led-uri/​737-modul-cu-led-rgb.html?​search_query=led+rgb&​results=109|Modul cu LED RGB – OptimusDigital]]  ​+    [[https://​www.optimusdigital.ro/​ro/​optoelectronice-led-uri/​483-led-rgb-catod-comun.html?​search_query=RGB+LED&​results=108|LED RGB – OptimusDigital]]  ​
     ​     ​
     Rol: semnalizare vizuala a temperaturii (albastru – rece, verde – optim, rosu – cald).     Rol: semnalizare vizuala a temperaturii (albastru – rece, verde – optim, rosu – cald).
Line 67: Line 65:
     ​     ​
     Rol: organizarea componentelor hardware intr-un mod curat si stabil.     Rol: organizarea componentelor hardware intr-un mod curat si stabil.
- 
-  * **Modul WiFi ESP-03**  ​ 
-    [[https://​www.optimusdigital.ro/​ro/​wireless-wifi/​79-modul-wifi-esp-03.html?​search_query=modul+wifi&​results=90|Modul WiFi ESP-03 – OptimusDigital]]  ​ 
     ​     ​
-    ​Roltransmite valorile masurate catre un telefon sau alt dispozitivprin WiFi.+=== Bill of Materials (BOM) === 
 + 
 +^ Componenta ​               ^ Cant. ^ Link produs ​                                                                                  ^ Datasheet ​                                                                ^ Pret (RON) ^ 
 +| Arduino UNO R3           | 1     ​| [[https://​www.optimusdigital.ro/​ro/​placi-avr/​4561-placa-de-dezvoltare-compatibila-cu-arduino-uno-r3-atmega328p-atmega16u2-cablu-50-cm.html|OptimusDigital]] | [[https://​octopart.com/​datasheet/​arduino+uno+rev3-arduino-27999717|Arduino UNO Rev3]] ​                       | 54.37 | 
 +| Senzor DHT22             | 1     | [[https://​www.optimusdigital.ro/​ro/​senzori-senzori-de-temperatura/​1449-modul-senzor-de-temperatura-i-umiditate-dht22.html|OptimusDigital]] | [[https://​www.alldatasheet.com/​datasheet-pdf/​download/​1132459/​ETC2/​DHT22.html|DHT22 Datasheet]] ​                 | 23.12 | 
 +| LED RGB (catod comun) ​   | 1     | [[https://​www.optimusdigital.ro/​en/​leds/​483-rgb-led-common-cathode.html|OptimusDigital]] ​                      | [[https://​arabsmakers.com/​wp-content/​uploads/​2017/​05/​upload-5mm_RGB_led_common_cathode.pdf|RGB LED Common Cathode]] ​    | 1.00  | 
 +| LCD 16x2 + I2C           | 1     | [[https://​www.optimusdigital.ro/​en/​lcds/​2894-1602-lcd-with-i2c-interface-and-blue-backlight.html|OptimusDigital]] ​        | [[https://​www.vishay.com/​docs/​37484/​lcd016n002bcfhet.pdf|LCD 1602]] ​                                      | 16.34 | 
 +| Buzzer pasiv 5V          | 1     | [[https://​www.optimusdigital.ro/​ro/​audio-buzzere/​634-buzzer-pasiv-de-5-v.html|OptimusDigital]] ​                      | [[https://​components101.com/​sites/​default/​files/​component_datasheet/​Buzzer%20Datasheet.pdf|Buzzer]] ​        | 1.00  | 
 +| Buton 6x6 mm             | 1     | [[https://​www.optimusdigital.ro/​ro/​butoane-i-comutatoare/​1119-buton-6x6x6.html|OptimusDigital]] ​                    | [[https://​www.schurter.com/​en/​datasheet/​typ_6x6_mm_tact_switches.pdf|Tact Switch 6x6]]                          | 0.36  | 
 +| PCB 10x10 cm             | 1     | [[https://​www.optimusdigital.ro/​ro/​prototipare-altele/​12526-placa-pcb-pentru-prototipare-10x10cm-pas-de-254-mm.html|OptimusDigital]] | -                                                                       | 5.00  | 
 +| Rezistente (220Ω10kΩ) ​ | 3–4   | [[https://​www.optimusdigital.ro/​en/​resistors/​1088-025w-10k-resistor.html|OptimusDigital]] ​                        | [[https://​www.yageo.com/​upload/​media/​product/​app/​datasheet/​lr/​yageo-cfr_datasheet.pdf|Yageo CFR]]                   | 0.50  | 
 + 
 +**Pret total estimativ:​** **101.69 RON**
  
 ===== Schema electrica ===== ===== Schema electrica =====
Line 84: Line 91:
   * LED-ul RGB (catod comun) este controlat prin pinii D9, D10 si D11 folosind semnale PWM.   * LED-ul RGB (catod comun) este controlat prin pinii D9, D10 si D11 folosind semnale PWM.
  
- ​{{:​pm:​prj2025:​fstancu:​beep_heat_schema_electrica.png?​750|Schema electrica - BEEP & Heat}}+ ​{{:​pm:​prj2025:​fstancu:​schema_electrica_niculici.png?​750|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: 
 + ​{{:​pm:​prj2025:​fstancu:​lcd_niculici.jpeg?​400|Schema electrica - BEEP & Heat}} 
 +  * Senzorul de Temperatura si Umiditate DHT22: 
 + ​{{:​pm:​prj2025:​fstancu:​dht22_niculici.jpeg?​400|Schema electrica - BEEP & Heat}} 
 +  * Placa de dezvoltare Arduino UNO R3: 
 + ​{{:​pm:​prj2025:​fstancu:​arduino_uno_r3_cabluri_niculici.jpeg?​400|Schema electrica - BEEP & Heat}} 
 ==== Software Design ==== ==== Software Design ====
  
-Pentru implementarea software a proiectului **BEEP & Heat – Stația ​meteo cu alertă sonoră și vizuală**, s-a utilizat mediul de dezvoltare **Arduino IDE**, ​împreună ​cu mai multe biblioteci externe pentru controlul senzorilor ​și perifericelor. Codul este structurat modular ​și urmărește ​logică clară ​de prelucrare ​și afișare ​a datelor, precum ​și de generare a alertelor.+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 ​logica clara de prelucrare ​si afisare ​a datelor, precum ​si de generare a alertelor.
  
-=== Funcționalități ​implementate ===+=== Functionalitati ​implementate ===
  
-  * **Citirea temperaturii ​și umidității ​(DHT22):​** +  * **Citirea temperaturii ​si umiditatii ​(DHT22):​** 
-    Se folosește ​biblioteca `DHT.h` pentru a citi valorile senzorului DHT22 conectat la pinul D7. Valorile sunt utilizate ​atât pentru ​afișajcât și pentru logica de alertă.+    Se foloseste ​biblioteca `DHT.h` pentru a citi valorile senzorului DHT22 conectat la pinul D7. Valorile sunt utilizate ​atat pentru ​afisajcat si pentru logica de alerta.
  
-  * **Afișarea ​datelor pe LCD (16x2, I2C):** +  * **Afisarea ​datelor pe LCD (16x2, I2C):** 
-    Se utilizează ​biblioteca `LiquidCrystal_I2C`. Datele sunt afișate ​pe un ecran LCD conectat prin I2C (pinii A4 – SDA, A5 – SCL). Este inclusă și comutarea ​între unități ​de măsură: Celsius, Kelvin ​și Fahrenheit, printr-un buton extern care generează ​întrerupere.+    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 ​intrerupere.
  
-  * **Feedback vizual prin LED RGB (PWM + interpolare cu easing):​** +  * **Feedback vizual prin LED RGB (tranzitie animata, ​PWM + easing):​** 
-    Culorile se schimbă în funcție ​de temperatură:+    Culorile se schimba progresiv in functie ​de temperatura:
       * Sub 20°C → albastru       * Sub 20°C → albastru
-      * 20–25°C → tranziție interpolată ​albastru → verde +      * 20–25°C → tranzitie animata ​albastru → verde 
-      * 25–30°C → tranziție interpolată ​verde → roșu +      * 25–30°C → tranzitie animata ​verde → rosu 
-      * Peste 30°C → roșu complet + alarmă+      * Peste 30°C → rosu complet + alarma
  
-    ​Tranziția este realizată cu funcția ​`interPolateColor(temp)`, care folosește funcția ​`smoothstep` ​pentru easing și aplică ​un boost de intensitate pentru ​un efect vizual ​accentuat.+    ​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.
  
-  * **Alertă sonoră ​(RickRoll):​** +  * **Alerta sonora ​(RickRoll):​** 
-    La temperaturi peste 30°C se declanșează ​melodia ​Never Gonna Give You Up” prin buzzer (funcția ​`playRickRoll()`),​ ca metodă ​de alertă amuzantă. Un flag `alreadyRickRolled` previne repetarea ​inutilă ​a melodiei.+    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:**   * **Comunicare UART:**
-    Valorile ​măsurate ​sunt trimise continuu la monitorul serial din Arduino IDE prin `Serial.print()`.+    Valorile ​masurate ​sunt trimise continuu la monitorul serial din Arduino IDE prin `Serial.print()`.
  
-  * **Tratarea ​întreruperilor ​externe:​** +  * **Tratarea ​intreruperilor ​externe:​** 
-    Un buton conectat la pinul D2 activează ​întrerupere ​(`attachInterrupt()`), ​schimbând ​ciclic unitatea de măsură afișată ​pe LCD (Celsius → Kelvin → Fahrenheit).+    Un buton conectat la pinul D2 activeaza ​intrerupere ​(`attachInterrupt()`), ​schimband ​ciclic unitatea de masura afisata ​pe LCD (Celsius → Kelvin → Fahrenheit).
  
-=== Librării ​utilizate ===+=== Biblioteci ​utilizate ===
  
-Bibliotecă ​           ^ Scop                                      +Biblioteca ​           ^ Scop                                     ​
-| `LiquidCrystal_I2C` ​  | Control LCD 16x2 prin interfață ​I2C       ​+| `LiquidCrystal_I2C` ​  | Control LCD 16x2 prin interfata ​I2C      
-| `Wire.h` ​             | Comunicare I2C cu LCD                     ​+| `Wire.h` ​             | Comunicare I2C cu LCD                    
-| `DHT.h` ​              | Citire ​temperatură și umiditate (DHT22) ​ |+| `DHT.h` ​              | Citire ​temperatura si umiditate (DHT22) |
  
-=== Principii de proiectare ​și optimizări ​===+=== Principii de proiectare ​si optimizari ​===
  
-  * Codul este modular, fiecare ​funcționalitate ​fiind separată ​logic: +  * Codul este modular, fiecare ​functionalitate ​fiind separata ​logic: 
-    - `interPolateColor()` – control LED RGB în funcție de temperatură +    - `interPolateColor()` – realizeaza tranzitia animata intre temperaturi 
-    - `playRickRoll()` – declanșare alarmă sonoră+    - `applyColorForTemp()` – calculeaza culoarea pentru o temperatura data 
 +    - `playRickRoll()` – declansare alarma sonora
     - `setColor()` – scriere valori PWM pentru LED     - `setColor()` – scriere valori PWM pentru LED
-    - `ISR_BUTTON()` – tratarea ​întreruperii ​externe +    - `ISR_BUTTON()` – tratarea ​intreruperii ​externe 
-  * Se folosește ​`constrain()` pentru ​siguranță la generarea ​valorilor PWM. +  * Se foloseste ​`constrain()` pentru ​limitarea ​valorilor PWM in intervalul [0–255]
-  * `smoothstep` ​este utilizat ​pentru ​interpolare non-liniară între culori+  * Tranzitiile vizuale folosesc functia de easing ​`smoothstep` pentru ​efect natural. 
-  * Sistemul are un delay de 2 secunde ​între cicluri ​pentru ​a evita congestia de date și a permite răspunsul la întreruperi.+  * 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 === === Concluzie ===
  
-Partea software a proiectului ​integrează funcționalități ​de citire ​senzorială, feedback vizual ​și auditiv, comunicare ​serială și control prin întreruperi. Codul este clar, modular ​și extensibil pentru ​funcționalități ​ulterioare.+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 ===== ===== Rezultate Obţinute =====
  
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+Functionalitatile Proiectului pot fi urmarite pe Youtube: https://​youtu.be/​yKRfma8m8SQ 
-</​note>​+ 
 +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: 
 + 
 + ​{{:​pm:​prj2025:​fstancu:​proiect_final_niculici.jpeg?​500|BEEP & Heat}} 
 + ​{{:​pm:​prj2025:​fstancu:​proiect_final_spate_niculici.jpeg?​500|BEEP & Heat}} 
  
 ==== Concluzii ==== ==== Concluzii ====
Line 159: Line 186:
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Mai jos se regasesc fisierele rezultate in urma realizarii ​proiectului ​BEEP & Heat – Statia meteo cu alerta sonora si vizuala:
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării ​proiectului: ​surse, scheme, etc. 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**. +Schema electrica (.sch): {{pm:prj2025:fstancu:schematic.zip}}
-</​note>​+
  
-===== Jurnal =====+Cod sursa Arduino (.ino): {{pm:​prj2025:​fstancu:​source_code.zip}}
  
-<note tip> +==== Jurnal ==== 
-Puteți avea și o secțiune de jurnal ​în care să poată urmări asistentul ​de proiect progresul ​proiectului. + 
-</​note>​+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 16x2 – 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 ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +  * Articol despre interpolare smoothstep – https://​en.wikipedia.org/​wiki/​Smoothstep 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  Rick Roll folosind Buzzer – https://www.youtube.com/​watch?​v=NL-KFLt1ifY 
-</note>+  * Senzor de DHT22 – https://​arduinogetstarted.com/​tutorials/​arduino-dht22
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
- 
pm/prj2025/fstancu/mihai.niculici.1748353620.txt.gz · Last modified: 2025/05/27 16:47 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