Table of Contents

Statie Meteo

Autor: SIMIONESCU Ana-Maria

Introducere

Proiectul constă în monitorizarea temperaturii, umidității și presiunii atmosferice în fiecare moment de timp și afișarea acestor informații pe un ecran LCD.

Descriere generală

Ecranul LCD se deschide cu afișajul “Stație Meteo”. Utilizatorul poate alege ce informație își dorește sa fie afișată pe ecran. Astfel, apăsând pe unul dintre cele 3 butoane, afișajul LCD-ului se schimbă pentru a arăta temperatura, umiditatea sau presiunea. În orice moment utilizatorul poate decide să afișeze un alt parametru din cele 3. Dacă nu este apăsat un alt buton, valoarea parametrului afișat este actualizată constant, interogând senzorii la fiecare loop.

Schema Bloc






















- Arduino Uno R3

- Senzor Temperatură și Umiditate

- Senzor Presiune Atmosferică și Temperatură

- LCD-I2C

- Buton 1

- Buton 2

- Buton 3

Hardware Design

Lista de piese

Schema electrica

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

IMPLEMENTARE

Biblioteci folosite
Program
  1. 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
  2. setup_LCD():
    • Inițializarea backlight-ului
    • Afișarea mesajului inițial
  3. setup():
    • Setarea pinilor pentru butoane
    • Inițializarea LCD-ului
    • Inițializarea senzorului de temperatură și umiditate DHT
    • Inițializarea senzorului de presiune BMP180
  4. show_temp():
    • Citirea temperaturii de la senzor
    • Afișarea temperaturii pe LCD
  5. show_humid():
    • Citirea umidității de la senzor
    • Afișarea umidității pe LCD
  6. show_pressure():
    • Citirea presiunii de la senzor
    • Afișarea presiunii pe LCD
  7. 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



Video: https://youtu.be/UEm-iNqVZJI

Concluzii

Proiectul este complet funcțional și poate fi folosit pentru a determina temperatura, umiditatea și presiunea atmosferică la fiecare moment de timp.

Download

statie_meteo.zip

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