O Projeto DHT11 Arduino Medindo Temperatura e Umidade é um trabalho desenvolvido para quem esta começado a conhecer esse sensor e deseja aprender a utilizá-lo de um modo prático e eficiente, bastando algumas linhas de programação e fazer a respectiva ligação elétrica corretamente, conforme veremos a seguir.
Aqui desenvolvemos uma síntese de comunicação de um sensor de temperatura e umidade DHT11 com a plataforma Arduino e o computador através da porta USB. O projeto consiste em fornecer tanto temperatura quanto umidade do ar instantaneamente. A partir dele você poderá usar o conceito básico em várias outras aplicações simples e úteis.
A apresentação foi desenvolvida para ler a temperatura e umidade através do sensor DHT11, apresentar os dados na porta serial do Arduino, após ele faz a comparação com os valores pré-definidos, e executa a função, no nosso caso, colocamos para quando a temperatura for maior que 35ºC, o LED acende por 10 segundos e dá um “Bip”. Caso a umidade for menor que 50% o LED acenderá por 5 segundos e dará 4 “Bip’s”. Os valores de tempo podem ser redefinidos a seu critério.
Observação: Se o resultado das leituras estiver variando muito, você devera fazer uma checagem nos fios para que não tenha nenhum tipo de falha na comunicação.
Produtos Utilizados Projeto DHT11 Arduino
- 1 x Sensor de temperatura e umidade DHT11;
- 1 x Arduino Uno R3;
- 1 x Led Vermelho;
- Resistor 100 Ohms;
- 1 x Buzzer 5V;
- 1 x Kit de Jumpers;
- 1 x Protoboard 830 pontos.
Padrão de Comunicação DHT11 Arduino
Este módulo utiliza um sensor DHT11 capacitivo de umidade e um termistor para medir o ar que o envolve e produz um sinal digital enviado para o pino de dados. O sensor se comunica com o Arduino através de uma interface serial, que funciona da seguinte forma:
O Arduino (MCU como descrito na imagem) envia para o sensor um pulso negativo de 18ms seguido de um pulso positivo de 20µS a 40µS, logo após o sensor envia para o Arduino uma resposta, e a seguir envia os bits de dados obtidos nas medições.
O sensor DHT11 envia 40 bits (5 bytes) mais os bits de inicialização. Os dados são transmitidos na seguinte ordem: – Parte Inteira de Umidade Relativa —> Parte Decimal da Umidade Relativa —> Parte Inteira da temperatura —> Parte Decimal da temperatura- -> Checagem do envio. Vale lembrar que para cada leitura do sensor devemos esperar aproximadamente 2 segundos, por causa do seu modo de comunicação, o qual se torna um pouco lento.
Montagem do Projeto DHT11 Arduino
Utilizando os Jumpers conecte da seguinte forma: Pino “OUT” do sensor DHT11 será conectado ao pino digital 2 do Arduino, o LED no pino digital 6, e o Buzzer conectado ao pino digital 7. O terminal negativo do LED será conectado ao “GND” do Arduino, seguidamente o terminal negativo do Buzzer será conectado também ao “GND”. O terminal (+) do Sensor será conectado ao 5v, no Arduino.
O circuito deverá ficar conforme a figura:
Funcionamento da Biblioteca DHT11
O código de programação se baseia em fazer a leitura do sensor e comparar os valores obtidos com um valor pré-definido de forma eficaz, para o controle de um aviso sonoro (Buzzer) e um aviso luminoso (Led). O código esta todo comentado para uma melhor compreensão.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
// Exemplo de teste dos sensores de temperatura e umidade // Escrito por ladyada // Adaptado por Equipe Usinainfo #include "DHT.h" #define DHTPIN 11 // O pino que estive conectado... #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) // Conecta pin 1 (na esquerda) no sensor +5V // Conecta pin 2 no sensor para qualquer que seja o DHTPIN // Conecta pin 4 (na direita) no sensor - para TERRA // Conecta uma resistencia de 10K no pino 2 (dado) ao pino 1 (alimentação) do sensor DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.comeco(); } void loop() { // Ler temperatura ou umidade leva cerca de 250 milissegundos // As leituras do sensor tambem podem ser 'velhas' (Se o sensor for muito lento) float h = dht.le_umidade(); float t = dht.ler_Temperatura(); // Verifica se os retornos são validos, Se forem NAN (not a number - não um numero) então algo deu errado! if (isnan(t) || isnan(h)) { Serial.println("Falha ao ler de DHT"); } else { Serial.print("Umidade: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(t); Serial.println(" *C"); } } |
Download Programa Principal para Sensor de Temperatura e Umidade
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
/********************************* ***Autor: Leonardo Dalla Porta**** ***********18/04/2014************* *************Atenção************** ***O Codigo esta livre para uso,** *desde que seja mantida sua fonte* ********e seu autor.************** ********Faça um bom uso*********** ******Att. Equipe UsinaInfo******* *********************************/ #include "DHT.h" #define DHTPIN 2 // Pino onde sera conectado a saida de dados do sensor int led = 6; int buzzer = 7; int TempMax = 35; int HumiMin = 50; #define DHTTYPE DHT11 // Define o sensor utilizado DHT dht(DHTPIN, DHTTYPE); //Da um nome para o Sensor void setup() { Serial.begin(9600); //Inicializa a coneçao serial dht.begin(); //Inicia a comunicaçao com o sensor Serial.println("Acesse:"); //Escreve uma mensagem na serial Serial.println("www.usinainfo.com"); pinMode(led, OUTPUT); //Define os pinos led e buzzer como saida pinMode(buzzer, OUTPUT); } void loop() { int humidade = dht.readHumidity(); //Define uma variavel para humidade int temperatura = dht.readTemperature(); //Define uma variavel para Temperatura // Se ouver falha na leitura if (isnan(temperatura) || isnan(humidade)) { Serial.println("Erro na leitura do sensor"); //Envia uma mensagem de erro para a serial delay(500); //Espera um tempo } else //Se nao ouver erro... { Serial.print("Humidade: "); //Escreve a humidade na serial Serial.print(humidade); Serial.print(" %\t"); Serial.print("Temperatura: "); //Escreve a temperatura na serial Serial.print(temperatura); Serial.println(" *C"); if(temperatura>TempMax) //Condiçao: Se a temperatura for maior que TempMax... { digitalWrite(led, HIGH); // Liga o Led digitalWrite(buzzer, HIGH); //Dá um "Bip" no buzzer delay(500); digitalWrite(buzzer, LOW); delay(10000); //Aguarda 10 Segundos digitalWrite(led, LOW); //Desliga o led } // Fecha o loop if if(humidade<HumiMin) //Condiçao: Se a humidade for menor que HumiMin... { digitalWrite(led, HIGH); // Liga o Led for(int buz=0; buz<=3; buz++) //Dá 3 "Bips" no buzzer { digitalWrite(buzzer, HIGH); delay(500); digitalWrite(buzzer, LOW); delay(500); } delay(5000); //Aguarda 5 Segundos digitalWrite(led, LOW); //Desliga o led } // Fecha o loop if } // Fecha o loop else } // Fecha o loop |
Conclusão
O Projeto DHT11 Arduino Medindo Temperatura e Umidade mostrou que ele é um dispositivo de muita praticidade e muito útil, seu design simples e compacto nos da uma ampla variedade de possíveis aplicações desde simples monitores de umidade e temperatura, até grandes projetos de automação residencial.
Esse projeto maker diy teve como base especificamente a necessidade de alguém medir a temperatura e umidade de certo ponto da casa ou ambiente. Outros módulos podem ser usados na implementação de um projeto um pouco mais arrojado, desde adicionar uma tela display LCD, até um Ethernet Shield e enviar as informações de temperatura e umidade para um servidor web, por e-mail ou até mesmo para seu smartphone.
Autor: Leonardo Dalla Porta
Boa tarde! Estou tentando desenvolver um mini projeto escolar que use o sensor de temperatura DHT11. Estou pesquisando e vendo como fazer um sensor que messa a temperatura de uma pessoa pelo celular.
Gostaria de uma ajuda, se alguem souber os componentes que terei de usar, pois nõ estou conseguindo sabe por onde começar.
Boa tarde!
Como o seu projeto procura verificar a temperatura de uma pessoa, vale verificar os diferente sensores de temperatura, já que o DHT11 se limita á uma temperatura do ambiente que o cerca. No seu caso como a intenção é medir a temperatura corporal, o mais indicado seria um sensor infravermelho de temperatura como o que temos o projeto em nosso blog.
Após definido o sensor que irá utilizar, precisa verificar um dispositivo de conexão bluetooth para realizar o envio de dados ou pode ainda utilizar um GSM para enviar mensagens SMS, vai da sua criatividade.
Vi que no site vcs vendem o “sensor DHT11” e vendem tb o “módulo sensor DHT11” qual seria a diferença entre utilizar um e o outro no projeto?
Boa tarde!
O módulo DHT11 é desenvolvido no formato de módulo, não sendo somente um componente, deste modo, possui resistores integrados e uma barra de pinos que dispensam a necessidade de protoboards para sua utilização.
Att Equipe UsinaInfo
Gostei muito do seu projeto, mas gostaria de acrescentar o LCD para visualizar a temperatura e a umidade
Poderia me ajudar a acrescentar o LCD
Obrigado Dorival Bonini
Embora seja dito que o DHT11 envia a porção decimal da temperatura e da umidade, elas sempre vêm zeradas. Dessa forma, só conseguimos obter leituras inteiras dos dois parâmetros. Para conseguir com precisão decimal, devemos utilizar o DHT22
Olá Silvio!
Teoricamente o DHT22 tem uma precisão maior que a do DHT11, porém este último modelo deveria verificar valores decimais sem problema.