fbpx
NovidadeSérie Arduino

Medindo temperatura e umidade usando o sensor DHT11

Olá pessoal!

No tutorial de hoje vamos aprender como medir da temperatura e umidade de um ambiente usando o sensor DHT11 no 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.

A Figura 1 demostra a estrutura do sensor DHT11, que possui 4 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 (DATA) é o pino de comunicação de dados, será através dele que o valor da temperatura e umidade serão comunicados a placa microcontroladora. O terceiro (NC) é um pino vazio. Por fim, o último (GND) é o terminal de terra do sensor.

Figura 1: Estrutura do sensor DHT11.

Vamos aproveitar este tutorial para aprender um pouco sobre a utilização de bibliotecas no Arduino IDE. As bibliotecas são um conjunto de instruções desenvolvidas para executar tarefas específicas relacionadas a um determinado dispositivo. No nosso caso utilizaremos as bibliotecas DHT Sensor Library e Adafruit Unified Sensor Lib.


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 de 10 kΩ;
1 x Protoboard;
Fios de jumper macho-macho.


ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

Antes de iniciar a montagem elétrica do circuito, certifique-se que a sua placa Arduino esteja desligada. Em seguida, monte o circuito utilizando a protoboard, o resistor, o sensor DHT11 e os fios.


• O pino 1 (VCC) do sensor DHT11 será ligado a alimentação de 5 V da placa Arduino;
• O pino 2 (DATA) deve ser conectado à porta digital 2;
• O pino 3 (NC) não será utilizado;
• E o pino 4 (GND) deve ser conectado ao GND (terra);
• Um resistor pull-up de 10 kΩ deve ser inserido no pino 2 do DHT11.


INSTALANDO AS BIBLIOTECAS

Antes de iniciar a elaboração do código, 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

Adafruit Unified Sensor Lib

Após realizar o download da biblioteca, vamos instalá-la por meio do seguinte caminho: Toolbar > Sketch > Incluir biblioteca > Adicionar biblioteca ZIP, conforme ilustra a Figura 2.

Figura 2: Caminho para incluir biblioteca no Arduino IDE.

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.


ELABORANDO O CÓDIGO

Com o circuito montado e biblioteca instalada, vamos a programação do Sketch. Para melhor compreensão o código será explicado passo-a-passo a seguir. Neste momento, observe o código abaixo e aproveite para analisar sua estrutura.

//Projeto medir a temperatura e a umidade com DHT11
#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 DHTPIN 2 define que o pino digital 2 será responsável por receber os dados do sensor DHT11;

3. 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;

4. O comando DHT dht(DHTPIN, DHTTYPE); foi utilizado para criar o objeto dht do tipo DHT, passando como parâmetros o pino que o DHT11 encontra-se conectado e o tipo de sensor utilizado;

5. No loop, inicializamos a comunicação serial e o sensor DHT11;

6. 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;

7. Em seguida, criamos duas variáveis do tipo float para receber a leitura da umidade e temperatura;

8. 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;

9. A instrução Serial.print(“Umidade: “); é utilizada para que seja impressa no monitor serial o texto “Umidade: ”;

10. A instrução Serial.print(h);é utilizada para imprimir no monitor serial do Arduino IDE o valor da umidade lida;

11. O comando Serial.println(“%”); é utilizada para imprimir na serial o caractere “%” e saltar para a próxima linha;

12. A instrução Serial.print(“Temperatura: “); é utilizada para que seja impressa no monitor serial o texto “Temperatura: ”;

13. Para imprimir o valor da temperatura captada pelo sensor utiliza-se a instrução Serial.print(t);

14. O comando Serial.println(“°C “); é utilizada para imprimir na serial o texto “ºC”;

Após carregar o código para o Arduino, abra o monitor serial. Os dados de temperatura e umidade serão exibidos e atualizados num intervalo de 2 segundos.

Espero que tenham gostado deste tutorial. Em caso de dúvidas deixe seu comentário abaixo.

Att.,

Carol Correia Viana

Dúvidas? Deixe seu comentário

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.

Deixe uma pergunta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.