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 misurazione | 20, 90% RH |
Risoluzione | 8 Bit |
Ripetibilità | ± 1% RH |
Accuratezza | ± 5% RH (a 25°C) |
Tempo risposta a variazioni | 6s (minimo) |
Isteresi | < ± 0.3% RH |
Stabilità a lungo termine | < ± 0.5% RH /anno |
Sensore Temperatura
Intervallo misurazione | 0, 50℃ |
Risoluzione | 8 Bit |
Ripetibilità | ± 0.2°C |
Accuratezza | ± 2°C (a 25°C) |
Tempo risposta a variazioni | 10s (minimo) |
Caratteristiche Modulo
Tensione Alimentazione | DC 3.3V – 5.5V |
Corrente Alimentazione | Misurazione: 0.3mA Standby: 60µA |
Tempo lettura medio | 2s |
Schema Collegamento
Normalmente, per il sensore DHT11 avremmo bisogno di una resistenza di pullup.
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.
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);
}