Stazione Meteo con Arduino

Uno dei progetti che ho sempre voluto realizzare era una Stazione Meteo con Arduino. Perchè? Da sempre volevo monitorare i dati meteo in una località di campagna in cui c’è una abitazione per la nostra residenza estiva. Durante i lavori di ristrutturazione dello stabile ho pensato di far predisporre delle vie cavi ed un box per sistemare una stazione meteo home made basata su Arduino. Così una serie di corrugati viaggiano dal soffitto al box a muro. Un alloggiamento Gewiss per componenti elettrici di casa fu lasciato completamente vuoto. Decisi anche di utilizzare questa stazione meteo per realizzare un sistema di domotica per controllare le luci esterne sia della casa che del giardino. Così acquistai anche dei relè allo stato solido (SSR) integrati su scheda perfettamente comandabili direttamente dalle uscite di Arduino senza bisogno di altri componenti intermedi.

  1. Componentistica del sistema
  2. Installazione esterna
  3. Progettazione elettronica principale Stazione Meteo con Arduino
  4. Comandi e Controllo da SMS
  5. Dati Meteo su database MySQL con servizio WEB
  6. Dati Meteo in tempo reale provenienti dalla Stazione Meteo con Arduino
  7. Per chi vuole realizzarla…

Stazione Meteo con Arduino - Box Gewiss a Muro

Due cavi di rete Ethernet furono passati dal box del sistema al terrazzo. Lo scopo era interconnettere tutta la sensoristica esterna per il rilevamento meteo. Una serie di altri sensori erano riservati al rilevamento dei parametri ambiente dell’interno della abitazione.

Componentistica del sistema

Decisi da subito i sensori da utilizzare per il rilevamento dei parametri ambiente esterni:

  • temperatura ed umidità:
    sensore DHT22 (AR2303)
    digitale con sistema di comunicazione bus 1-Wire
  • direzione ed intensità vento:
    anemometro integrato con bandieruola vento Davis
    un segnale analogico per la direzione del vento ed un segnale impulsivo per la velocità
  • luminosità ambiente:
    un sensore di luminosità TEMT6000
    segnale analogico
  • pressione barometrica:
    un sensore MS5611
    digitale con sistema di comunicazione bus I2C
  • pluviometro:
    rain gauge modello “Tipping Bucket” a bilanciere oscillante
    segnale impulsivo – un impulso ogni 0,3mm di pioggia
  • rilevamento pioggia:
    un segnale digitale per la presenza della pioggia, un segnale analogico per la quantità

Per i sensori da utilizzare per il rilevamento dei parametri ambiente interni:

  • temperatura ed umidità:
    sensore DHT22 (AR2303)
    digitale con sistema di comunicazione bus 1-Wire

A completare il corredo della dotazione del sistema aggiunsi:

  • Arduino Mega 2560
    il cervello del sistema
  • display grafico 128×64 completamente gestito in locale
    per la visualizzazione di tutti i dati e delle funzioni del sistema
  • un modulo GSM della serie SIM800L
    • per ricevere i comandi ed inviare le risposte via SMS
    • attraverso una connessione dati GPRS (o anche 2G) il modulo è in grado di inviare i dati del rilevamento ad un webserver su una pagina PHP appositamente progettata per caricare i dati su un database MySQL e renderli poi disponibili per la visione (si veda in fondo a questa pagina)
  • un RTC (real time clock) DS1307 – un calendario perpetuo autonomo tamponato da una batteria CR2303
    con sistema di comunicazione bus I2C
  • alimentatore principale 220V – 5V 2A switching
  • sistema di mantenimento a batteria formato da
    • batteria litio 18650 da 2500mAh 3.7V
    • circuito di ricarica e protezione
    • step-up per elevare la tensione da 3.3V (3.7V) a 5V per Arduino e tutto il resto della componentistica
    • interruttore a leva per lo spegnimento del sistema

Installazione esterna

