Básico - Projeto 40

Sensor de temperatura e umidade DHT11 com display

Objetivo

Neste projeto vamos demonstrar o uso de um LCD como mostrador de temperatura e umidade obtidas através do sensor DHT11. Também mostraremos neste projeto como incluir bibliotecas no IDE do Arduino.

Sensor DHT11 Umidade e Temperatura

Sensor DHT11 - O DHT11 é um sensor básico de baixo custo utilizado para a medição de temperatura e umidade do ar ambiente através de um termistor e um sensor capacitivo. Existem várias versões diferentes do DHT11 com a mesma aparência e número de pinos. Portanto é importante verificar o data sheet do componente para obter suas características principais. No nosso projeto as características estão descritas na tabela de componentes.

Aplicação

Para fins didáticos e projetos onde é necessária a medição de temperatura e/ou umidade do ambiente.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos

Comprar

1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 830 pontos

Jumpers Kit cabos ligação macho / macho

Comprar

1  
Display LCD

Display LCD 16X2 com pinos soldados

Comprar

1 DISPLAY LCD 16X2

LCD que utilize o controlador HD44780 (veja na descrição ou datasheet do componente)

O display poderá ser de qualquer cor (fundo verde, azul ou vermelho)

Potenciômetro

Potenciômetro 1OK

Comprar


 

1 Resultado de imagem para potenciômetro

O valor do potenciômetro aumenta quando giramos o eixo do componente na direção do polo negativo para o polo positivo.

Obs.: Se não possuir potenciômetro de 10KΩ você poderá utilizar um de outro valor, de 1kΩ até 100kΩ.

Sensor de Temperatura e Umidade DHT11

Sensor de Temperatura LM35

Comprar

1

Sensor DHT11 Umidade e Temperatura

Características do DHT11 utilizado neste exemplo:

Tensão de alimentação: 3V a 5V

Umidade relativa: 20% a 90% (precisão de 5%)

Temperatura: 0 a 50 ºC (precisão de 2%)

Intervalo entre medições: mínimo 2s

Corrente de utilização: 2,5mA

datasheet

Arduino UNO R3 Arduino UNO Original

Comprar

 

Arduino UNO Similar

Comprar


 

1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.


Atenção

1) Neste projeto vamos utilizar um display LCD 16x2 com controlador HD44780, que se adapta aos mais diversos projetos com vários modelos de placas e microcontroladores. Este display possui 16 colunas por 2 linhas com backlight (luz de fundo) verde, azul ou vermelha e tem 16 pinos para a conexão. Atenção: Utilize um display LCD com os pinos soldados.

border:1px solid #000; 

2) Preste muita atenção na montagem do dsiplay LCD. Observe que utilizamos os 6 primeiros pinos do LCD, pulamos os 4 próximos e então utilizamos mais 6pinos. Veja a tabela abaixo:

3) Cuidado para não ligar o sensor de temperatura invertido. Ele deve ficar com a face reta virada para frente e conectado da seguinte forma:

Pinagem DHT11 

Veja como deve ser a montagem no Arduino:

5) Observe que nesse projeto o potenciômetro foi montado como um divisor de tensão, onde utilizamos os 3 terminais do componente:

Obs.: Ao girar o eixo do potenciômetro, o valor da tensão deverá aumentar do negativo para o positivo, ou seja, se a tensão do circuito for 5V, o potenciômetro irá variar de 0 a 5V.

No nosso exemplo, girando-se o eixo do potenciômetro no sentido horário, aumentamos a tensão na entrada do pino 3 do display e diminuímos o contraste dos caracteres com o back light (luz de fundo) até que não é mais possível visualizá-los. Fazendo o contrário, ou seja, diminuindo a tensão até o zero, teremos um contraste máximo entre os caracteres e a luz de fundo.

6) A montagem do nosso projeto foi realizada em um protoboard com linhas de alimentação não contínuas, onde acrescentamos jampers para a ligação. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas - saiba mais em protoboard

Incluindo bibliotecas no IDE do Arduino

Neste projeto vamos mostrar como adicionar uma biblioteca no IDE do Arduino. Uma das grandes vantagens das placas Arduino é a diversidade de bibliotecas disponíveis que podem ser utilizadas em seus programas. Estas bibliotecas podem ser criadas para a linguagem "C" ou especificamente para o Arduino, reduzindo drasticamente o tempo gasto com programação.

Download dos arquivos da biblioteca do sensor DHT11

Para trabalharmos de forma mais fácil com o sensor DHT, podemos baixar a biblioteca DHTlib que foi desenvolvida para os sensores DHT11, DHT22, DHT33 e DHT44:

Para saber detalhes desta biblioteca clique aqui.

Instalando a biblioteca pelo IDE do Arduino

Após fazer o download do arquivo DHPlib.zip com todos os arquivos da biblioteca compactados no formato zip, abra o IDE do Arduino. No menu superior, clique em Scketch -> Incluir biblioteca -> Adicionar biblioteca.ZIP para enviar o arquivo.

Selecione o arquivo que você baixou e clique no botão Abrir.

 Desta forma, a nova biblioteca foi instalada. Para utilizá-lo basta ir em Sketch -> Incluir Biblioteca e selecionar a biblioteca DHTlib.

 

 Observe que o IDE adicionou no início do seu código a linha #include <dht.h> que é o comando para você incluir a biblioteca para utilização de qualquer sensor DHT.

Ligando o display LCD

1.Para visualizar o display funcionando, digite o código abaixo no ambiente de desenvolvimento IDE do Arduino. Faça a verificação e o upload:

/*******************************************************************************
*
*          Testando o Display LC 16 X 2
*            http://squids.com.br/arduino
*
*******************************************************************************/
//Carrega a biblioteca LiquidCrystal
#include <LiquidCrystal.h>

//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
//Define LCD 16 colunas por 2 linhas
lcd.begin(16, 2);

//Posiciona o cursor na coluna 0, linha 0;
lcd.setCursor(0,0);
//Envia o texto entre aspas para o LCD
lcd.print("Ola, meu nome e:");

//Posiciona o cursor na coluna 1, linha 1;
lcd.setCursor(1,1);
//Envia o texto entre aspas para o LCD
lcd.print("Squids Arduino");
}

void loop() {

} 

2. Se o display acender e mostrar os caracteres como na figura abaixo, a ligação está correta.

ATENÇÃO: Se o display acender e não mostrar os caracteres provavelmente é em função do contraste. Gire o eixo do potenciômetro no sentido anti-horário para aumentar o contraste. Se mesmo assim o display não mostrar os caracteres, corrija a montagem do circuito e/ou o código.

Comandos do display LCD para a biblioteca LiquidCrystal

No projeto vamos utilizar alguns comandos de controle do display LCD através da biblioteca LiquidCrystal que já vem embutida na IDE do Arduino. Para conhecer todos os comandos desta biblioteca, acesse o link: Comandos display LCD para biblioteca LiquidCrystal e LiquidCrystal Library (Arduino Reference).

Obs.: Para acessarmos uma biblioteca embutida na IDE do Arduino, assim como, para acessarmos um biblioteca local através de um header file, utilizaremos a diretiva #include.

Código do Projeto (Sketch)

1) Faça o dowload e abra o arquivo projeto40.ino no IDE do Arduino:

Ou se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*    Projeto 40 - Utilizando um sensor de temperatura e umidade DHT11 com LCD 
*            http://squids.com.br/arduino
*
*******************************************************************************/
#include <dht.h> // Inclui a biblioteca no seu código
#include <LiquidCrystal.h> //Carrega a biblioteca LiquidCrystal nativa na IDE

//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
dht DHT; // Cria um objeto da classe dht
uint32_t timer = 0;
 
void setup()
{
  Serial.begin(9600); // Inicializa serial com taxa de transmissão de 9600 bauds
  lcd.begin(16, 2); // Define o display com 16 colunas e 2 linhas
  lcd.clear(); // limpa a tela do display
}
 
void loop() {
  // Executa 1 vez a cada 2 segundos
  if(millis() - timer>= 2000)
  {
 
    DHT.read11(A1); // chama método de leitura da classe dht,
                    // com o pino de transmissão de dados ligado no pino A1
 
    // Exibe na serial o valor de umidade
    Serial.print("Umidade = ");
    Serial.print(DHT.humidity);
    Serial.print(" %  ");
 
    // Exibe na serial o valor da temperatura
    Serial.print("Temperatura = ");
    Serial.print(DHT.temperature); 
    Serial.println(" Celsius  ");

    // Exibe no display LCD o valor da humidade
    lcd.setCursor(0,0); // Define o cursor na posição de início
    lcd.print("Humd. = ");
    lcd.print(DHT.humidity);
    lcd.print("%");

    // Exibe no display LCD o valor da temperatura
    lcd.setCursor(0,1); // Define o cursor na posição de início
    lcd.print("Temp. = ");
    lcd.print(DHT.temperature);
    lcd.write(B11011111); // Imprime o símbolo de grau
    lcd.print("C");

    timer = millis(); // Atualiza a referência
  }
} 

Vídeo

Como o projeto deve funcionar

1. Ao executar o programa, a temperatura atual, em Celsius, e a umidade relativa, em porcentagem, serão exibidas no display LCD.

2. Para visualizar a leitura das temperaturas e umidade relativa registradas, clique no ícone monitor serial, como mostra a figura abaixo:

Desafios

Com base neste projeto, resolva o seguinte desafio:

O anúncio abaixo ajuda a manter o Squids Arduino funcionando.