Una stazione meteorologica con l’ESP32

L'ESP32 è una piattaforma di sviluppo versatile e molto conveniente. Essa è adatta a tutti i tipi di progetti di automazione domestica. Qui presentiamo un'applicazione specifica per una stazione meteorologica costruita con l'ESP32. I dati elaborati sono resi disponibili online.

Introduzione

Le caratteristiche della stazione meteorologica proposta sono di tutto rispetto:

  • misura la temperatura, la direzione del vento e la sua velocità,  l'umidità, la pressione dell'aria e le precipitazioni;
  • è possibile implementare un sensore opzionale per particelle fini;
  • presenza di porte aggiuntive per altri dispositivi;
  • supporta Thingspeak e senseBox;
  • può essere configurata su una pagine Web interna dell'ESP32;
  • funziona con un pannello solare, una batteria da 12 V o un adattatore da 8-28 VCC.

La stazione meteorologica con ESP32 rileva e misura i tradizionali parametri meteorologici: la temperatura, la direzione del vento e relativa velocità, l'umidità, la pressione dell'aria e le precipitazioni. Con un sensore adatto, come il Nova Fitness SDS-011 [1] (PM2,5, risoluzione 0,3 ug/m3), può anche misurare la concentrazione di particelle fini. Il sensore Bosch FME280 [2] è usato per misurare la temperatura, l'umidità e la pressione dell'aria. Per la velocità del vento, la direzione e le precipitazioni si usa un kit per stazione meteo.  L'ESP32 effettua le misurazioni e carica i dati elaborati su Thingspeak [3] o senseBox [4]. Thingspeak è un database online gestito da Mathworks, dove si possono caricare i dati e visualizzare grafici. I dati possono anche essere elaborati con Matlab. SenseBox agisce, invece, come una sorta di mappa temporale open-source. Gli utenti che hanno un kit senseBox o compatibile senseBox possono caricare i propri dati e renderli disponibili a tutti.

L'Hardware

La stazione meteorologica si basa sull'ESP32 Pico Kit V4 (vedi schema di figura 1), che gestisce tutti i compiti necessari. Per permettere la connessione del sensore e il montaggio si utilizza un involucro impermeabile (Fibox PC 100/60 HT). I sensori di vento e di pioggia sono collegati alla scheda tramite dei connettori RJ45, mentre il sensori BME280 e SDS011 sono collegati attraverso i connettori JST XH. Il sensore BME280 utilizza il bus I2C mentre l'SDS011 utilizza una porta UART. Sono state implementate anche due porte aggiuntive sulla scheda per consentire l'utilizzo di eventuali sensori supplementari. La prima porta aggiuntiva è un connettore I2C Grove per i moduli Grove [5, 6]. La seconda è una porta FTDI che alimenta una connessione UART. Il circuito può essere alimentato a 12 V con una batteria al piombo. Se si volesse utilizzare un pannello solare da 12 V per caricare la batteria, c'è una utile funzione integrata: l'ESP32 può chiudere un relè quando la batteria è scarica e aprilo quando la batteria è di nuovo completamente carica. L'ESP32 utilizza un partitore di tensione con valori delle resistenze pari a 470 kohm e a 100 kohm, per poter misurare la tensione della batteria e adattare i punti iniziali e finali per la sua ricarica.

Figura 1: lo schema elettrico della stazione meteo. L'ESP32 è il cuore del circuito

Figura 1: lo schema elettrico della stazione meteo. L'ESP32 è il cuore del circuito

Il  LED3 indica lo stato di carica della batteria. Si utilizza un semplice FET (T1) come buffer per pilotare il relè. Il diodo D3 agisce come un soppressore e annulla i picchi di tensione della bobina del relè e protegge T1 contro il danneggiamento. Il resistore R10 limita la corrente di base, mentre R7 limita la corrente attraverso LED3, così come i resistori R8 e R9 per LED2 e LED1. Il convertitore DC/DC (IC1) abbassa la tensione di alimentazione a 5 V. Esso è molto più efficiente di un regolatore di tensione 7805 standard, quindi è la scelta migliore per circuiti a batteria. Sulla scheda ESP32, la tensione di alimentazione di 5 V viene convertita a 3,3 V grazie a un regolatore di tensione 1117. Il diodo D4 protegge l'ESP32 da qualsiasi sovratensione della batteria (tramite divisione della tensione con R11/R12), mentre il condensatore C4 sopprime il rumore stabilizzando la tensione della batteria. I resistori da R4 a R6 sono resistenze di pull-up, necessarie per il corretto funzionamento delle relative linee di segnale.

Sensori di pioggia e vento

Il sensore di pioggia è composto da un piccolo vassoio che si riempie di acqua piovana. Quando è pieno,
si inclina e chiude un interruttore monitorato da ESP32. Secondo la scheda tecnica, ogni versamento del vassoio corrisponde a 0,33 mm di precipitazione. Il sensore del vento è costituito da una banderuola e da un anemometro per misurarne la velocità. La resistenza interna della banderuola cambia a seconda della direzione del vento. La figura 2 mostra il layout della bussola per le varie direzioni. Si è affiancato un resistore da 10 kΩ (R2) con la resistenza variabile dal vento per costituire un divisore di tensione. La tensione cambia quando la banderuola del vento modifica la sua direzione e ciò può essere misurato dall'ESP32. L'anemometro ha un interruttore a lamella e genera due impulsi per ogni rotazione. Secondo la scheda tecnica, la velocità  del vento, in m/s, è uguale alla frequenza degli impulsi (in Hz) moltiplicato 0.33. La frequenza di rotazione è calcolata moltiplicando l'intervallo di tempo tra due impulsi (in secondi) per 2 (due pale per rotazione),  quindi la frequenza di rotazione può essere calcolata con l'inverso di tale intervallo di tempo. Se si moltiplica il valore per 0.66, si ottiene la velocità del vento, espressa in metri al secondo. La velocità del vento in km/h può essere calcolata moltiplicando la velocità in m/s per 3.6. In poche parole, 1 rps corrisponde a una velocità del vento di 2,4 km/h.

Figura 2: la resistenza interna della bandieruola dipende dalla direzione del vento

Figura 2: la resistenza interna della bandieruola dipende dalla direzione del vento

Caricamento del software

Per caricare il software sull'ESP32, si deve prima installare l'ESP32 core di Arduino [7]. Quindi si deve installare il tool per il download SPIFFS al fine di scaricare una pagina Web sul file system di ESP32 [8]. Una volta che tutto è stato installato correttamente, è possibile selezionare ESP32 Pico Kit nel menù "schede" e scaricare la pagina Web e lo sketch.

Componenti elettronici

L'elenco sotto proposto mostra i componenti elettronici utilizzati. La figura 3 propone la silkscreen del circuito, mentre la figura 4 mostra il circuito montato.

  • Resistenze
    • R1-R4 = 10 kohm
    • R5, R6 = 4.7 kohm
    • R7-R9 = 220 ohm
    • R10 = 1 kohm
    • R11 = 470 kohm
    • R12 = 100 kohm
  • Condensatori
    • C1 = 10 uF, 50V
    • C2 = 1 uF, 10V
    • C3, C4 = 100 nF
  • Semiconduttori
    • D1-D3 = 1N4007
    • D4 = BAT85
    • IC1 = Convertitore DC/DC 5V, 5W, R-78E5.0-1.0
    • LED1, LED2 = giallo 3 mm
    • LED3 = rosso 3 mm
    • T1 = BS170
  • Varie
    • K1, K2 = connettori a pila 17 pin, passo 0,1"
    • K3 = connettore a 4 pin, passo 0,1"
    • K4 = connettore a 4 pin, passo 0,1"
    • K5 = connettore a 6 pin, passo 0,1"
    • K6, K7 = jack TJ11
    • K8 = connettore verticale
    • K9 = connettore a 7 pin, passo 0,1"
    • RE1 = relé ALDP105
    • S1 = pulsante 6 mm
    • BME280 sensore precipitazioni e vento I2C
    • Opzionale = sensore di particelle fini
Figura 3: la silkscreen del circuito

Figura 3: la silkscreen del circuito

 

Figura 4: la scheda montata

Figura 4: la scheda montata

Il software

