Arduino e Sensori: DHT11 – Temperatura e umidità

Vediamo come utilizzare il sensore di temperatura ed umidità DHT11. Il sensore è abbastanza accurato per la maggior parte dei progetti che necessitano di tenere traccia delle letture di temperatura ed umidità.
Anche questa volta useremo una libreria specificatamente scritta per questi sensori che accorcerà il codice e ne renderà facile la scrittura.

Parametri del sensore

UMIDITA’:
Risoluzione: 16Bit
Ripetibilità: ±1% RH
Accuratezza: At25°C ±5%RH
Intercambiabilità: pienamente intercambiabile
Tempo di risposta: 1 / e (63%) of 25°C 6s
Isteresi: <± 0.3% RH
Stabilità a lungo termine: <± 0.5% RH / anno

TEMPERATURA:
Risoluzione: 16Bit
Ripetibilità: ±0.2°C
Range: a 25°C ±2°C
Tempo di risposta: 1 / e (63%) 10S

CARATTERISTICHE ELETTRICHE:
Voltaggio richiesto: DC 3.5~5.5V
Corrente richiesta: misurata 0.3mA standby 60μ
Periodo di campionatura: maggiore di 2 secondi

DESCRIZIONE DEI PIN:
1 VDD (+) 3.5~5.5V DC
2 DATA dati seriali, bus singolo
3 NC, pin vuoto
4 GND messa a terra (-)

Collegamenti

Come puoi vedere per il sensore sono necessarie solo 3 connessioni, in quanto un pin non viene utilizzato. Le connessioni sono 5v, GND e segnale, che in questo caso è sul 2 ma si può usare un’altra uscita dell’arduino, basta indicarlo nello sketch.

Sketch

//www.ilsito.net

#include <dht_nonblocking.h>
#define DHT_SENSOR_TYPE DHT_TYPE_11

static const int DHT_SENSOR_PIN = 2;
DHT_nonblocking dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);

void setup( )
{
  Serial.begin(9600);
}

static bool measure_environment( float *temperature, float *humidity )
{
  static unsigned long measurement_timestamp = millis( );
  
  if(millis( ) - measurement_timestamp > 3000ul)
  {
    if(dht_sensor.measure(temperature, humidity) == true)
    {
      measurement_timestamp = millis( );
      return(true);
    }
  }
  return(false);
}

void loop( )
{
  float temperature;
  float humidity;
  if(measure_environment(&temperature, &humidity) == true)
  {
    Serial.print("Temperatura = ");
    Serial.print(temperature, 1);
    Serial.print(" C°, Umidità = ");
    Serial.print(humidity, 1);
    Serial.println("%");
  }
}

Caricare il programma e aprire il Monitor seriale (impostarlo a 9600) si potrà visualizzare la temperatura e l’umidità.

Download

Nel file è presente la cartella con lo sketch e la libreria da installare nel consueto modo (se non sai come farlo clicca qui).

Download “Sensore-DHT11” Sensore-DHT11.zip – Scaricato 10 volte – 370 KB