Tester IoT di temperatura e umidità con sensore DHT11, ESP8266 e ThingSpeak

In questo articolo viene descritto il progetto di un semplice sistema di monitoraggio di temperatura e umidità via web. In sostanza, sarà descritto come interfacciare il sensore DHT11 con il modulo transceiver WiFi ESP8266 e, mediante l’applicazione ThingSpeak, monitorarne i dati anche da remoto via web.

Introduzione

Il chip DHT11 è un sensore di umidità e temperatura a basso costo sufficiente per implementare un semplice sistema di monitoraggio meteorologico IoT. L'intervallo di umidità relativa di misura del DHT11 va dal 20% al 95% con una precisione di +/- 5%, mentre il range di misura della temperatura va da 0°C a 500°C, con una precisione di +/- 2°C. Il DHT11 utilizza un singolo pin per la comunicazione con il microcontrollore mediante il bus seriale One-Wire. L'uscita da questo singolo pin dati è digitale e quindi non è necessario un pin di ingresso analogico del microcontrollore. Ciò è molto utile in quanto il modulo ESP-01 non dispone di pin di ingresso analogici. La combinazione di ESP8266 e ThingSpeak è un modo eccellente per realizzare progetti relativi all'IoT. Saranno descritti brevemente i componenti essenziali del progetto e come interfacciare il sensore di umidità e temperatura DHT11 con il modulo WiFi ESP8266 e ThingSpeak.

L'applicazione ThingSpeak consente di registrare i dati dei sensori e tracciarne graficamente l’andamento. Ciò che rende ThingSpeak speciale nelle applicazioni IoT, è l’utilizzo di un semplice protocollo HTTP per trasferire, archiviare e recuperare informazioni da diversi sensori. Una caratteristica unica di ThingSpeak è il supporto di MATLAB. La stretta relazione tra ThingSpeak e MATLAB ha portato a integrare diverse funzionalità chiave di MATLAB nell'applicazione ThingSpeak, ovvero, analizzare e visualizzare i dati dell'utente, quindi i dati di sensori, in modo grafico e senza la licenza di MATLAB. ThingSpeak è un ottimo strumento per i progetti relativi all'IoT, per questo, il progetto si concentra in special modo sull’utilizzo di ThingSpeak e sull'interfaccia ESP8266-ThingSpeak che può essere utilizzata anche in progetti futuri. La scheda Arduino UNO e il suo IDE viene utilizzata solo per trasmettere i dati tra il computer e l’UART dell'ESP8266, ovvero agisce come un convertitore da USB a UART.

Connessione del modulo wifi ESP8266 a ThingSpeak

Quando i produttori e gli hobbisti pensano all'Internet of Things, vengono in mente due cose: una è l’ESP8266 e l'altra è ThingSpeak. L’ESP8266 è la parte hardware del sistema IoT, mentre ThingSpeak fornisce l'API necessaria (o l'interfaccia utente) per il sistema. In questo articolo, attraverso la descrizione di un progetto demo IoT, verrà mostrato come connettere l’ESP8266 all'applicazione ThingSpeak e come funziona la collaborazione ESP8266-ThingSpeak. Innanzitutto, occorre creare un account con ThingSpeak. Dalla collaborazione di ThingSpeak con MATLAB, per accedere a ThingSpeak è possibile utilizzare le credenziali MathWorks dalla pagina di login di ThingSpeak, se si ha un account, altrimenti si deve creare un account con MathWorks e poi accedere all'applicazione ThingSpeak. Dopo aver effettuato l'accesso, è necessario creare un nuovo canale per la memorizzazione dei dati andando su Channels > My channels e cliccando su New Channel apparirà una finestra come mostrato nella Figura 1.

Figura 1: Creazione nuovo canale di ThingSpeak

Dopo aver inserito il nome del canale, che in questo progetto è “Test sensore”, occorre inserire il nome del campo 1, ad esempio "Random Number". I campi in un canale vengono utilizzati per contenere dei dati, ogni canale può contenere fino a 8 campi. Dopo aver inserito il nome del canale e del campo 1, si deve salvare il canale cliccando su Save Channel (Figura 2).

Figura 2: Impostazione nuovo canale

Ci sono alcune altre operazioni da fare nell'applicazione ThingSpeak, come vedremo più avanti. Il prossimo passo è predisporre l'hardware necessario per il progetto, che include il modulo WiFi ESP8266 (nel progetto useremo il modulo ESP-01), il sensore DHT11 e la scheda convertitore seriale USB-UART CH340.

Prerequisiti del progetto

