Monitorando Temperatura e Umidade com o sensor DHT11

Monitorando Temperatura e Umidade com o sensor DHT11

Em um país tropical como o nosso o clima em boa parte do Brasil é quente e úmido. Logo creio que este projeto irá te ajudar a monitorar com apenas 1 sensor a temperatura e umidade de seu clima local com este Sensor DHT11.

Sensor DHT11 Umidade e Temperatura

Especificações DHT11:

- Modelo: DHT11 (Datasheet)
– Alimentação: 3,0 a 5,0 VDC (5,5 Vdc máximo)
– Corrente: 200uA a 500mA, em stand by de 100uA a 150 uA
– Faixa de medição de umidade: 20 a 90% UR
– Faixa de medição de temperatura: 0º a 50ºC
– Precisão de umidade de medição: ± 5,0% UR
– Precisão de medição de temperatura: ± 2.0 ºC
– Tempo de resposta: < 5s
– Dimensões: 23mm x 12mm x 5mm (incluindo terminais)

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 MCDU e DHT11, pois as leituras do sensor são enviadas usando apena um único fio de barramento.

Formato dos dados: 8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data + 8bit check sum = 40 bits.

Pinagem DHT11

Pinagem DHT11

Componentes necessários:

01 – Arduino Uno
01 – DHT11
01 – Resistor 10k
01 – Protoboard 400 pontos
01 – Kit Jumpers Macho-Macho

Conectando DHT11 ao Arduino:

O DHT11 possui 4 terminais sendo que somente 3 são usados: GND, VCC e Dados. Se desejar, pode-se adicionar um resistor pull up de 10K entre o VCC e o pino de dados.

Fonte: Arduino&Cia

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

Comunicação Arduino com DHT11:

Para facilitar o seu trabalho já existe uma bilioteca que pode ser baixada neste link. Após o download descompacte o arquivo .zip e mova-o para a pasta arduinosketchfolder/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.

Agora acesse Examples->DHT->DHTtester em sua IDE Arduino.

#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");
  }
}

DHT11 Serial Monitor

Se você quiser mostrar estas informações em um display, veja como é fácil seguindo este post com sensor DHT11 e mostrando as informações em um Display LCD 16×2 com Arduino.

Até a próxima!

5
Monitorando Temperatura e Umidade com o sensor DHT11
24 votos, 4.71 classificação média (94% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

87 Comentários

  1. Gabriel - 14 de julho de 2017

    In file included from C:\Program Files (x86)\Arduino\libraries\DHT\DHT_U.cpp:22:0:

    C:\Program Files (x86)\Arduino\libraries\DHT\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    Gostaria de saber como posso resolver este erro,
    obrigado.

    • Euler - 18 de julho de 2017

      Va na pasta C:\Users\klaha(essa parte é o nome do seu usuário)\OneDrive\Documents\Arduino\libraries
      renomeie a pasta DHT-sensor-library-master para DHT. Depois dentro dessa pasta apague os arquivos DHT_U.cpp e DHT_U.h.

  2. Daniel M Souza - 13 de julho de 2017

    só gostaria de dizer que tenho aprendido muito com o blog, este é muito legal e os projetos que tem aqui funciona mesmo.

  3. Felipe Andrews Francisco - 14 de junho de 2017

    Boa noite.
    Estou tentando montar esse projeto com o Dht11.
    Existe alguma diferença muito significativa entre os sensores, a biblioteca não responde quando tento usar o dht11.
    Alguma sugestão ou projeto semelhante a esse??

    https://www.youtube.com/watch?v=FjzbC6k5LL0

    Atenciosamente.

    Felipe Andrews

  4. felipe - 3 de junho de 2017

    Olá,

    tenho uma duvida, como que faço para essas informacoes dos sensores ser postada no twitter?

  5. Pedro Cohen - 26 de março de 2017

    Opa meu amigo, primeiramente boa tarde!

    Comecei agora neste mundo, e tenho algumas dúvidas, que podem ser muito simples.

    Fiz o que pediu, o zip foi extraído e a pasta renomeada para DHT.

    Na minha pasta de documentos, uso Mac Osx, possui a pasta Arduino, dentro dela Libraries.

    Coloquei a pasta renomeada DHT, dentro de Librarie, e reiniciei a IDE. ( /Users/PHMC/Documents/Arduino/libraries/DHT)

    Abrindo o programa, no menu exemples, não tem nada, somente na parte Sketchbook, enfim.

    Ao compilar, tenho esse erro de retorno:

    DHTtester.ino:4:17: error: DHT.h: No such file or directory
    DHTtester:24: error: ‘DHT’ does not name a type
    DHTtester.ino: In function ‘void setup()':
    DHTtester:30: error: ‘dht’ was not declared in this scope
    DHTtester.ino: In function ‘void loop()':
    DHTtester:39: error: ‘dht’ was not declared in this scope

    Poderia me ajudar?

  6. Emir - 6 de março de 2017

    Bom dia, a biblioteca esta com problemas, a variável de leitura da umidade não esta funcionando e da problema ao copilar, aconteceu com mais alguém? Alguém sabe onde conseguir um biblioteca completa ou editar esta?

  7. Jorge Luiz Pasquali Rippel - 17 de janeiro de 2017

    Boa tarde, gostaria de saber se o sensor aguentaria em uma estufa, preciso fazer o monitoramento de uma estufa que possui valores como Umidade 92% ;40°C no inicio e 60°C; 40% no final, ou qual seriam os sensores recomendados.

  8. Loris - 10 de janeiro de 2017

    Boa noite, estou com um problema o sensor na umidade só registra 1.00%, não muda, o que posso fazer para verificar o que esta acontecendo. Ja a temperatura esta correta comparando com outro termometro diferença menor de 0.5 graus.
    Obrigado

  9. derick - 23 de dezembro de 2016

    amigo copiei o seu programa pra fazer uns testes mas o mesmo não compilou deu esse erro na biblioteca.
    DHT dht(DHTPIN, DHTTYPEd);

  10. Vitor - 23 de novembro de 2016

    Olá! Quando vou carregar o programa deste projeto para a placa aparece a seguinte mensagem:

    collect2.exe: error: ld returned 5 exit status

    exit status 1
    Erro compilando para a placa Arduino/Genuino Uno

    As bibiliotecas estão o.k.
    Já rodei a net em busca de uma solução, porém sem sucesso.
    Alguém tem alguma dica?

    Grato.

  11. REGINALDO - 8 de novembro de 2016

    Olá a todos,
    Montei conforme explicação, porém as indicações ficam em formato inteiro, sem a casa decimal. Exemplo 27.00°C , 28.00;°C. Eu gostaria de apresentar a informação com a casa decimal, Exemplo 27.30° 28.10°C.

  12. MARCELO NEGREIROS DE SOUZA - 25 de outubro de 2016

    quando eu ligo o sensor sozinho fica tudo beleza, agora quando eu uso ele junto com qualquer outra implementação , tipo joga resultado no lcd, ele mostra temperatura acima de 700 graus.

  13. Alexandre - 28 de setembro de 2016

    Olá, boa tarde.

    Fiz um teste com o DHT11 e o BMP180 no mesmo circuito, e o BMP é muito mais preciso na temperatura. Até aí, tudo bem. Porém, existem algumas variáveis que tem margens de erro muito grande… Como faço para corrigir isso? Eu posso até identificar um padrão na margem de erro, mas, como faço para que a leitura seja manipulada por uma operação matemática…?
    Pode me ajudar com isso? Sou cliente de vocês e parabenizo vosso trabalho! :D

  14. marcello - 4 de junho de 2016

    olá bom dia
    tem como ligar 2 ou 3 sensores de temp e umidade a uma mesma placa arduino e pegar as medidas de diferentes lugares?

  15. Ketlin - 23 de maio de 2016

    Olá! Gostaria de saber se tenho como usar o sensor dht11 de forma que quando a umidade estivesse em 60% ou mais ligasse uma lâmpada, e que essa mesma lâmpada se apagasse quando a umidade estivesse em 30% ou menos. Queria algo bem simples mesmo, os valores de 60% e 30 % nem precisam ser muito exatos, e se tiver sugestão de uso de outros sensores/materiais agradeceria muito pela ajuda.

  16. FAGNER LEITE - 23 de abril de 2016

    Olá! é possível usar a comunicação IC2 junto com este sensor dht11?

  17. Hermano Alves - 19 de abril de 2016

    Gostaria de saber como faço para implementar os valores obtidos, em painel digital.

  18. Jonas Borges Matos - 8 de abril de 2016

    Pessoal espero que ainda estejam respondendo as duvidas.

    Bem vamos la:

    Tudo certinho ate aqui, estou lendo a umidade e temperatura atualizada no monitor serial; o que preciso agora é saber se posso setar uma temperatura (por exemplo) 35°C e quando ler essa temperatura de 35°C, ativar uma porta digital qualquer.
    Posso fazer isso via IDE do arduino?

    • Adilson Thomsen - 11 de abril de 2016

      Boa tarde Jonas,

      Pode sim, você pode testar o valor da variável t (temperatura), e de acordo com o valor, acionar a porta que você precisa. É relativamente simples de fazer.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  19. Alex Costa - 21 de março de 2016

    Olá agradeço ajuda
    pegando no seu projecto, como fica o código para anexar dois relé um que será para ligar e desligar a 35ºc e outro para ligar e desligar a humidade a 45%.
    Pode indicar código.

  20. Leonardo - 27 de fevereiro de 2016

    Olá, gostaria de saber se é possível utilizar esse sensor no PIC 18F4550 e se necessita de alguma biblioteca adicional.
    Obrigado!

  21. Matheus S. - 15 de fevereiro de 2016

    Olá, alguém pode me dizer como faz para aparecer aquele ‘display’ do java onde aparece a umidade e a temperatura?

  22. LEANDRO VITOR DO NASCIMENTO - 4 de novembro de 2015

    Olá, tenho um projeto e nele tenho que controlar a temperatura e umidade, porém eu tenho dois sensores separados, um para cada função, queria saber se da para usar o mesmo código, obrigado.

  23. Bárbara - 25 de setembro de 2015

    Ola. Gostaria de saber qual é a área de cobertura desse sensor.

  24. Raphael Moral Piazera - 7 de setembro de 2015

    Boa noite,

    estou tentando ler 2 sensores onewire e 1 sensor dht, comprado no filipeflop. Mesmo com resistor de 10k está dando leituras estranhas o dht.

    Pode me ajudar ?

  25. Carlos - 1 de setembro de 2015

    Estou querendo utilizar o DHT11 para medição de umidade, apenas, porém o sistema estará em 70º C. Isso chega a danificar ou comprometer a precisão do aparelho, ou impede apenas a medida da temperatura?

  26. Felipe - 13 de julho de 2015

    Prezado, boa tarde, gostaria de saber se existe o MIB deste sensor.

  27. Pedro - 1 de julho de 2015

    Bom dia, posso ligar o sensor dht11 sem resistor, diretamente na placa sem protoboard?

    att

  28. Fernando - 20 de maio de 2015

    Estou usando o mesmo codigo, mas ele diz que dht não foi declarada dentro da void loop, como proceder?

  29. Eduardo - 4 de maio de 2015

    Galera, meu DHT11 não ta registrando valores quebrados.. E estou utilizando float na programação, algm pode dar um help?

    • Everton Rocha - 20 de maio de 2015

      O meu também. Mas lendo o datasheet, o sensor DHT11 tem resolução de um grau, então ele não registra diferença menor que isso. Creio que seja esse o problema. Provavelmente com o DHT22 funcionaria com precisão melhor.

  30. Rafael Nunes - 8 de março de 2015

    Olá, fiz o projeto conforme exemplo e com sensor DHT11 que adquiri recentemente porém os valores mostrados estão fora da realidade, acredito que seja problema no sensor.

    DHTxx test!
    Humidity: 1536.00 % Temperature: 640.00 *C
    Humidity: 1536.00 % Temperature: 640.00 *C
    Humidity: 1536.00 % Temperature: 640.00 *C

    Alguma ideia?

    • Gustavo Henrique Cirulo - 21 de maio de 2015

      Então eu fiz alguns teste com esse sensor e obtive esses mesmo valores, o meu erro estava na definição do tipo do sensor que eu estava utilizando. Para isso na parte que ele colocou no código de:
      #define DHTTYPE DHT11 // DHT 11
      Verfique se invés de ser essa linha do código é alguma destas duas, pois o seu DHT pode ser do tipo 22 ou 21:

      #define DHTTYPE DHT22 // DHT 22 (AM2302)
      #define DHTTYPE DHT21 // DHT 21 (AM2301)

      Abraços !

  31. Hércules - 29 de setembro de 2014

    Ola, sou novato no assunto e gostaria de saber o que quer dizer esta msg:

    Binary sketch size: 5.854 bytes (of a 32.256 byte maximum)

    ATT.

    Hércules

    • FILIPEFLOP - 2 de outubro de 2014

      Boa tarde Hércules,

      Essa mensagem informa o tamanho do programa (5.854 bytes), e o total de memória disponível no Arduino que você está usando (32.256 bytes).

      Abraço.

      Adilson – Equipe FILIPEFLOP

  32. Pedro - 14 de setembro de 2014

    Amigos, boa noite !
    Poderia me explicar o por que do resistor.
    Fiz o teste sem o mesmo e funcionou.
    Mas quero aprender mais sobre o assunto.
    Obrigado

  33. PaulinoJr.c - 9 de setembro de 2014

    Estou utilizando o mesmo código e o mesmo sensor, porém o meu não mostra o valor em ponto flutuante, apenas a parte inteira da temperatura e da umidade.

    Será que tem a ver com a resolução do sensor ?

  34. Kenny - 30 de agosto de 2014

    Olá
    Como eu posso usar esse sensor em um PIC?
    Usando linguagem C e PIC 18F
    Ele passa o sinal em valor digital?
    Teria que ser usado o PWM?

  35. Akg - 24 de agosto de 2014

    Funciona no raspberry pi ?

  36. cranioexEudimar - 8 de dezembro de 2013

    Ola Felipe Tudo Susa!!!!

    Cara fiz esse projeto só que não compila da erro!!!

    segue o erro

    essa linha fica selecionada

    DHT dht(DHTPIN, DHTTYPE);

    Arduino: 1.5.5 (Windows 7), Placa:”Arduino Uno”

    Temperatura.ino:1:17: error: DHT.h: No such file or directory
    Temperatura:11: error: ‘DHT’ does not name a type
    Temperatura.ino: In function ‘void setup()':
    Temperatura:17: error: ‘dht’ was not declared in this scope
    Temperatura.ino: In function ‘void loop()':
    Temperatura:23: error: ‘dht’ was not declared in this scope

    Este relatório deveria ter mais informações
    “Mostrar saída verbosa durante a compilação”
    habilitado em Arquivo > Preferências.

    Voce pode dar uma ajuda meu compilador e o 1.5.5

    tanto no mac como no pc da esse erro

  37. cranioexEudimar - 8 de dezembro de 2013

    Ola Felipe Tudo Susa!!!!

    Cara fiz esse projeto só que não compila da erro!!!

    segue o erro

    essa linha fica selecionada

    DHT dht(DHTPIN, DHTTYPE);

    Arduino: 1.5.5 (Windows 7), Placa:”Arduino Uno”

    Temperatura.ino:1:17: error: DHT.h: No such file or directory
    Temperatura:11: error: ‘DHT’ does not name a type
    Temperatura.ino: In function ‘void setup()':
    Temperatura:17: error: ‘dht’ was not declared in this scope
    Temperatura.ino: In function ‘void loop()':
    Temperatura:23: error: ‘dht’ was not declared in this scope

    Este relatório deveria ter mais informações
    “Mostrar saída verbosa durante a compilação”
    habilitado em Arquivo > Preferências.

    Voce pode dar uma ajuda meu compilador e o 1.5.5

    tanto no mac como no pc da esse erro

  38. Maxwell - 8 de novembro de 2013

    meu arduino é o mega 2560 e as ligações estao corretas e baixei e atualizei o software de novo v.1.05 arduino

  39. Maxwell - 8 de novembro de 2013

    meu arduino é o mega 2560 e as ligações estao corretas e baixei e atualizei o software de novo v.1.05 arduino

  40. Maxwell - 8 de novembro de 2013

    ajudar como se nao foi nem sanado meu problema amigo pois descompactei o o arquivo baixado e enviei pra biblioteca arduino e junto com o codigo que ja existe no blog do sensor de temperatura e umidade mesmo assim nao foi possivel rodar pois o mesmo agora esta dando um erro ao ser verificado se há algum erro no codigo ( o erro é “DHT” does not name a type.) Issso acontece quando mando verificar se tem algum errro é como se tivesse pedindo pra definir algum nome pra o sensor acho que é algo assim. Voce tem como me dar uma sugestao ?

  41. Maxwell - 8 de novembro de 2013

    ajudar como se nao foi nem sanado meu problema amigo pois descompactei o o arquivo baixado e enviei pra biblioteca arduino e junto com o codigo que ja existe no blog do sensor de temperatura e umidade mesmo assim nao foi possivel rodar pois o mesmo agora esta dando um erro ao ser verificado se há algum erro no codigo ( o erro é “DHT” does not name a type.) Issso acontece quando mando verificar se tem algum errro é como se tivesse pedindo pra definir algum nome pra o sensor acho que é algo assim. Voce tem como me dar uma sugestao ?

  42. Renan Paliga - 8 de novembro de 2013

    Outra coisa é que para mim a umidade relativa que o leitor mostra possui um erro um tanto grande em relação ao psicrômetro , quando vendem os sensores todos dizem q tem uma precisao boa, mesmo tendo +/-5% de erro. Quando está cerca d 60 a UR do ar eu consigo medir cerca d 40

  43. Renan Paliga - 8 de novembro de 2013

    Outra coisa é que para mim a umidade relativa que o leitor mostra possui um erro um tanto grande em relação ao psicrômetro , quando vendem os sensores todos dizem q tem uma precisao boa, mesmo tendo +/-5% de erro. Quando está cerca d 60 a UR do ar eu consigo medir cerca d 40

  44. Maxwell - 8 de novembro de 2013

    existem alguns dispositivos que estao deixando a desejar pois as ligações estao certas mas quando seguimos tudo que é passado em relação a biblioteca passo a passo mesmo assim nao funciona ou seja parece que compro algo mas nao tenho como testar se realmente esta bom pois os outros produtos que comprei funcionou normal e segui tudo certo

    • FilipeFlop - 8 de novembro de 2013

      Olá Maxwell. Este post foi testado na época e o sensor usado é o mesmo. Como a Arduino atuliza sua IDE e algumas bibliotecas podem ser modificadas com o tempo, este tipo de problema pode acontecer mas em si nao compromete a funcionalidade do componente.
      Caso tenha outro produto que montou e nao funcionou por favor entre em contato, ficaremos felizes em ajudar.
      Grato!

  45. Maxwell - 8 de novembro de 2013

    existem alguns dispositivos que estao deixando a desejar pois as ligações estao certas mas quando seguimos tudo que é passado em relação a biblioteca passo a passo mesmo assim nao funciona ou seja parece que compro algo mas nao tenho como testar se realmente esta bom pois os outros produtos que comprei funcionou normal e segui tudo certo

    • FilipeFlop - 8 de novembro de 2013

      Olá Maxwell. Este post foi testado na época e o sensor usado é o mesmo. Como a Arduino atuliza sua IDE e algumas bibliotecas podem ser modificadas com o tempo, este tipo de problema pode acontecer mas em si nao compromete a funcionalidade do componente.
      Caso tenha outro produto que montou e nao funcionou por favor entre em contato, ficaremos felizes em ajudar.
      Grato!

  46. Renan Paliga - 7 de novembro de 2013

    Eu tinha feito por este site, agora quando vi no seu mostrando valores em decimais resolvi tentar… mas achei estranho nao conseguir casas decimais, utilizei outro sensor com o resistor e aconteceu a mesma coisa. Por acaso voce fez alguma alteraçao na biblioteca?

  47. Renan Paliga - 7 de novembro de 2013

    Eu tinha feito por este site, agora quando vi no seu mostrando valores em decimais resolvi tentar… mas achei estranho nao conseguir casas decimais, utilizei outro sensor com o resistor e aconteceu a mesma coisa. Por acaso voce fez alguma alteraçao na biblioteca?

  48. Renan Paliga - 6 de novembro de 2013

    Na figura mostra os valores com decimais, todos q eu fiz aqui ( com diversos programas) sempre aparece .00. Tem algo diferente para aparecer os numeros decimais?

  49. Dalyston - 16 de outubro de 2013

    Eu gostaria de fazer esse projetinho só que quero mandar os dados via WiFi você pode me ajudar, o que vou precisar para mandar os dados via WiFi na rede e no caso gostaria de fazer a medição de duas salas?

    Se possível me de uma ajuda.

  50. Bruno Dias - 1 de outubro de 2013

    Minhas ligações estão corretas, mas continua mostrando 0 nas leituras… o que pode ser ?

Deixe uma resposta