Statie Meteo
Introducere
Statie meteo pentru monitorizarea parametrilor meteorologici ambientali si realizarea unei predictii bazate pe algoritmul Zambretti.
Dupa selectarea anotimpului este posibila afisarea mai multor parametrii in 4 moduri de afisare:
- Temperatura / Umiditate
- Temperatura / Presiune
- Umiditate / Presiune
- Altitudine
Temperatura afisata este media temperaturilor primite de la cei doi senzori.
De asemenea se poate face o interogare dupa cel putin 10 minute de functionare pentru a afla o predictie a vremii.
Descriere generală
Schema Bloc
Arduino UNO
Interogheaza fiecare senzor, prelucreaza datele si in functie de input-ul utilizatorului afiseaza pe LCD informatiile cerute
Retine informatiile necesare realizarii unei predictii a vremii (retine masuratorile la fiecare 10 secunde pentru a face o medie).
LCD 1602 I2C
Afiseaza informatiile meteorologice si erorile de la senzori (alimentare gresita / contact
imperfect / fail la citire)
4 moduri de afisare
Backlight-ul poate fi oprit/pornit
La cerere afiseaza o predictie a vremii dupa cel putin 10 minute de functionare, intr-un mod de scroll(daca nu a trecut suficient timp este afisat un mesaj sugestiv). Afisarea predictiei poate fi oprita la apasarea oricarui buton, altfel se opreste singura dupa ce se deruleaza de doua ori pe ecran.
La punerea in functiune a statiei meteo exista un user-interface in care user-ul alege anotimpul curent
Anotimpul care pulseaza este cel ales
Functioneaza la refresh-rate de 0.5Hz, intrucat nu este necesara actualizarea mai rapida a datelor afisate
BMP 180
DHT 22
Push-Button Dreapta
Push-Button Mijloc
Push-Button Stanga
Hardware Design
Piese Folosite
Nume | Numar |
Arduino Uno | 1 |
Push-Button | 3 |
Senzor BMP 180 | 1 |
Senzor DHT 22 | 1 |
Breadboard | 1 |
LCD 1602 I2C | 1 |
Schema electrica
Conectare Senzor DHT 22
Conectare Senzor BMP 180
Este alimentat la 3.3V de la Arduino
Este conectat la arduino prin conexiunea seriala I2C, modul care vine integrat in senzor
Conectare LCD 1602 I2C
Este alimentat la 5V de la Arduino
Conectarea LCD-ului la arduino se face prin folosirea conexiunii seriale I2C.
LCD-ul are modulul I2C deja integrat, astfel nu a fost nevoie sa fac conexiunile cu pinii ecranului, astfel reducand foarte mult numarul pinilor folositi.
Software Design
IMPLEMENTARE
Biblioteci folosite
LiquidCrystal_I2C.h - Pentru LCD
SFE_BMP180.h - Pentru senzorul BMP 180 de temperatura si presiune atmosferica
DHT.h - Pentru senzorul DHT 22 de temperatura si umiditate
Program
Inainte de Setup():
Setup():
Initializarea cu valori default a variabilelor
Initializarea pinilor
Initializarea LCD-ului
Initializarea senzorului DHT22
Initializarea senzorului BMP180
User-Interface-ul pentru alegerea anotimpului curent de care nu se poate trece pana nu este facuta o alegere
Loop():
my_delay(unsigned long time_delay, short memory):
Functionalitatea e aceeasi ca a unui delay normal care asteapta time_delay ms
In timpul delay-ului verifica si apasarea butoanelor pentru input de la utilizator
Daca memory este 1 atunci apeleaza functia de prelucrare a datelor pentru predictia vremii. Practic apeleaza aceasta functie la aproximativ DELAY_BETWEEN_MEASURMENTS ms (default este 2 secunde).
compute_data_stored():
La fiecare DELAY_BETWEEN_MEASURMENTS * TRIGGER_VALUE se face o noua inregistrare a datelor. TIRGGER_VALUE este default 5.
Se retine media pe ultimele MAX_MEASURMENTS (default este 30). Practic se retine media presiunilor pe fiecare 5 minute pentru a se putea stabili daca aceasta creste, scade sau este constanta.
check_forecast()
Rezultate Obţinute
Concluzii
Proiectul este functional, poate fi folosit pentru urmarirea informatiilor, insa din cauza vremii foarte schimbatoare din Bucuresti din ultimul timp, algoritmul Zambretti ar mai putea fi imbunatatit in mod empiric prin schimbarea timpului de esantionare si a altor cativa parametrii. Momentan am observat o rata de succes a predictiilor de aproximativ 60%, insa aceasta poate creste chiar pana la 90% in urma unui studiu amanuntit.
Download
Bibliografie