Como medir temperatura e umidade com o módulo sensor DHT11 e Arduino
O DHT11 é um sensor capaz de medir a temperatura e a umidade do ambiente. Este componente é constituído de duas partes principais: um sensor de umidade capacitivo e um sensor de temperatura termistor NTC, isto é um resistor sensível à variação de temperatura. As principais características deste componente encontram-se descritas a seguir:
O módulo sensor DHT11 (Figura 1) é um componente amplamente utilizado em projetos que envolvem a medição da temperatura e umidade com o Arduino. Esse módulo possui 3 terminais. O primeiro (VCC) é o terminal de alimentação, que conforme datasheet do fabricante pode ser entre 3 V e 5,5 V. O segundo (OUT) é o pino de comunicação de dados, será através dele que o valor da temperatura e umidade serão comunicados a placa UNO. Por fim, o último (GND) é o terminal de terra do sensor.
A proposta deste projeto é utilizar o módulo DHT11para medir a temperatura e umidade de um ambiente. Os valores medidos serão impressos no Monitor Serial do Arduino IDE.
MATERIAIS NECESSÁRIOS
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB;
- 1 x Sensor de umidade e temperatura DHT11;
- 1 x Resistor 10 kΩ;
- 1 x Protoboard;
- Fios de jumper macho-macho.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Monte o circuito da Figura 2 utilizando a protoboard, o módulo DHT11 e os fios.
Ao montar seu circuito na protoboard preste atenção no seguinte ponto:
- O pino 1 do sensor DHT11 será ligado a alimentação de 5V da placa UNO, o pino 2 deve ser conectado à porta digital 2 e o pino 3 deve ser conectado ao GND (terra).
ELABORANDO O CÓDIGO
Com o circuito montado, vamos a programação do nosso Sketch. A proposta deste projeto é medir a temperatura e a umidade usando o módulo DHT11 e exibir estas informações no Monitor Serial do Arduino IDE.
Inicialmente, vamos proceder a instalação das bibliotecas para utilização do sensor DHT11. Estas bibliotecas encontram-se disponíveis para download nos seguintes links:
DHT Sensor Library:
www.blogdarobotica.com/biblioteca-dht11
Adafruit Unified Sensor Lib:
www.blogdarobotica.com/biblioteca-adafruit
Após realizar o download da biblioteca, vamos instalá-la por meio do seguinte caminho: Toolbar > Sketch > Incluir biblioteca > Adicionar biblioteca ZIP.
Com a biblioteca instalada, vamos a programação do nosso Sketch. Este projeto propõe a utilização do sensor DHT11 para leitura da umidade e temperatura do ambiente e imprimir estes valores na serial do Arduino IDE.
O código do projeto proposto ficará da seguinte maneira:
#include <DHT.h>//Inclui a biblioteca DHT Sensor Library #define DHTPIN 2//Pino digital 2 conectado ao DHT11 #define DHTTYPE DHT11//DHT 11 DHT dht(DHTPIN, DHTTYPE);//Inicializando o objeto dht do tipo DHT passando como parâmetro o pino (DHTPIN) e o tipo do sensor (DHTTYPE) void setup() { Serial.begin(9600);//Inicializa a comunicação serial dht.begin();//Inicializa o sensor DHT11 } void loop() { delay(2000);//Intervalo de dois segundos entre as medições float h = dht.readHumidity();//lê o valor da umidade e armazena na variável h do tipo float (aceita números com casas decimais) float t = dht.readTemperature();//lê o valor da temperatura e armazena na variável t do tipo float (aceita números com casas decimais) if (isnan(h) || isnan(t)) {//Verifica se a umidade ou temperatura são ou não um número return;//Caso não seja um número retorna } Serial.print("Umidade: ");//Imprime no monitor serial a mensagem "Umidade: " Serial.print(h);//Imprime na serial o valor da umidade Serial.println("%");//Imprime na serial o caractere "%" e salta para a próxima linha Serial.print("Temperatura: ");//Imprime no monitor serial a mensagem "Temperatura: " Serial.print(t);//Imprime na serial o valor da temperatura Serial.println("°C ");//Imprime no monitor serial "ºC" e salta para a próxima linha }
Ao elaborar o código observe os seguintes pontos:
- A instrução #include <DHT.h> é utilizada para incluir a biblioteca do sensor DHT11 no código;
- A instrução #define DHTTYPE DHT11 define que o tipo de sensor utilizado é o DHT11, uma vez que esta biblioteca também pode ser utilizada para outros tipos de sensor como o DHT22;
- Iniciaremos o setup incluindo um intervalo para que as leituras só ocorram de 2 em 2 segundos, pois este é o tempo de resposta do sensor;
- No loop, inicializamos a comunicação serial e o sensor DHT11;
- Como forma de evitar erros de leitura, criamos a condicional if (isnan(h) || isnan(t)) para verificar se os valores de temperatura ou umidade são números. Para isso, utilizamos a função isnan (do inglês, is not a number) que retorna 1 se o valor não for um número.
Espero ter ajudado,
Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.