DHT11 é um sensor de temperatura e humidade ambiente integrado em um único (e pequeno) encapsulamento, que se comunica de forma “serial” (digital) com qualquer microcontrolador, utilizando apenas um pino.
   O elemento interno sensor de temperatura é um termistor, enquanto o elemento sensor de humidade é uma “placa” capacitiva. Este sensor é fabricado pela empresa Aosong, e seu datasheet com todas as informações técnicas pode ser encontrado neste link.
   Ainda de acordo com seu datasheet a precisão na leitura de humidade é de +/- 5% e a estabilidade de leitura é de 0,5% por ano, o que significa que a cada ano o “erro” de leitura pode aumentar 0,5%; sua faixa de medição é de 20% a 90% de humidade relativa e o tempo de resposta para leitura de humidade é de 6 segundos. A  precisão do sensor de temperatura não é citada, porém sua repetibilidade é de +/-0,2 graus C, a faixa de medição é de 0C a +50C e o tempo de resposta é de 10 segundos.
   A conexão física deste sensor com qualquer microcontrolador depende de apenas três pinos:
– VCC (que deve estar entre 3.3V e 5V)
– GND
–  Data* (um pino de dado serial baseado no protocolo one-wire)
* Observação: o pino Data deve sempre ter um resistor de pull-up conectado para o VCC, um requisito básico do protocolo one-wire.
   Na imagem abaixo está a forma física de conexão do DHT11 ao microcontrolador Arduino UNO. Após realizar esta conexão é necessário baixar uma biblioteca de código para que o DHT11 possa ser lido corretamente. Eu gosto muito da biblioteca desenvolvida pela Adafruit (disponível aqui para download), que também conta com um tutorial muito bom (em Inglês, aqui).
   Você não sabe como instalar bibliotecas de código na IDE do Arduino? Aprenda Aqui (Windows) ou Aqui (Linux).
   O sketch (programa) utilizado para fazer o DHT11 funcionar se chama “DHTtester.ino” e vem junto com a biblioteca acima mencionada. Vale notar que o DHT11 é um sensor que utiliza um protocolo de comunicação implementado por software, portanto ele pode ser conectado à qualquer pino digital do Arduino ou de qualquer outro microcontrolador (3,3V ou 5V).

 // Example testing sketch for various DHT humidity/temperature sensors  
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2 // what digital pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");

dht.begin();
}

void loop() {
// Wait a few seconds between measurements.
delay(2000);

// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);

Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *Ft");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}

   Após instalar a biblioteca do DHT na IDE do Arduino, é só colar o código acima na IDE e clicar em “upload”, que o código será enviado ao Arduino. Você deve então abrir o monitor serial da IDE e observar algo similar á imagem abaixo**.


As informações mostradas no monitor serial são:
– “Humidity”: a humidade relativa do ambiente em percentual (%)
– “Temperature”: a temperatura ambiente em graus celsius e também fahrenheit
– “Heat index”: é a sensação térmica do ambiente, ou seja: o efeito da humidade sobre a temperatura dos corpos; também em graus celsius e fahrenheit.

**Caso seu código não funcione (ou começe a apresentar erros no monitor serial), tente tirar as seguintes linhas de código do sketch acima:

  // Check if any reads failed and exit early (to try again).  
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

   Para resumir o artigo de hoje: o DHT11 é um sensor de temperatura e humidade integrado, super pequeno e muito barato, porém lento e um pouco impreciso; isto não significa que não seja útil, haja visto a quantidade enorme de projeto que utilizam-no (tente googlar “projetos DHT11”).
– Para comprar o sensor DHT11 em nosso Parceiro ICStation (da China), clique no texto: DHT11 Temperature Relative Humidity Sensor Module for Arduino
– Para comprar o Arduino UNO em nosso Parceiro ICStation (da China), clique no texto: ICStation ATMEGA328 UNO V3.0 R3 Board Compatible Arduino UNO R3
– Para comprar os cabinhos coloridos (jumpers) em nosso Parceiro ICStation (da China), clique no texto: 1pcs Dupont Wire 10CM 2.54MM Female to Male 1P-1P Jumper Cable For Arduino

   

Sensor de temperatura e humidade DHT11
Classificado como:                                

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solve : *
20 + 17 =