Sul terrazzo, sul palo antenna, ho installato l’anemometro direzionale connesso ad un box metallico, ermetico ed industriale (recuparato da uno strumento dismesso, appunto industriale) per i collegamenti elettrici.

Stazione Meteo con Arduino - Anemometro Direzionale   Stazione Meteo con Arduino - Box installazione esterna

Nel box, dotato di finestra trasparente ho alloggiato una scheda millefori opportunamente preparata per ospitare il sensore di luminostià, l’elettronica del sensore pioggia ed i collegamenti per il sensore ambiente (temperatura ed umidità), le resistenze di pull-up, morsetti per la connessione e disconnessione rapida, connessione per il pluviometro.

L’anemometro direzionale ha un cavo con 4 fili colorati. Ho seguito questo semplice schema per il collegamento ad Arduino. Il filo NERO è l’impulsivo per il rilevamento della velocità del vento mentre il VERDE è il segnale analogico direzionale. Il ROSSO è il negativo mentre il GIALLO è l’alimentazione +5V.
Stazione Meteo con Arduino - connessione anemometro direzionale vento

Progettazione elettronica principale Stazione Meteo con Arduino

Una volta terminata l’installazione esterna iniziai i test dell’elettronica interna.

Inizialmente presi le misure dell’alloggiamento della cassetta Gewiss per determinare gli spazi disponibili per la realizzazione della scheda su cui alloggiare Arduino Mega 2560 e tutto il resto tenendo anche conto delle due schede dei relais allo stato solido.

Iniziai con assemblare i componenti per la Stazione Meteo su una basetta da laboratorio ed utilizzando un display LCD 2004 I2C per i test dei dati.

Stazione Meteo con Arduino - prototipazione elettronica e test

Riuscii a testare:

  • Sensore di umidità e temperatura
  • Sensore di luminosità
  • Sensore di pressione barometrica
  • Direzionale del sensore vento
  • … ed il calendario bufferizzato con batteria

Misi sul display tutti i dati per valutarne la bontà. Dopo il test dei componenti base passai a testare il funzionamento del modulo GSM SIM800L. Pre-assemblai il modulo sulla stessa scheda e mi concentrai solo sugli SMS: il mio obiettivo era fare in modo di ricevere dei comandi da remoto e consentire al sistema di rispondere. Finita la fase di test di questo componente decisi di incorporare il modulo carica batterie, la batteria litio e lo step-up per l’alimentazione.

Sostituii il display LCD 2004 I2C con il display grafico 128×64.

Il tutto venne assemblato su una scheda 1000 fori tagliata su misura. Predisposi una serie di connettori per consentire un facile inserimento e disinserimento delle connessioni dei cavi all’interno del box. A completamento aggiunsi un connettore USB da pannello che consente di collegarsi ad Arduino senza smontare il coperchio del box.

Stazione Meteo con Arduino - realizzazione scheda Arduino con batteria, RTC, SIM800 e display grafico

Testando la durata della batteria (da completamente carica), con tutti i moduli accesi, incluso il display, raggiunsi il valore di 25 minuti, tempo sufficiente ed abbondante, tenendo conto che la il sistema è sempre alimentato dalla rete di casa, ma in caso di interruzione di energia elettrica la batteria era in grado di reggere a sufficienza.

Collegai l’uscita del regolatore ad un pin di Arduino in modo da gestire la mancanza di rete di alimentazione inviando un SMS o attivando un servizio web remoto.

La scheda della Stazione Meteo con Arduino era così pronta per i primi test sul posto.

Stazione Meteo con Arduino - installazione stazione meteo con arduino in box gewiss a muro

Attraverso i comandi AT del modulo SIM800L ero anche in grado di leggere il valore di ricezione del campo GSM. Iniziai a sistemare i dati sul display grafico in modo da renderlo facile ed intuitivo da leggere.

