Raspberry Pi: Desk weather station

Il progetto che propongo in questo articolo non è il solito circuito con vari sensori in grado di effettuare letture e registrare dati. Questo è più una sorta di "station" da tavolo che visualizza, su un LCD 20x4, le previsioni meteo lette dal canale Yahoo, l'orario e data, temperatura/umidità esterna e temperatura interna al locale. In realtà il progetto nacque per far pratica sulla board Raspberry Pi poi, invece, si rilevò anche un oggetto utile per la casa. L'articolo si concentra non tanto sulla realizzazione dell'oggetto in sé ma sulle varie funzioni del circuito e sull'approfondimento del programma scritto in Python. Alcune particolarità della station sono la visualizzazione delle previsioni meteo in Italiano, la possibilità di registrare i dati letti dal sensore DS18B20 in Google Drive, l'invio del meteo giornaliero in email e la gestione vocale, tramite un altoparlante amplificato e una scheda audio USB, per la lettura dell'orario e della temperatura.

Come detto, questo progetto nasce per fare pratica con la Raspberry Pi, per tanto ho cercato d'inserire diverse funzioni da sperimentare; tra queste troviamo:

  1. Visualizzazione dei dati sul lcd 20x4 :
    1. Data;
    2. Ora;
    3. Temperatura esterna;
    4. Umidità esterna;
    5. Temperatura interna;
    6. Previsioni meteo odierna di una città a scelta;
    7. Previsioni meteo per i successivi 4 giorni;
  2. Gestione vocale per la lettura della:
    1. Data;
    2. Ora;
    3. Temperatura;
    4. Umidità.
  3. Invio email giornaliero a orario stabilito con:
    1. Previsioni meteo della giornata;
    2. Proverbio del giorno.
  4. Gestione dei dati:
    1. Scrive periodicamente i dati letti su un file xls in Google Drive.

Le informazioni appaiono sullo schermo con data e ora nella prima riga, temperatura interna/esterna e umidità alla seconda riga, nelle restanti due le previsioni meteo alterandosi un giorno alla volta ogni cinque secondi.

PI Weather

Tutte queste funzioni utilizzano vari moduli e applicativi, alcune di terze parti e altre di mia realizzazione, gestite dal programma principale nominato "index.py". Nel dettaglio sono organizzati nel seguente modo:

PI Weather

Index.py: programma principale che gestisce moduli e applicativi come "espeak" per la sintesi vocale, "pywapi" per le previsioni meteo, "gspread" per il salvataggio dei dati in Google Drive, "HD44780_20x4.py" per la gestione del display, inoltre configura e invia l'email con le previsioni del giorno e in fine legge i valori della temperatura interna dal sensore DALLAS DS18B20 (già visto in un altro articolo).

pywapi.py: una classe che, tramite codice della propria città, ricava i dati delle previsioni meteo da un server a scelta tra "Yahoo! Weather", "Weather.com" o "NOAA"; per questo progetto ho scelto di utilizzare "Yahoo! Weather". I dati ricevuti dal server sono in Inglese ma volendo però visualizzare il testo in Italiano ho realizzato un modulo, nominato "previsioni.py", per la traduzione dei testi. Il principio di funzionamento è semplice; ho registrato in una funzione dizionario tutti i testi delle previsioni generabili dal server (circa 47) per essere poi confrontate col dato ricevuto e restituire la corrispondenza in Italiano. Raramente capita che il server meteo venga aggiornato con dei nuovi codici e testi di previsione, di conseguenza il programma (index.py) non troverà la corrispondenza per la traduzione nel suo dizionario, in tal caso provvederà a creare un file di testo, nominato "newforecast", con i testi delle mancate traduzioni. I testi tradotti possono essere inseriti manualmente nel dizionario senza pregiudicare il funzionamento del programma principale. Esempio della struttura di "previsioni.py":

diz_terms={'sunrise':'Alba','sunset':'Tramonto','Partly Cloudy':'Parz. nuvoloso','Sunny':'Soleggiato','Showers':'Pioggia leggera',
           'Scattered Thunderstorms':'Temporali dispersi','PM Thunderstorms':'Temporale al PM','AM Thunderstorms':'Temporali al AM','Thunderstorms':'Temporali', ....

proverbi.py: un dizionario con 366 proverbi corrispondenti uno per ogni giorno dell'anno (29 Febbraio compreso). Il proverbio corrispondente alla data corrente verrà allegato alla email con le previsioni del giorno. In index.py è possibile inserire l'invio email a più destinatari.

HD44780_20x4.py: un modulo per la configurazione e gestione del LCD tipo HITACHI HD44780.

Schema elettrico

PI Weather (1)

Lo schema elettrico è composto da un LCD 20x4 della HITACHI, un trimmer per regolare il contrasto del LCD, un sensore temperatura [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3414 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

11 Commenti

  1. Avatar photo Maurizio 8 Dicembre 2015
    • Avatar photo Ernesto Sorrentino 9 Dicembre 2015
  2. Avatar photo Daniele Cacciabaudo 10 Dicembre 2015
  3. Avatar photo Fabio Musicco 10 Dicembre 2015
  4. Avatar photo f.amantea 18 Dicembre 2015
  5. Avatar photo L0cutus 19 Gennaio 2016
  6. Avatar photo Nicola Ricco 22 Gennaio 2016
  7. Avatar photo mihaium 27 Gennaio 2016
  8. Avatar photo Ottavio gemelli 19 Febbraio 2016
  9. Avatar photo Luca.Confortola 29 Novembre 2016

Rispondi a Fabio Musicco Annulla risposta

Seguici anche sul tuo Social Network preferito!

Send this to a friend