Sensore Umidità e Temperatura (DHT11)

Andiamo a vedere come collegare ed utilizzare con Arduino il modulo di rilevamento umidità e temperatura DHT11 di Elegoo (ma si tratta di sensori standard).

Il sensore digitale DHT11 è infatti un sensore composito, che comprende un sensore per il rilevamento dell’umidità e uno per il rilevamento della temperatura.

Essendo un modulo digitale, i sensori che contiene si interfacciano ad un microcontrollore ad alte prestazioni a 8bit.

Da Arduino, tramite un apposito protocollo, possiamo chiedere al microcontrollore del modulo di inviarci i dati dei sensori. Tutto questo grazie all’utilizzo di un solo pin digitale e ad una libreria specifica per questi sensori, che ci risparmierà la fatica di scrivere codice complesso.

Questo piccolo sensore è abbastanza preciso per la maggior parte dei progetti che andremo a realizzare, e in cui dovremo leggere temperatura e/o umidità in un ambiente chiuso.

Struttura Modulo

Specifiche Tecniche

Riportiamo qui di seguito le specifiche tecniche del sensore del kit Elegoo. Per altri sensori, è semplice procurarsi il file delle specifiche in rete.

Sensore Umidità

Intervallo misurazione20, 90% RH
Risoluzione8 Bit
Ripetibilità ± 1% RH
Accuratezza ± 5% RH (a 25°C)
Tempo risposta a variazioni6s (minimo)
Isteresi < ± 0.3% RH
Stabilità a lungo termine < ± 0.5% RH /anno

Sensore Temperatura

Intervallo misurazione0, 50℃
Risoluzione8 Bit
Ripetibilità± 0.2°C
Accuratezza± 2°C (a 25°C)
Tempo risposta a variazioni10s (minimo)

Caratteristiche Modulo

Tensione AlimentazioneDC 3.3V – 5.5V
Corrente AlimentazioneMisurazione: 0.3mA
Standby: 60µA
Tempo lettura medio2s

Link Documentazione

Schema Collegamento

Normalmente, per il sensore DHT11 avremmo bisogno di una resistenza di pullup.

Sensore DHT11
Schema di collegamento tipico per il sensore DHT11

Nel nostro modulo, la resistenza è già integrata sulla scheda.

Ci limitiamo quindi a collegare l’alimentazione ai pin di alimentazione di Arduino, mentre il pin dei dati va collegato ad uno qualsiasi dei pin digitali di Arduino.

Sensore Elegoo Umidità Temperatura DHT11
Schema collegamento

Codice

Per prima cosa, andiamo ad installare la libreria per la comunicazione. In caso di dubbi, consultare questa guida.

Poiché il sensore di umidità e temperatura per Arduino (DHT11) è standard, in rete si possono trovare diverse librerie. Qui sotto è presente il link per una libreria realizzata specificatamente per il sensore di Elegoo.

#include <dht11.h>

#define SENSOR_PIN 2

void setup() {
  Serial.begin(9600);
  Serial.println("Test Sensore DHT11");
  Serial.print("Versione Libreria: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
  Serial.println("Umidità (%),\tTemperatura (°C),\tStato");
  THSensor.begin(SENSOR_PIN);
}

void loop() {
  int result;
  result = THSensor.read(); //Leggo i dati
  //Mostro risultato
  switch (result){
    case DHTLIB_OK:
        Serial.print(THSensor.humidity, 1);
        Serial.print(",\t\t");
        Serial.print(THSensor.temperature, 1);  
        Serial.println(",\t\tOK"); 
        break;
    case DHTLIB_ERROR_CHECKSUM: 
        Serial.println("?,\t\t?,\t\tErrore Checksum"); 
        break;
    case DHTLIB_ERROR_TIMEOUT: 
        Serial.println("?,\t\t?,\t\tErrore Timeout"); 
        break;
    default: 
        Serial.println("?,\t\t?,\t\tErrore Sconosciuto"); 
        break;
  }
  delay(1000);
}