Sensore DHT11 usando un Wemos D1 e invio dati sul canale Thinkspeak 

In questo esempio, collegheremo un sensore DHT11 con un Wemos d1 e invieremo i dati del sensore di umidità e temperatura al nostro canale Thinkspeak per poterli vedere da qualsiasi dispositivo. Questa é un'applicazione molto semplice del Wemos d1.

Il DHT11 é un modulo sensore composito di umidità e temperatura. Il segnale in uscita é calibrato e contien entrambi i dati di temperatura e umidit. L'applicazione della tecnologia digitale di raccolta dati e la tecnologia di rilevamento di temperatura e umidità, garantisce che il prodotto abbia alta affidabilità ed eccellente stabilità a lungo termine. Il sensore include un resistore sensibile all'umidità e un sensore di temperatura NTC collegati con unmicrocontrollore a 8 bit.

Normalmente il DHT11 viene utilizzato come modulo giá provvisto di resistenza e collegabile direttamente a vdd o 3v3. Il modulo DHT11 si presenta come nell'immagine seguente:

Se non volessimo utilizzare il modulo, bensí il componente, allo stesso modo, potremo utilizzare un collegamento come il seguente aggiungendo noi una resistenza adeguata.

Collegheremo il Gnd del modulo DHT11 al Gnd della sceha Wemos d1, collegheremo i 5V o Vdd del modulo DHT11 al 3v3 del nostro Wemos e il pin Sig (dati provenienti dal DH11) a uno qualsiasi dei pin digital del Wemos (ci sono 11 pin  digitali disponibili). Nel nostro esempio useremo il seguente:

#define DHTPIN 2

Ora dovremo crearci un'account sul sito web di thingspeak – https://thingspeak.com. Una volta creato l'account dovremo configurare un canale dove visualizzare i dati pubblicati dal nostro dispositivo e creeremo due campi, uno per la temperatura e l'altro per l'umidità rilevati dal nostro sensore DHT11. La schermata, apparirà come segue:

Codice:

#include <DHT.h>
#include <ESP8266WiFi.h>

// replace with your channel’s thingspeak API key and your SSID and password
String apiKey = "thingspeak api key";
const char* ssid = "ssid name";
const char* password = "ssid password";
const char* server = "api.thingspeak.com";

const char* cr = "n";

const char* bar= "/";


#define DHTPIN D2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;

void setup()
{
Serial.begin(115200);
delay(10);
dht.begin();

WiFi.begin(ssid, password);

Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

}

void loop()
{

float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
Serial.println("Failed to read from DHT sensor!");
return;
}

if (client.connect(server,80)) {
String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
postStr += "rnrn";

client.print("POST "+bar+"update HTTP"+bar+"1.1"+cr);
client.print("Host: api.thingspeak.com"+cr);
client.print("Connection: close"+cr);
client.print("X-THINGSPEAKAPIKEY: "+apiKey+cr);
client.print("Content-Type: application/x-www-form-urlencoded"+cr);
client.print("Content-Length: ");
client.print(postStr.length());
client.print(cr+cr);
client.print(postStr);

Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" degrees Celsius Humidity: ");
Serial.print(h);
Serial.println("Sending data to Thingspeak");
}
client.stop();

Serial.println("Waiting 20 secs");
// thingspeak needs at least a 15 sec delay between updates
// 20 seconds to be safe
delay(20000);
}

Risultati

Dopo qualche minuto di funzionamento del nostro dispositivo, potremo vedere quanto segue nel nostro canale:

Thinkspeak DHT11 Grafico Temperatura:

Thinkspeak DHT11 Temperature Chart view

Thinkspeak DHT11 Grafico Umiditá:

Potete anche vedere le rilevazioni dei nostri dispositivi sul nostro canale Thinkspeak

Compra ora il tuo kit e realiza il tuo progetto di domotica. Clicca qui: compraOra.jpg