Prima di procedere con lo sviluppo del software decisi di finalizzare la parte “meccanica” del box. Così alloggiai il display all’interno della parte frontale del box Gewiss assemblandoli tra di loro con viti in acciaio e rondelle in Ergal da modellismo.

Stazione Meteo con Arduino - stazione meteo con arduino installata in box gewiss a muro con display

A questo punto la fase finale era passare a sistemare per bene tutti i dati sul display ed a rendere funzionante l’altra parte per cui questa stazione era nata: la domotica delle luci esterne ed il controllo via SMS.

Dotai il pannello frontale di 3 pulsanti con le seguenti funzioni:

  • pulsante cambio pagina
  • pulsante selezione funzioni
  • pulsante attivazione funzioni

Le pagine disponibili sono:

  • pagina meteo che visualizza i seguenti dati:
    • Intensità segnale GSM
    • Stato SMS (ricezione, invio, attesa)
    • Temperatura interna nel box
    • Stato dell’alimentazione:
      • dalla rete (simbolo della presa elettrica)
      • da batteria (simbolo di presa elettrica barrata) in caso di interruzione energia elettrica
    • Tensione di alimentazione
    • Pressione atmosferica in mBar con il relativo simbolo
    • Luminosità esterna in lux
    • Data ed ora del clock real time
    • Direzione ed intensità del vento con visione grafica della direzione e nome direzione del vento
  • pagina gestione luci che visualizza
    • Intensità segnale GSM
    • Stato SMS (ricezione, invio, attesa)
    • Temperatura interna nel box
    • Stato dell’alimentazione:
      • dalla rete (simbolo della presa elettrica)
      • da batteria (simbolo di presa elettrica barrata) in caso di interruzione energia elettrica
    • Tensione di alimentazione
    • Grafico rappresentativo della casa e della disposizione delle luci
    • Intensità della luce esterna in lux
    • Soglia di attivazione e tempo di intervento del crepuscolare
    • Indicazione del crepuscolare attivato con tempo di accensione del crepuscolare
    • Tempi di accensione di ogni singolo segmento di luci
    • Stato delle luci, come segue:
      • angolino superiore sinistro evidenziato – crepuscolare attivo su quella luce
      • angolino inferiore destro evidenziato – timer per la disattivazione della luce con il tempo impostato (in minuti)
      • rettangolo pieno – luce accesa dal sistema
      • in basso indicazioni numeriche e testuali indicano il tempo rimasto prima dello spegnimento automatico (se impostato)

Attraverso questa schermata con i tasti di selezione funzione e attivazione è possibile selezionare ogni singolo segmento luci e spegnere o accendere oppure spegnere o accendere tutte le luci del giardino o del perimetro casa o tutti i segmenti insieme.

Comandi e Controllo da SMS

Attraverso dei semplici SMS inviati al numero di telefono della SIM contenuta nel modulo SIM800L è possibile comandare o impostare i parametri del sistema come segue:

  • Impostare il timer del crepuscolare in minuti
    IMPOSTA TIMER #xxxx# dove xxxx è il tempo in minuti
  • Impostare la soglia di attivazione del crepuscolare in lux
    IMPOSTA CREPUSCOLARE #xxx.xx# dove xxx.xx è il valore in lux sotto il quale il crepuscolare deve intervenire
  • Impostare i lampioni in manuale, nessun automatismo (ne timer ne crepuscolare)
    MANUALE LAMPIONI 
  • Impostare le lanterne in manuale, nessun automatismo (ne timer ne crepuscolare)
    MANUALE LANTERNE
  • Impostare i lampioni in modalità timer – quando vengono accesi dal sistema (o dal pannello o dal SMS) verranno spenti in automatico in base al timer impostato nel sistema
    TIMER LAMPIONI
  • Impostare le lanterne in modalità timer – quando vengono accesi dal sistema (o dal pannello o dal SMS) verranno spenti in automatico in base al timer impostato nel sistema
    TIMER LANTERNE
  • Impostare i lampioni in modalità crepuscolare – quando il crepuscolare interviene saranno accese le luci e si spegneranno al mattino al ritorno del sole
    CREPUSCOLARE LAMPIONI 
  • Impostare le lanterne in modalità crepuscolare – quando il crepuscolare interviene saranno accese le luci e si spegneranno al mattino al ritorno del sole
    CREPUSCOLARE LANTERNE
  • Impostare i lampioni in modalità crepuscolare/timer – quando il crepuscolare interviene saranno accese le luci e si spegneranno allo scadere del tempo impostato nel sistema
    CREPUSCOTIMER LAMPIONI 
  • Impostare le lanterne in modalità crepuscolare/timer – quando il crepuscolare interviene saranno accese le luci e si spegneranno allo scadere del tempo impostato nel sistema
    CREPUSCOTIMER LANTERNE
  • Accensione o spegnimento di singoli sezioni di luci o anche più di una in contemporanea
    es. ACCENDI LAMPIONE SINISTRA DESTRA DIETRO LANTERNA FRONTALE POSTERIORE
    farà accendere i lampioni di sinistra, di destra, posteriore e le lanterne frontali e posteriore con un unico messaggio SMS
  • Richiedere lo stato del sistema
    STATO DEL SISTEMA
    il sistema risponde con un SMS includendo tutti i dati della stazione meteo, i settaggi delle sezioni luci, lo stato del crepuscolare ed accensione delle luci
  • A scopo di test è possibile usare alcuni SMS dedicati:
    DISPLAY ON o DISPLAY OFF per accendere o spegnere il display locale
    TEST ON o TEST OFF per accendere o spegnere il LED a bordo di Arduino

Il sistema memorizza tutti i parametri modificati via SMS in EEPROM di Arduino. Ogni volta che il sistema riceve un SMS estrae data ed ora e sincronizza il clock del modulo RTC, senza così bisogno di impostarlo ogni volta manualmente.

Dati Meteo su database MySQL con servizio WEB

Grazie al modulo SIM800L il sistema è in grado di inviare i dati della stazione meteo ad un database remoto MySQL attraverso una pagina WEB scritta in PHP capace di acquisire i dati e memorizzarli in un database.

Ogni 10 minuti, la Stazione Meteo con Arduino invoca una pagina web utilizzando il metodo HTTP GET accodando i parametri da inviare.

Il link è quindi del tipo

http://www.tuosito.ext/pagina.php?par1=xxx&par2=yyy&….

dove

  • www.tuosito.ext è l’indirizzo web del sito dove gira il servizio web
  • pagina.php è la pagina con il codice per catturare i dati ed inviarli al database
  • par1=…, par2=…. sono i parametri da inviare

una serie di altre pagine poi rendono graficamente disponibili i dati rilevati memorizzati come segue nei grafici qui sotto.

Dati Meteo in tempo reale provenienti dalla Stazione Meteo con Arduino

Qui di seguito sono riportati i dati meteo della stazione aggiornati ogni 10 minuti circa.
Vi sono 3 grafici e 2 radar di cui:

  • Grafico temperature ed umidità interna / esterna e temperatura della scheda nel box
  • Grafico curva barometrica e di luminosità
  • Grafico della direzione e della velocità del vento
  • Radar direzionale del vento
  • Radar intensità (velocità) del vento per direzione

I grafici sono ottenuti estraendo i dati dal database per l’ultimo giorno ed una serie di link consente di estrarli fino a 5 giorni indietro.
Ulteriori possibilità di consultazione dei dati saranno disponibili a breve con funzionalità avanzate.

Ecco di seguito i dati della stazione meteo:

Per chi vuole realizzarla…

Se vuoi realizzare una stazione meteo con Arduino con funzionalità simili o identiche a quella proposta in questo articolo, segui questo link ove troverai i dettagli sia dell’hardware ma soprattutto del software, con vari sketch che possono essere prontamente utilizzati per questo scopo.