Statie Meteo

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

  • Mediază fluxul de date între senzori și LCD 16×2.

- 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

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

  • 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
  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

Concluzii

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

Download

Bibliografie

pm/prj2021/avaduva/statiemeteo.txt · Last modified: 2021/06/02 13:12 by ana.simionescu
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