Innanzitutto, se non lo avete già fatto, occorre installare sul PC il software Arduino dal sito ufficiale www.arduino.cc (in questo articolo si fa riferimento alla versione software Arduino 1.8.9). Per connettere l’ESP8266 all'applicazione ThingSpeak useremo i comandi AT inviati da PC tramite l’IDE di Arduino e il convertitore seriale CH340 per il quale, se non già installato, occorrerà scaricare il driver e installarlo. E’ anche necessario assicurarsi che il modulo ESP-01 sia aggiornato con il firmware dei comandi AT. A questo punto è possibile dimostrare con un esempio la procedura di trasmissione di dati dall’ESP8266 a ThingSpeak mediante l’invio di comandi AT all’ESP-01 da PC.

Interfaccia ESP-01-CH340 per la connessione a ThingSpeak tramite comandi AT da PC

Lo schema per collegare l’ESP-01 a ThingSpeak mostrato nella Figura 3 è molto semplice. In effetti, la scheda convertitore seriale CH340 viene utilizzata solo per trasmettere i dati di comando AT dal computer all'ESP-01, ovvero agisce come un convertitore da USB del PC all’UART dell’ESP-01. Si noti dallo schema che il pin GPIO0 deve essere non connesso a massa. Inoltre, poiché nella modalità di programmazione (impostata successivamente) l’ESP-01 assorbe molta corrente, l’alimentazione a 3,3V dell’ESP-01 deve essere fornita da un alimentatore esterno stabilizzato in grado di erogare una corrente di almeno 300 mA.

Figura 3: Schema elettrico per il collegamento PC-CH340-ESP 01

Dopo aver collegato la scheda CH340 con un cavo USB al computer, aprire l’IDE di Arduino e il monitor seriale impostandolo con un baud rate a 115200 e su NL&CR. Verificare la connettività dell’ESP-01 digitando sulla barra di invio del monitor seriale il seguente comando AT:

AT

Dopo aver ricevuto la risposta "OK", è possibile procedere con la connessione del modulo ESP-01 alla rete WiFi con il seguente comando:

AT+CWJAP=”SSID”,”PASSWORD”

Sostituire SSID con il nome della rete WiFi e la password di accesso al WIFI al posto di PASSWORD. Dopo l’invio del comando, si riceverà la risposta di conferma della connessione WiFi come segue:

WIFI CONNECTED

WIFI GOT IP

 OK

Ora è necessario impostare una connessione singola utilizzando il seguente comando:

AT+CIPMUX=0

Il passaggio successivo consiste nel connettersi all'API ThingSpeak utilizzando il protocollo TCP. Per questo, è necessario utilizzare il seguente comando:

AT+CIPSTART=”TCP”,”api.thingspeak.com”,80

In alternativa, si può utilizzare l'indirizzo IP dell'host api.thingspeak.com, ovvero:

AT+CIPSTART=”TCP”,”184.106.153.149”,80.

Ottenuta con successo la connessione "TCP" tra ESP-01 e ThingSpeak, si può inviare qualsiasi dato tramite questa connessione utilizzando i seguenti comandi uno dopo l'altro:

AT+CIPSEND=51

GET /update?api_key=XXXXXXXXXXXXXXXX&field1=255

AT+CIPCLOSE

Una volta stabilita la connessione TCP, è possibile inviare dati utilizzando determinati comandi. Questa parte può essere un pò complicata, ma provandola per un paio di volte si comprenderà bene il processo. Per trasmettere i dati, è necessario inviare tre diverse informazioni: il comando di invio effettivo, poi i dati insieme alla chiave di campo ThingSpeak, e infine il comando di chiusura della connessione. Prima di inviare i dati è necessario acquisire la chiave API. Per questa procedura, innanzitutto si torna al sito ThingSpeak, al canale creato e salvato precedentemente, quindi si clicca sulla scheda "API Keys". Sotto la scritta Write API Key apparirà la chiave, ovvero, una stringa alfanumerica di 16 caratteri che si dovrà annotare per l’utilizzo successivo (Figura 4).

Figura 4: Chiave API ThingSpeak

Ora, usando il seguente comando si avvia la trasmissione dei dati:

AT+CIPSEND=51

Il valore 51 è la lunghezza, ossia il numero di caratteri dei dati da trasmettere, inclusa la chiave API e i valori "\ r" e "\ n". Dopo l’invio di questo comando si otterrà la seguente risposta:

OK

 >

Ora occorre digitare le seguenti informazioni e cliccare invio:

GET /update?api_key=XXXXXXXXXXXXXXXX&field1=143

La successione di X, "XXXXXXXXXXXXXXXX", non è altro che la chiave API di 16 caratteri annotata prima, mentre il numero "143" è il dato effettivo che si sta trasmettendo al campo1. Dopo aver digitato questo testo e premuto su Invia, non si riceverà alcuna risposta. In realtà occorre inviare il comando di chiusura seguente che deve essere inviato immediatamente dopo il precedente comando: [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2424 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

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend