This shows you the differences between two versions of the page.
pm:prj2023:razvans:statie_meteo [2023/05/29 23:59] dan.teodosescu [Hardware Design] |
pm:prj2023:razvans:statie_meteo [2023/05/30 14:08] (current) dan.teodosescu [Download] |
||
---|---|---|---|
Line 58: | Line 58: | ||
Rezultate ale simularii: | Rezultate ale simularii: | ||
+ | Simulare1: | ||
Linia 1: | Linia 1: | ||
Line 69: | Line 69: | ||
*Presiune: 1005.21hPa | *Presiune: 1005.21hPa | ||
- | {{:pm:prj2023:razvans:simulare1.jpg?400|}} | + | {{:pm:prj2023:razvans:simulare1.jpg?250|}} |
+ | |||
+ | Simulare1: | ||
+ | Linia 1: | ||
+ | |||
+ | *Temperatura: 26°C | ||
+ | *Umiditate: 48% | ||
+ | *Intensitate UV: 0UV | ||
+ | |||
+ | Linia 2: | ||
+ | |||
+ | *Presiune: 1008.74hPa | ||
+ | |||
+ | {{:pm:prj2023:razvans:simulare2.jpg?250|}} | ||
</note> | </note> | ||
Line 76: | Line 89: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Mediul de dezvoltare: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | Pentru acest poiect am folosit Arduino IDE pentru a programa pe Arduino UNO intrucat este o aplicație ușor de utilizat și gratuită, care oferă o serie de funcționalități utile pentru dezvoltarea proiectelor pe platforma Arduino. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | Librarii: |
+ | |||
+ | *Wire: Este o bibliotecă standard în Arduino IDE și este utilizată pentru comunicarea I2C. Este necesară pentru a comunica cu senzorul BMP180 și permite transferul datelor digitale între Arduino și senzor. | ||
+ | *LiquidCrystal_I2C: Această bibliotecă permite controlul afișajului LCD cu interfață I2C. Este utilizată pentru a afișa valorile temperaturii, umidității, presiunii atmosferice și nivelului de radiație UV pe afișajul LCD. | ||
+ | *dht: Această bibliotecă este folosită pentru a citi datele de la senzorul DHT11. Ea oferă funcții pentru a citi temperatura și umiditatea ambientală și este utilizată în cod pentru a obține valorile temperaturii și umidității. | ||
+ | *Adafruit_BMP085: Această bibliotecă este dezvoltată de Adafruit și este utilizată pentru a interacționa cu senzorul BMP180. Ea oferă funcții pentru a citi presiunea atmosferică și temperatura de la senzorul BMP180. | ||
+ | |||
+ | Listarea algoritmului: | ||
+ | |||
+ | #include <Wire.h> | ||
+ | #include <LiquidCrystal_I2C.h> | ||
+ | #include <dht.h> | ||
+ | #include <Adafruit_BMP085.h> | ||
+ | |||
+ | #define dht_apin A0 | ||
+ | #define UV_SENSOR_PIN A1 | ||
+ | |||
+ | LiquidCrystal_I2C lcd(0x3F, 16, 2); | ||
+ | Adafruit_BMP085 bmp; | ||
+ | dht DHT; | ||
+ | |||
+ | void setup() { | ||
+ | lcd.init(); | ||
+ | lcd.clear(); | ||
+ | lcd.backlight(); | ||
+ | bmp.begin(); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | DHT.read11(dht_apin); | ||
+ | |||
+ | float temperature = DHT.temperature; | ||
+ | float humidity = DHT.humidity; | ||
+ | float pressure = bmp.readPressure() / 100.0; | ||
+ | int uvValue = analogRead(UV_SENSOR_PIN); | ||
+ | |||
+ | lcd.clear(); | ||
+ | |||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("T:"); | ||
+ | lcd.print((int)temperature); | ||
+ | lcd.print("C"); | ||
+ | |||
+ | lcd.setCursor(6, 0); | ||
+ | lcd.print("H:"); | ||
+ | lcd.print((int)humidity); | ||
+ | lcd.print("%"); | ||
+ | |||
+ | lcd.setCursor(0, 1); | ||
+ | lcd.print("P:"); | ||
+ | lcd.print(pressure); | ||
+ | lcd.print("hPa"); | ||
+ | |||
+ | lcd.setCursor(12, 0); | ||
+ | lcd.print("UV:"); | ||
+ | lcd.print(uvValue); | ||
+ | |||
+ | delay(5000); | ||
+ | } | ||
+ | |||
+ | Detaliere a algoritmului: | ||
+ | |||
+ | Initializarea: | ||
+ | |||
+ | *Se includ bibliotecile necesare pentru comunicația prin I2C, citirea senzorilor DHT11 și BMP180 | ||
+ | *Se definește pinul analogic pentru senzorul UV | ||
+ | *Se creează obiectele pentru afișajul LCD și senzorii DHT11 și BMP180. | ||
+ | *În funcția setup(), se inițializează afișajul LCD, senzorul BMP180 și se curăță ecranul | ||
+ | |||
+ | Citirea datelor: | ||
+ | |||
+ | *În bucla principală loop(), se citesc valorile de temperatură și umiditate utilizând funcția DHT.read11(). | ||
+ | *Se citește presiunea atmosferică utilizând funcția bmp.readPressure(), iar apoi rezultatul este împărțit la 100.0 pentru a obține valoarea în hPa. | ||
+ | *Se citește nivelul de radiație UV utilizând funcția analogRead() pentru pinul senzorului UV. | ||
+ | *Valorile citite pentru temperatură, umiditate, presiune și nivelul de radiație UV sunt stocate în variabile corespunzătoare. | ||
+ | |||
+ | Afișarea datelor pe LCD: | ||
+ | |||
+ | *Se curăță ecranul LCD utilizând funcția lcd.clear(). | ||
+ | *Se setează cursorul LCD pentru afișarea valorilor citite. | ||
+ | *Utilizând funcția lcd.print(), se afișează valorile citite pentru temperatură, umiditate, presiune și nivelul de radiație UV pe LCD. | ||
+ | |||
+ | Pauză și repetare: | ||
+ | |||
+ | *Se folosește funcția delay() pentru a realiza o pauză de 5 secunde între actualizările afișajului. | ||
+ | *Algoritmul se repetă în mod continuu, actualizând valorile și afișându-le pe LCD. | ||
</note> | </note> | ||
Line 86: | Line 184: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{:pm:prj2023:razvans:statiemeteo.jpg?400|}} |
+ | |||
+ | 1.Afișarea temperaturii: Pe afișajul LCD, veți putea vedea temperatura ambientală în grade Celsius. Valorile ar trebui să fie precise și să se actualizeze la intervale de 5 secunde. | ||
+ | |||
+ | 2.Afișarea umidității: Pe afișajul LCD, veți putea vedea nivelul de umiditate ambientală exprimat în procente (%). Valorile ar trebui să fie precise și să se actualizeze împreună cu temperatura. | ||
+ | |||
+ | 3.Afișarea presiunii atmosferice: Pe afișajul LCD, veți putea vedea presiunea atmosferică exprimată în hectopascale (hPa). Valorile ar trebui să fie precise și să se actualizeze împreună cu temperatura și umiditatea. | ||
+ | |||
+ | 4.Afișarea nivelului de radiație UV: Pe afișajul LCD, veți putea vedea nivelul de radiație UV citit de senzorul UV. Valorile ar trebui să reflecte nivelul de radiație UV la care senzorul este expus. Este important să rețineți că pentru o măsurare corectă a radiației UV, senzorul trebuie să fie expus la sursa de radiație UV. | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | <note tip> | ||
+ | În cadrul proiectului, am reușit să dezvoltăm un sistem de monitorizare a temperaturii, umidității, presiunii atmosferice și radiației UV. Am integrat cu succes mai multe componente hardware și am implementat un cod software adecvat pentru a obține măsurători precise și pentru a afișa aceste informații pe un afișaj LCD. | ||
- | ===== Download ===== | + | Sistemul dezvoltat oferă o monitorizare în timp real a parametrilor climatici și a nivelului de radiație UV. Utilizatorul poate vizualiza aceste informații pe afișajul LCD, ceea ce îi permite să obțină o perspectivă asupra condițiilor de mediu. Aceasta poate fi utilă în diverse domenii, cum ar fi agricultura, monitorizarea mediului sau aplicații de siguranță. |
- | <note warning> | + | Proiectul are o valoare practică semnificativă în monitorizarea și înțelegerea condițiilor de mediu. Permite utilizatorilor să obțină date relevante despre temperatură, umiditate, presiune atmosferică și nivelul de radiație UV, ajutându-i să ia decizii informate în diverse domenii de activitate. |
- | 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**. | + | Posibile îmbunătățiri: |
- | </note> | + | |
- | ===== Jurnal ===== | ||
- | <note tip> | + | *Calibrarea și ajustarea senzorilor pentru a obține măsurători mai precise. |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | *Implementarea unei funcționalități de înregistrare a datelor pentru a putea analiza și urmări evoluția parametrilor de mediu pe o perioadă mai lungă de timp. |
+ | *Extinderea sistemului prin adăugarea de funcționalități suplimentare, cum ar fi conectivitatea la rețea sau integrarea cu un sistem de control automat. | ||
</note> | </note> | ||
+ | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2023:razvans:arhivaa.rar|}} | ||
+ | |||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |