fbpx
ArduinoNovidade

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.

Imagem que retrada a foto física de um sensor DHT
Figura 1 – Módulo sensor DHT11

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


ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

Monte o circuito da Figura 2 utilizando a protoboard, o módulo DHT11 e os fios.

A imagem mostra a ilustração de um circuito usando o sensor DHT11 utilizando o Arduino
Figura 2 – Circuito para o projeto Medir temperatura e umidade com o módulo DHT11.

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:

  1. A instrução #include <DHT.h> é utilizada para incluir a biblioteca do sensor DHT11 no código;
  2. 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;
  3. 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;
  4. No loop, inicializamos a comunicação serial e o sensor DHT11;
  5. 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.

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.