Aula 6: Temperatura e umidade com o sensor DTH11

Em um país tropical como o nosso o clima em boa parte do Brasil é quente e úmido. O projeto desta aula irá te ajudar a monitorar com apenas um sensor a temperatura e umidade de seu clima local.

Material Necessário

Como funciona o DHT11?

Este sensor inclui um componente medidor de umidade e um componente NTC para temperatura, ambos conectados a um controlador de 8-bits. O interessante neste componente é o protocolo usado para transferir dados entre o Arduino e o DHT11, pois as leituras do sensor são enviadas usando apena um único fio de barramento.

Pinos DHT11

Circuito sensor DHT11

O DHT11 possui 4 terminais sendo que somente 3 são usados: GND, VCC e Dados.

Circuito com sensor DHT11

Conecte o pino de dados do DHT11 ao pino analógico 1 do seu Arduino Uno como mostra o código exemplo abaixo, mas você poderá alterar por outro se desejar.

Código sensor DHT11

Para facilitar o seu trabalho já existe uma biblioteca que pode ser baixada neste link. Após o download descompacte o arquivo .zip e mova-o para a pasta Documentos/Arduino/libraries/ e reinicie a IDE do Arduino. Não retire o arquivo dht.cpp.  e não esqueça de renomear a pasta para “DHT”. Talvez será necessário criar uma sub-pasta da biblioteca caso não exista.

// Programa : Sensor DHT11
// Autor : FILIPEFLOP
#include "DHT.h"

#define DHTPIN A1 // pino que estamos conectado
#define DHTTYPE DHT11 // DHT 11

// Conecte pino 1 do sensor (esquerda) ao +5V
// Conecte pino 2 do sensor ao pino de dados definido em seu Arduino
// Conecte pino 4 do sensor ao GND
// Conecte o resistor de 10K entre pin 2 (dados)
// e ao pino 1 (VCC) do sensor
DHT dht(DHTPIN, DHTTYPE);

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

void loop()
{
  // A leitura da temperatura e umidade pode levar 250ms!
  // O atraso do sensor pode chegar a 2 segundos.
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  // testa se retorno é valido, caso contrário algo está errado.
  if (isnan(t) || isnan(h))
  {
    Serial.println("Failed to read from DHT");
  }
  else
  {
    Serial.print("Umidade: ");
    Serial.print(h);
    Serial.print(" %t");
    Serial.print("Temperatura: ");
    Serial.print(t);
    Serial.println(" *C");
  }
}

Depois de carregar o código para o Arduino, abra o Monitor Serial e ajuste o Baud Rate para 9600. Você deverá ter o seguinte resultado:

Resultado Arduino com DHT11

Possíveis erros

Caso o projeto não funcione, verifique alguns dos possíveis erros:

  • Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a conexão;
  • Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
  • Verifique se as conexões do DHT11 estão corretas;
  • Verifique se o código carregou na placa através da IDE Arduino;
  • Verifique se a biblioteca DHT foi instalada corretamente e
  • Verifique se o Monitor Serial está configurado da maneira correta.