This shows you the differences between two versions of the page.
pm:prj2021:avaduva:statiemeteo [2021/06/01 16:28] ana.simionescu |
pm:prj2021:avaduva:statiemeteo [2021/06/02 13:12] (current) ana.simionescu |
||
---|---|---|---|
Line 14: | Line 14: | ||
==Schema Bloc== | ==Schema Bloc== | ||
- | {{:pm:prj2021:avaduva:statie_meteo.png?nolink&300 |}} | + | {{:pm:prj2021:avaduva:statie_meteo.png?nolink&600 |}} |
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | - Arduino Uno R3 | ||
+ | * Mediază fluxul de date între senzori și LCD 16x2. | ||
+ | - Senzor Temperatură și Umiditate | ||
+ | * Măsoară temperatura și umiditatea | ||
+ | - Senzor Presiune Atmosferică și Temperatură | ||
+ | * Măsoară temperatura și presiunea atmosferică | ||
+ | - LCD-I2C | ||
+ | * La început este afișat mesajul "Stație Meteo". | ||
+ | * Dacă este apăsat primul buton afișează mesajul "Temperatura:", urmat de valoarea temperaturii. | ||
+ | * Dacă este apăsat al doilea buton afișează mesajul "Umiditate:", urmat de valoarea umidității. | ||
+ | * Dacă este apăsat al treilea buton afișează mesajul "Presiune:", urmat de valoarea presiunii. | ||
+ | - Buton 1 | ||
+ | * Dacă este apăsat determină interogarea senzorului DHT22 pentru valoarea temperaturii și afișarea acesteia. | ||
+ | - Buton 2 | ||
+ | * Dacă este apăsat determină interogarea senzorului DHT22 pentru valoarea umidității și afișarea acesteia. | ||
+ | - Buton 3 | ||
+ | * Dacă este apăsat determină interogarea senzorului DHT22 pentru valoarea temperaturii, senzorului BMP180 pentru calcularea presiunii și afișarea acesteia. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 30: | Line 68: | ||
| Fire mama-tata | | | | Fire mama-tata | | | ||
+ | ==== Schema electrica ==== | ||
+ | |||
+ | {{:pm:prj2021:avaduva:statie_meteo_schema_noua.png?nolink&750 |}} | ||
+ | |||
+ | == Conectare Senzor Temperatură și Umiditate DHT22 == | ||
+ | Senzorul are 3 pini: +(VCC), -(GND) si OUT. Pinii + și - se conectează la pinii | ||
+ | corespunzători de pe Breadboard, la rândul lor conectați la pinul de 5V, respectiv cel de GND de pe Arduino, iar pinul OUT se conecteaza la pinul 7 de pe Arduino. | ||
+ | |||
+ | == Conectare Senzor Presiune Atmosferică și Temparatură BMP180 == | ||
+ | Senzorul are 4 pini: VIN, GND, SCL și SDA. Pinii VIN și GND se conectează la pinii | ||
+ | corespunzători de pe Breadboard, la rândul lor conectați la pinul de 5V, respectiv cel de GND de pe Arduino, iar pinii SCL și SDA se conecteaza direct la pinii SCL, respectiv SDA de pe Arduino. | ||
+ | |||
+ | == Conectare LCD-I2C == | ||
+ | Ecranul LCD se conecteaza la Arduino folosind interfata seriala I2C, prin pinii GND, VCC, SDA, SCL. Pinii VCC și GND se conectează la pinii | ||
+ | corespunzători de pe Breadboard, la rândul lor conectați la pinul de 5V, respectiv cel de GND de pe Arduino, iar pinii SCL și SDA la pinii A4 și A5 de pe Arduino. | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | * Limbaj de programare folosit: C | ||
+ | * Mediu de dezvoltare si compilare: Arduino IDE | ||
+ | ===IMPLEMENTARE=== | ||
+ | |||
+ | ==Biblioteci folosite== | ||
+ | *LiquidCrystal_I2C.h - pentru LCD | ||
+ | *DHT.h - pentru senzorul de temperatură și umiditate | ||
+ | *SFE_BMP180.h - pentru senzorul de presiune atmosferică și temperatură | ||
+ | ==Program== | ||
+ | -Inainte de setup(): | ||
+ | *Definire de macro-uri | ||
+ | *Definirea pinilor folositi de LCD cu modulul extern | ||
+ | *Inițializarea claselor pentru LCD, DHT și BMP180 | ||
+ | *Inițializarea variabilelor | ||
+ | -setup_LCD(): | ||
+ | *Inițializarea backlight-ului | ||
+ | *Afișarea mesajului inițial | ||
+ | -setup(): | ||
+ | *Setarea pinilor pentru butoane | ||
+ | *Inițializarea LCD-ului | ||
+ | *Inițializarea senzorului de temperatură și umiditate DHT | ||
+ | *Inițializarea senzorului de presiune BMP180 | ||
+ | -show_temp(): | ||
+ | *Citirea temperaturii de la senzor | ||
+ | *Afișarea temperaturii pe LCD | ||
+ | -show_humid(): | ||
+ | *Citirea umidității de la senzor | ||
+ | *Afișarea umidității pe LCD | ||
+ | -show_pressure(): | ||
+ | *Citirea presiunii de la senzor | ||
+ | *Afișarea presiunii pe LCD | ||
+ | -loop(): | ||
+ | *Citește butoanele | ||
+ | *Dacă un buton a fost apăsat, verifică pe rând care dintre cele 3 | ||
+ | *Dacă a fost apăsat primul buton se setează pe true variabila care indică că trebuie afișată temperatură și pe false celelalte și se apelează funcția show_temp | ||
+ | *Dacă a fost apăsat al doilea buton se setează pe true variabila care indică că trebuie afișată umiditatea și pe false celelalte și se apelează funcția show_humid | ||
+ | *Dacă a fost apăsat al treilea buton se setează pe true variabila care indică că trebuie afișată presiunea și pe false celelalte și se apelează funcția show_pressure | ||
+ | *Dacă niciunul dintre butoane nu a fost apăsat, se reapeleaza funcția corespunzătoare valorii afișate la momentul respectiv, identificată prin variabila setată pe true. | ||
+ | *Variabila new_display reține dacă trebuie sa se dea clear la display pentru a afișa un alt parametru dintre cei 3 sau trebuie doar actualizată valoarea parametrului afișat deja. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | {{:pm:prj2021:avaduva:statie_meteo1.jpeg?nolink&350| }}{{ :pm:prj2021:avaduva:statie_meteo2.jpeg?nolink&350|}} | ||
+ | \\ | ||
+ | {{:pm:prj2021:avaduva:statie_meteo5.jpeg?nolink&350| }}{{ :pm:prj2021:avaduva:statie_meteo6.jpeg?nolink&350|}} | ||
+ | \\ | ||
+ | {{:pm:prj2021:avaduva:statie_meteo3.jpeg?nolink&350| }}{{ :pm:prj2021:avaduva:statie_meteo4.jpeg?nolink&350|}} | ||
+ | Video: https://youtu.be/UEm-iNqVZJI | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | + | Proiectul este complet funcțional și poate fi folosit pentru a determina temperatura, umiditatea și presiunea atmosferică la fiecare moment de timp. | |
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2021:avaduva:statie_meteo.zip|}} | ||
===== Bibliografie ===== | ===== Bibliografie ===== | ||
+ | https://www.instructables.com/How-to-Connect-I2C-Lcd-Display-to-Arduino-Uno/\\ | ||
+ | https://create.arduino.cc/projecthub/diyprojectslab/how-to-make-simple-weather-station-e99950\\ | ||
+ | https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf\\ | ||
+ | https://cdn-shop.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf |