Sensor de umidade e temperatura DHT11
O sensor de umidade e temperatura DHT11 é um sensor que permite medir temperaturas de 0 a 50 Celsius, e umidade na faixa de 20 a 90%. Não é um sensor extremamente rápido e preciso, por isso não é recomendada a utilização em ambientes de alto risco.
Sua faixa de precisão para temperatura é de 2 graus, e de umidade, 5%. O datasheet do sensor DHT11 você encontra aqui.
O sensor de temperatura e umidade DHT11
O DHT11 é um sensor de baixo custo que usa um medidor capacitivo para medir a umidade e um termistor para medir a temperatura ambiente. Comentei anteriormente que o DHT11 não é um sensor extremamente rápido pois o intervalo mínimo entre as leituras deve ser de 2 segundos. Fique atento à isso quando for criar o seu programa com ele.
O sensor DHT11 tem 4 pinos, mas o pino 3 não é utilizado e deve permanecer desconectado quando você montar o seu circuito:
O mais comum é encontrá-lo em forma de módulo, como esse da imagem abaixo, onde temos apenas 3 pinos: Vcc, Data e Gnd.
A ligação do sensor é bem simples, utilizando apenas uma porta analógica do Arduino.
No nosso exemplo abaixo, usamos a porta analógica 1 e alimentação do sensor através do pino 5V do Arduino Uno:
O programa abaixo lê as informações do sensor e apresenta essas informações no serial monitor da IDE do Arduino. A biblioteca para uso com o DHT11 você encontra aqui.
//Programa : Sensor de umidade e temperatura DHT11 //Autor : Arduino e Cia #include <dht.h> #define dht_dpin A1 //Pino DATA do Sensor ligado na porta Analogica A1 dht DHT; //Inicializa o sensor void setup() { Serial.begin(9600); delay(1000);//Aguarda 1 seg antes de acessar as informações do sensor } void loop() { DHT.read11(dht_dpin); //Lê as informações do sensor Serial.print("Umidade = "); Serial.print(DHT.humidity); Serial.print(" % "); Serial.print("Temperatura = "); Serial.print(DHT.temperature); Serial.println(" Celsius "); //Não diminuir o valor abaixo. O ideal é a leitura a cada 2 segundos delay(2000); }
Agora execute o programa, abra o serial monitor e você terá uma tela como essa, contendo as informações de temperatura (em porcentagem) e umidade (em graus Celsius):
Aproveitando o post anterior sobre o display Nokia 5110, que tal juntarmos tudo e apresentarmos esses dados de temperatura e umidade no display? Assunto para o próximo artigo. Até lá!
Muito bom o seu blog. Me ajudou muito!
Obrigado pela visita ! Fico feliz em poder ajudar. Abraço.
boa noite! por gentileza ja conateceu com vcs essa falha:Foram encontradas múltiplas bibliotecas para "DHT.h"
#include
^
compilation terminated.
Usado: C:UsersCristianoDocumentsArduinolibrariesDHT11
Não usado: C:UsersCristianoDocumentsArduinolibrariesGrove_Temperature_And_Humidity_Sensor
Não usado: C:UsersCristianoDesktopNodeMCUarduino-1.8.7librariesDHT-sensor-library-master
exit status 1
Erro compilando para a placa NodeMCU 1.0 (ESP-12E Module)
so nao sei onde posso compra placa de arduino.
O Mercado Livre é uma ótima opção. segue link : http://pmstrk.mercadolivre.com.br/jm/PmsTrk?tool=6248909&go=http://lista.mercadolivre.com.br/arduino-uno
Abraço.
Oi Amigo, estou fazendo um projeto para medir com 3 sensores, existe um modo de alternar a tela pra mostrar a temperatura medida por cada um deles a cada certo tempo? Se puder me ajudar agradeço mais ainda,pois sua programação já me trouxe bons resultados!!
Olá Murilo !
Teoricamente a lógica é simples de implementar, pois bastaria você nomear os 3 sensores (dht_dpin1, dht_dpin2, dht_dpin3), ligar um em cada porta analógica e apresentar os valores alternadamente. Só não sei se a sintaxe é exatamente essa, e se a biblioteca aceitaria ligar vários sensores ao mesmo tempo. Realmente preciso testar para te dizer com certeza.
Em relação à sensores de temperatura, tenho um artigo sobre o DS18B20 que é bem interessante, pois você pode ligar vários DS18B20 em uma única porta, e endereça-los individualmente. Espero ter ajudado.
Abraços e obrigado.
Estou tentando fazer funcionar 2 sensores de forma independente e esbarrei tbm nesse problema, teria que adicionar os valores 1 e 2 pra todas funçoes dessa biblioteca? ex DHT.humidity1, DHT.humidity2, DHT.temperature1, DHT.temperature2 ? e essa DHT.read11(dht_dpin) como fica?
Boa tarde Rodrigo, você pode tentar criar outro define, com outro nome, como por exemplo, dpin2 :
#define dht_dpin2 A2 //Pino DATA do Sensor 2 ligado na porta Analogica A2
e depois utiliza-lo no programa assim :
DHT.read11(dht_dpin2)
Não tenho 2 sensores para testar aqui, mas creio que o caminho seja esse.
Depois me diga se conseguiu programar, por favor. Abraço !
Como ficou o codigo
//Programa : Sensor de umidade e temperatura DHT11
//Autor : Arduino e Cia
#include
#define dht_dpin1 A1 //Pino DATA do Sensor ligado na porta Analogica A1
#define dht_dpin2 A2 //Pino DATA do Sensor ligado na porta Analogica A1
dht11 DHT; //Inicializa o sensor
void setup()
{
Serial.begin(9600);
delay(1000);//Aguarda 1 seg antes de acessar as informações do sensor
}
void loop()
{
DHT.read(dht_dpin1); //Lê as informações do sensor
Serial.print("1-Umidade = ");
Serial.print(DHT.humidity);
Serial.print(" % ");
Serial.print("1-Temperatura = ");
Serial.print(DHT.temperature);
Serial.println(" Celsius ");
DHT.read(dht_dpin2); //Lê as informações do sensor
Serial.print("2-Umidade = ");
Serial.print(DHT.humidity);
Serial.print(" % ");
Serial.print("2-Temperatura = ");
Serial.print(DHT.temperature);
Serial.println(" Celsius ");
delay(2000); //Não diminuir muito este valor. O ideal é a leitura a cada 2 segundos
}
O que aconteceu? Quando o sensor 2 (pin a2) é desligado a saida serial me retorna os valores de 255 como se ele fosse desconectado. Quando desconecto o sensor in (pin a1) a saída serial me retorna 255 pros DOIS sensores. Desconfiado resolvi mudar as condições do sensor 1 e manter a do sensor dois, o programa me retornou os valores do sensor 1 no sensor 1 e 2. Ou seja o programa so ta lendo o sensor 1, porem quando o 2 é desconectado ele consegue perceber isso, resumindo nao sei o que fazer. kkkkkkkkkkkk
Oi Rodrigo,
Entendi.. vou tentar arrumar 2 sensores e ver se consigo testar isso. Mas creio que seja algum detalhe na biblioteca. Abraço !
Olá, você conseguiu resolver esse problema para dois sensores?
Oi Rodolfo !
Ainda não. Pedi os DHT11 mas ainda não chegaram. 🙁
Abraço !
Olá,
Gostaria de saber se conseguiu fazer 2 sensores funcionarem ao mesmo tempo?
Se puder me enviar o código no meu email: [email protected]
Como testar o sensor?
Só obtenho valores 0 como se o analógico não estivesse "lendo"
Boa tarde. Reveja as ligações e os pinos correspondentes, por favor. Isso parece ser problema de ligação. Abraço.
Estou com o mesmo problema….
Descobri o problema! Na placa do meu sensor, os pinos VCC e Data estão invertidos. Verifique a ligação dos pinos no seu sensor
Boa dica, Otávio ! Muito obrigado. Abraço.
Em alguns tutoriais é sugerido ligar um resistor de 10K entre o pino de sinal e o positivo. Vc tem alguma informação sobre isso? Seu tutorial foi bastante importante. Obrigado
Ola Jootah !
Obrigado pela visita. Eu também vi isso em outros tutoriais, creio que funcione como um resistor de elevação para evitar leituras indesejadas do sensor. No meu não aconteceu isso, mas se acontecesse, seria a primeira providencia que eu iria tomar pra tentar estabilizar a leitura. Abraço e obrigado.
Minhas ligações estão corretas, mas continua mostrando 0 nas leituras… o que pode ser ?
Bom dia Bruno ! Parece ser problema de ligação, pelo que você me fala, mas você disse que já revisou tudo. Estranho, pois ele deveria pelo menos apresentar alguma informação, nem que fosse aleatória. Você por acaso teria outro sensor pra testar ? Abraço !
tente colocar um resistor de pull up de 10k entre os pinos de sinal e o vcc do sensor, aconteceu o mesmo problema comigo e com esse resistor consegui solucioná-lo.
Amigo copiei o seu código para a ide e me retorna o seguinte erro na hora de copilar;
sketch_nov02a:4: error: 'dht' does not name a type
sketch_nov02a.ino: In function 'void loop()':
sketch_nov02a:14: error: 'DHT' was not declared in this scope
Bom dia Ramon, parece ser algum problema na instalação da biblioteca, ou então a IDE não foi reiniciada. Abraço.
#include "dht.h"
Trocar os < > por " "
Boa noite! no meu IDE 1.0.5, não reconhece a biblioteca do sensor, oq devo fazer?
Boa noite. Qual erro apresenta ?
Caro arduino, se eu ligar este sensor num controlador digital no lugar do sensor de temperatura ele vai fazer a leitura de umidade?
Bom dia. Qual tipo de controlador digital ?
Olá amigo, testei o código que você desenvolveu e ele não funcionou, ele sempre informa que esta 0°C e 0% de umidade. As ligações estão corretas, existe alguma possibilidade de ser algum outro problema fora o sensor?
Abraço.
Bom dia. Se as ligações estão corretas, não vejo outro problema que não seja o sensor. De qualquer forma, certifique-se de que os jumpers estão ok, pois já tive esse problema do sensor não passar dados, e no caso o jumper estava rompido internamente. Acabei de refazer o circuito com um módulo DHT11, e está tudo ok com o programa do artigo. Estou usando a IDE com versão 1.0.5. Se puder, me avise se conseguiu descobrir o que é. Abraço e obrigado !
Bom dia amigo, estou tentando usar o código mas os valores apresentados na serial são sempre os mesmos. teria como me ajudar?
Umidade = 255.00 % Temperatura = 255.00 Celsius
Umidade = 255.00 % Temperatura = 255.00 Celsius
desde já agradeço
Boa tarde, você está usando o módulo ou apenas o sensor ? Alguns módulos estão vindo com a marcação de Vcc e GND invertidas.
Obrigado!
Funcionou certinho!
Excelente!
Opa ! Valeu Sousa. Abraço !
Amigo, muito obrigado! Funcionando perfeitamente…
Bom dia ! Obrigado pelo retorno. Um abraço e precisando estamos aí. Valeu !
bom dia estou precisando de uma programação de 4 setores de leds com sensor ldr para controlar o brilho, sensor pir para acionar os led se tiver movimento e também um controle ir para apagar e ligar os setores. tenho também 2 cooler que devem ser acionados através sensor de temperatura lm35 ou dht11 desde ja agradeço
Boa noite Adenilson,
Eu não tenho nenhuma programação pronta com todos esses componentes, mas no meu blog eu tenho artigos sobre cada um deles.
Abraços !
Boa noite, copiei teu codigo mas quando mando compilar ele apresenta o seguinte erro
sketch_sep02a:10: error: 'dht' does not name a type
sketch_sep02a.ino: In function 'void loop()':
sketch_sep02a:20: error: 'DHT' was not declared in this scope
poderia me ajudar? esse é um dos primeiros testes que estou tentando fazer, e quando uso o codigo de exemplo ele da erro na leitura do sensor.
Boa noite,
Isso parece ser erro de biblioteca. Você instalou ?
Abraço.
Olá fiz um projeto unindo o LCD nokia 5110 e o DTH 11 e um RTC só que a leitura da temperatura esta alta 4 graus acima da temperatura lida por um termômetro industrializado.
Há como regular essa leitura do DHT 11?
Grato. Silvio Cavalcante
Boa tarde Silvio,
Você consegue testar esse DHT11 separadamente ? assim conseguimos ver se o problema está na parte do sensor ou se alguma outra coisa no circuito está interferindo.
Abraço !
Boa tarde, blz? Vc possui algum tutorial (para dht-11) para quando atingir certa temperatura acionar um rele, pela saida analogica e para quando atingir uma certa umidade acionar outro rele?
Boa noite Guilherme,
Não tenho nada pronto, mas é uma boa idéia pra um post. Vou pensar em algo.
Abraço !
Desde ja, obrigado pela ajuda!
Abraco!
Boa noite, blz? Entao eu consegui resolver este problema agr o unico problema é q n sei como o dht-11 manda o sinal, se é em binario, hexa, ou algum especifico, exemplo, quero q um rele ligue quando estiver 25 graus, como eu informo esta quantia?
Tipo…
If (val > 25 ) liga rele… Em vez deste "25" eu tenho q colocar q numero equivalente a 25 graus, pra ele entender? Vc poderia me ajudar nisso, ja tentei de quase tudo
Boa noite Matheus,
Tenta o seguinte. Atribui à uma variável o valor da temperatura lida do sensor. Fica mais ou menos assim :
Valor_Temperatura = DHT.Temperature
Depois você faz o if normalmente com essa variável, como você falou :
if (Valor_Temperatura > 25)…..
Depois me diga se conseguiu, por favor.
Abraço !
tenho um tcc baseado em nisso, será que seria viável um desses para irrigação automatizada?
Boa tarde Caique,
Existe um sensor de solo, que eu acho que seja mais adequado para o seu projeto:
http://www.filipeflop.com/pd-aa99a-sensor-de-umidade-do-solo-higrometro.html
Abraço !
Só aparece valores zerados..
Sera que o meu sensor esta estragado?
Umidade = 0.00 % Temperatura = 0.00 Celsius
Umidade = 0.00 % Temperatura = 0.00 Celsius
Boa noite Dyego,
É possível. Reveja as conexões e se possível utilize outro tipo de biblioteca.
Abraço !
Cuidado com alguns sensores : o da Keyes tem pino 1 como dados !
peço ajuda Pf para um sketch
sensor dht11 para ligar 2 (ou 4) relays com temperaturas diferentes
desde já obrigado a todos
Ola! estou com um projeto de uma horta, e gostaria de saber qual programa eu teria que utilizar para funcionar o Sensor De Umidade De Solo Hidrometro Com Haste Arduino Pic
Boa noite Danilo,
Tente as informações deste post sobre o sensor de chuva. O funcionamento é o mesmo:
http://www.arduinoecia.com.br/2014/06/sensor-de-chuva-arduino.html
Abraço !
Olá. Não consigo utilizar meu sensor de temperatura e unidade DHT11. Está sempre dando o seguinte erro, mesmo depois de eu instalar várias bibliotecas:
sketch_jul30a:4: error: 'dht' does not name a type
sketch_jul30a.ino: In function 'void loop()':
sketch_jul30a:14: error: 'DHT' was not declared in this scope
Boa noite,
Entendo.. ainda assim, me parece que é algum erro na instalação da biblioteca. Tente instalar a IDE do "zero" para ver se o problema permanece.
Abraço.
ola alguém poderia me ajudar. estou criando uma chocadeira elétrica com dht11, e quando a temperatura cai abaixo de 37,5 teria que acionar uma resistência.alguem poderia me ajudar a acrescentar este IF.
estou criando uma chocadeira e usarei o sensor dht11 para umidade e temperatura,quando a temperatura cai 37,5 usarei uma resistência. como acrescentar esse IF em minha programação?
por enquanto fiz apenas isso.
#include
DHT dht(A1,DHT11);
void setup (){
serial.begin(9600);
dht.begin();
}
void loop () {
float u = dht.readHumidity();
float t = dht.readTemperature ();
serial.println("umidade: ");
serial.println(u);
serial.println(" | Temperatura: ");
serial.println(t);
delay(2000);
}
estou criando uma chocadeira e usarei o sensor dht11 para umidade e temperatura,quando a temperatura cai 37,5 usarei uma resistência. como acrescentar esse IF em minha programação?
por enquanto fiz apenas isso.
#include
DHT dht(A1,DHT11);
void setup (){
serial.begin(9600);
dht.begin();
}
void loop () {
float u = dht.readHumidity();
float t = dht.readTemperature ();
serial.println("umidade: ");
serial.println(u);
serial.println(" | Temperatura: ");
serial.println(t);
delay(2000);
}estou criando uma chocadeira e usarei o sensor dht11 para umidade e temperatura,quando a temperatura cai 37,5 usarei uma resistência. como acrescentar esse IF em minha programação?
por enquanto fiz apenas isso.
#include
DHT dht(A1,DHT11);
void setup (){
serial.begin(9600);
dht.begin();
}
void loop () {
float u = dht.readHumidity();
float t = dht.readTemperature ();
serial.println("umidade: ");
serial.println(u);
serial.println(" | Temperatura: ");
serial.println(t);
delay(2000);
}
Arduino: 1.6.1 (Windows 7), Placa:"Arduino Uno"
tempe-simples01.ino:4:17: fatal error: dht.h: No such file or directory
compilation terminated.
Erro compilando.
Este relatório deveria ter mais informações
"Mostrar saída verbosa durante a compilação"
habilitado em Arquivo > Preferências.
olá, não funcionou na minha ide.
Obrigado, já descobri o erro e concertei, o
Programa tá muito bom!
Amo muito esse site, Parabéns amigo!
Valeu. Abraço! 🙂
O meu DHt11 só está aparecendo 0.00 no valor de umidade.. fiz as ligações corretas.. e coloquei ate um resistor de 10 k entre o vcc e o data.. não sei o que fazer.
Estranho. a temperatura ele mostra normalmente ?
sensor dht11 da Keyes por exemplo tem pino 1 como dados. Este sensor já tem uma resistência embutida.
Alguém saberia me dizer, quando sensor umidade/temperatura faz a leitura invertida?
Olá alguém saberia me dizer porque o sensor DHT11 está lendo invertido a temperatura com a umidade?
Gostaria de saber como ver o dados do sensor de temperatura no meu celular, através do esp8266 12e ou modulo Bluetooth, nunca achei nada explicando esse tipo de procedimento.
Alguem poderia me ajudar o sensor esta lendo valores muito autos na condis com a temperatura do ambiente. Se puderem ajudar agradeço desde jah.
Alguém conseguiu conectar dois sensores DHT11 no mesmo arduino? e queira compartilhar o código?
Amigo, estou precisando lugar dos sensores, inicialmente penso em um dht11 e um dht22. Pode me dar uma ideia de como programar isso? Abs
estou utilizando o arduino para fazer a leitura do sensor dht11. quando conecto a porta usb do arduino no notbbok para ler a resposta do sensor via IHM do arduino obtenho uma resposta bem estável exemplo 31, 31, 31, 31, 31, 31, 31, 31, 31 …. mas quando uso a HIM do arduino para verificar sua resposta no raspberry Pi está varia de forma não controlada. exemplo : temperatura 31, 31,31, 35, 29, 30, 31, 32, 31, 31, 31, 31, 28 …. qual pode ser o motivo dessa variaçao ?
estou utilizando o arduino para fazer a leitura do sensor dht11. quando conecto a porta usb do arduino no notbbok para ler a resposta do sensor via IHM do arduino obtenho uma resposta bem estável exemplo 31, 31, 31, 31, 31, 31, 31, 31, 31 …. mas quando uso a HIM do arduino para verificar sua resposta no raspberry Pi está varia de forma não controlada. exemplo : temperatura 31, 31,31, 35, 29, 30, 31, 32, 31, 31, 31, 31, 28 …. qual pode ser o motivo dessa variaçao ?
como faço pra imprimir os valores num lcd 16×2 com o i2c? grato
Hey, to fazendo um projeto que vai ser necessário ler a temperatura e hummidade, achei interessante usar a sua biblioteca e desde já agradeço.
Mas estou com algumas duvidas.
1 – como/onde eu vejo todas as funções disponiveis na biblioteca e como elas funcionam? A propósito, essa dúvida surgiu não só para a sua biblioteca, mas para outras tbm que estou usando, enfim, se puder me dar uma luz quanto a isso ficarei grato
2 – Como eu faço se eu estiver usando mais de um sensor DTH11, no caso desse projeto preciso ler a temperatura em 3 pontos diferentes… como fazer?
Agradeço a atenção
O amigo, estou na mesma, se tiver conseguido me ajuda ai, valeu.
Perfeito, foi a unica biblioteca que funcionou para mim, o único problema é que preciso de colocar 2 módulos e não estou conseguindo, já faz 3 anos que não mexo no Arduíno to apanhando um pouco, pode me dar uma força? obrigado.
Como faço pra coletar e enviar para um banco de dados?
Oi Luiz,
Você tem várias alternativas. Dá pra usar um ethernet shield, um módulo GSM ou até mesmo um módulo ESP8266. Aliás eu tenho um post sobre um módulo ESP8266 com DHT11 que talvez te ajude. Dá uma olhada no post Termômetro IoT com ESP8266 e DHT11.
Abraço!
Adilson