Come accennato in precedenza, la stazione meteorologica è controllata dall'ESP32. È possibile configurarla su una pagina Web ospitata direttamente dall'ESP32. All'avvio, il dispositivo tenta di connettersi alla rete configurata. Se esso non ci riesce, ESP32 avvia il server Web che ospita la pagina di configurazione. Il server Web può anche essere avviato manualmente premendo il pulsante sulla scheda mentre si accende l'alimentazione o premendo il pulsante EN sul modulo ESP32. Se l'utente non ha eseguito alcuna operazione sulla pagina di configurazione per dieci minuti, ESP32 si riavvia e si connette alla rete configurata. Nella pagina di configurazione è possibile visualizzare le misurazioni correnti e la tensione della batteria. E', inoltre, possibile configurare le impostazioni di rete e quelle di caricamento. Le impostazioni di rete includono l'SSID (nome della rete), che può essere selezionato da un elenco, e la password. Le impostazioni di caricamento includono i tasti API richiesti per Thingspeak e senseBox, nonché l'intervallo di caricamento. Per ottenere l'accesso alla pagina Web, è necessario connettersi alla rete ESP32 fornita. Quindi si può aprire la pagina Web all'indirizzo IP 192.168.4.1. Si tenga presente che con gli smartphone (ad esempio Android) occorre disabilitare temporaneamente la connessione dati, perché essi commutano automaticamente su tale possibilità se non rilevano una connessione Internet valida tramite WiFi. In tal caso la pagina di configurazione non sarà disponibile. La pagina web è composta da un singolo file HTML, che a sua volta consiste di tre sezioni. Lo "style", in alto, definisce l'aspetto della pagina, il "body" contiene la struttura e il contenuto della pagina e lo "script" definisce la funzionalità della pagina. Perché la pagina web funzioni correttamente, il javascript nel browser web deve essere abilitato. La comunicazione tra la pagina Web e l'ESP32 viene eseguita tramite una "XMLHttpRequest asincrona" nella pagina stessa. Quando essa viene caricata, è generata una richiesta HTTP e inviata all'ESP32. Quest'ultimo riceve tale richiesta e invia una risposta alla pagina con le impostazioni o i valori richiesti. Ad esempio, quando si preme il pulsante "Invia" sulla pagina web, viene inviata una richiesta con i valori inseriti.

Ultimi dettagli

Per caricare i dati, è necessario che l'ESP32 possa accedere alla rete domestica (o altre reti). Per impostare i sensori, si deve anche tenere conto di alcuni requisiti specifici. Ad esempio, non è una buona scelta l'installazione dei sensori di precipitazioni vicino a un muro. Per tali operazioni è sufficiente il proprio buon senso.

senseBox

Un kit senseBox rende semplice la configurazione della propria stazione di sensori. Il parametri misurati possono essere caricati su opensensemap.org, dove le misure provenienti da svariati senseBox o altri dispositivi compatibili possono essere consultati. Per registrare i dati della propria stazione meteo, si deve prima creare un account su opensensemap.org e poi si può aggiungere un senseBox. E' possibile scegliere il tipo senseBox desiderato all'atto della creazione dell'account, oppure configurare la stazione inserendo i parametri misurati, le unità di misura e i tipi di sensore (vedi figura 5). Occorre creare manualmente un account per la Stazione meteorologica EPS32. Dopo essersi registrati, si riceveranno un ID per la stazione e un ID per ciascun sensore. Quindi si devono inserire tali identificativi nella pagina di configurazione della stazione meteo EPS32. Poi è possibile caricare i dati rilevati.

Figura 5: sul sito opensensemap.org si possono gestire i sensori per la propria stazione meteorologica

Figura 5: sul sito opensensemap.org si possono gestire i sensori per la propria stazione meteorologica

Thingspeak

Thingspeak è un database online gratuito di Mathworks in cui è possibile caricare i dati. Per il suo utilizzo è necessario creare un canale e un campo associato per ciascun parametro misurato (vedi figura 6). Dopo aver creato il canale, si riceverà una chiave API di scrittura che deve essere inserita nella pagina di configurazione della stazione meteorologica. In figura 7 è possibile osservare alcune fasi della messa a punto della stazione.

Figura 6: per l'uso di Thingspeak si deve creare un nuovo canale per l'applicazione e inserire i tipi di dati nelle caselle corrispondenti. Quindi si riceverà una chiave API da utilizzare nel software dell'applicazione

Figura 6: per l'uso di Thingspeak si deve creare un nuovo canale per l'applicazione e inserire i tipi di dati nelle caselle corrispondenti. Quindi si riceverà una chiave API da utilizzare nel software dell'applicazione

>>>Leggi anche: Una stazione meteo con la Flip&Click per l’analisi e la previsione

Figura 7: messa a punto della stazione meteorologica

Figura 7: messa a punto della stazione meteorologica

Web Links

[1] Inovafitness: www.inovafitness.com/en/a/chanpinzhongxin/95.html
[2] BME280 (Mouser): www.elektor.com/bme280-mouser-intel-i2c-version-160109-91
[3] Thingspeak: https://thingspeak.com
[4] Sensebox: https://sensebox.de/en
[5] Seeedstudio products at Elektor: www.elektor.com/seeedstudio
[6] Seeedstudio Grove: www.seeedstudio.com/s/grove.html
[7] Github for Arduino-Esp32: https://github.com/espressif/arduino-esp32
[8] Github for Arduino Esp32fs plugin: https://github.com/me-no-dev/arduino-esp32fs-plugin

 

Elektor Post

2 Commenti

  1. Giovanni Di Maria Giovanni Di Maria 22 marzo 2019
  2. Stefano Lovati Stefano Lovati 22 marzo 2019

Scrivi un commento

EOS-Academy