Table of Contents

Statie Meteo

Autor: RACHIERU Costin-Tudor

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

  1. 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).
  2. 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
  3. BMP 180
    • Senzorul folosit pentru achizitionarea datelor legate de temperatura si presiune atmosferica
    • Actualizarea informatiilor se face la fiecare 2 secunde
  4. DHT 22
    • Senzorul folosit pentru achizitionarea datelor legate de temperatura si umiditatea din aer
    • Actualizarea informatiilor se face la fiecare 2 secunde
  5. Push-Button Dreapta
    • Cicleaza in sens cronologic prin lista de anotimpuri
    • Cicleaza intre modurile de afisare
  6. Push-Button Mijloc
    • Cicleaza in sens anti-cronologic prin lista de anotimpuri
    • Porneste / Opreste backlight-ul LCD-ului
  7. Push-Button Stanga
    • Face selectia anotimpului afisat
    • Face o cerere a unei predictii a vremii.

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
Conectare LCD 1602 I2C

Software Design

IMPLEMENTARE

Biblioteci folosite
Program
  1. Inainte de Setup():
    • Initializarea variabilelor in care se vor retine parametrii principali de functionare si lista de predictii ale vremii
  2. 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
  3. Loop():
    • Realizarea citirilor de pe fiecare senzor si calcularea valorilor ce trebuie afisate
    • Afisarea datelor cerute
    • Setarea refresh-rate-ului datelor la 2 secunde (valoare default)
    • Apelul functiei my_delay
  4. 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).
  5. 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.
  6. check_forecast()
    • Calculeaza la cerere indicele Zambretti Z pentru a putea alege din lista de predictii pe cea care se preteaza cel mai bine.

Rezultate Obţinute

In final, am obtinut o statie meteo care se preteaza urmaririi informatiilor meteorologice relevante, dar si a parametriilor ambientali. Astfel se poate verifica indicele de confort din locuinta sau de afara (in functie de temperatura si umiditate), iar pe baza presiunii atmosferice si a temperaturii se poate face o predictie a vremii.







Video: https://youtu.be/w0Lrs7qO590

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

meteo_station_costinrachieru.zip

Bibliografie

https://keisan.casio.com/exec/system/1224585971
https://www.math24.net/barometric-formula
https://web.archive.org/web/20110610213848/http://www.meteormetrics.com/zambretti.htm
wiki_page_costinrachieru.pdf