foto-destaque-dht22-lcd-display-i2c
Tutorial: Medindo a temperatura com o sensor DHT 22 e LCD Display I2C
Índice

Neste tutorial, iremos aprender a medir a temperatura e umidade do ambiente e projetar essas informações em um display LCD.

 
1. Introdução

Se você está “engatinhando” no mundo do Arduino e seus componentes, irá gostar desse tutorial: iremos configurar o sensor de temperatura e umidade DHT22 adicionando o display LCD para visualizar as informações obtidas.

Para o experimento vamos utilizar o sensor DHT22, porém existem outros dois bem conhecidos – DHT11 e LM35 – e o Termístor, um semicondutor sensível à temperatura. É possível encontrar também outros tipos de sensores de temperatura como o DS18B20, que informa temperatura embaixo d’água.

 
2. Biblioteca

O DHT22 é um dos sensores de maior precisão, porém é necessário calibrar e instalar a biblioteca antes de usá-lo. Aqui você encontra todas as informações.

Para baixar a biblioteca, clique aqui e depois no botão verde “clone or download”. Baixe o arquivo em zip:

 

download-biblioteca-dht22

Download da biblioteca DHT22

 

Descompacte a pasta e certifique-se que exista dentro dela o arquivo dht.cpp. Renomeie essa pasta como DHT e arraste para a pasta “libraries” ou “biblioteca”, dentro da pasta Arduino.

Feche a IDE, caso esteja aberta, e abra novamente. Busque o exemplo dentro da biblioteca File/ Examples/ DHT sensor library/ DHTtester.

Como você notou, alguns componentes necessitam de bibliotecas. Também é necessário baixar a biblioteca do display, conforme indicado na página do produto.

O ambiente do Arduino pode ser ampliado por meio delas, assim como na maioria das plataformas. São elas que proporcionam funcionalidades extras para usar em determinados projetos, trabalhando com hardwares específicos ou manipulando informações. Podemos inserí-las de duas formas: a primeira delas é incluir a biblioteca diretamente pela IDE do Arduino. Para achar uma e instalar, siga esse caminho: Sketch > Import Library > Manage Libraries. Feito isso busque pela biblioteca e clique em “Install”. Feche a IDE e abra novamente, ou, caso necessário, reinicie seu computador.

A segunda forma é mais trabalhosa, porém necessária às vezes. Dependendo do componente que você adquiriu ou do seu projeto, você precisará buscar pela biblioteca na Internet, ler as instruções e instalar. Quando a mesma for encontrada copie e cole ou arraste a pasta correspondente para a pasta “bibliotecas” dentro da pasta Arduino. Segue o caminho (no nosso caso): C:\Program Files (x86)\Arduino\libraries.

A terceira forma de incluir uma biblioteca é baixar a pasta correspondente e, na IDE do Arduino fazer o seguinte caminho a partir do menu principal: Sketch > Incluir Biblioteca > Abrir Biblioteca .ZIP e abrir a pasta.

 
3. Estrutura do programa

Segue a estrutura completa do programa:

Como queremos apenas demonstrar como funciona o sensor, vamos utilizar o exemplo da biblioteca adaptando alguns comandos.

Primeiramente, precisamos incluir bibliotecas do DHT (#include “DHT.h”), do módulo I2C (#include ) e do display (#include ); em seguida, configurar o display (LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);) e o DHT (DHT dht(PINODHT, TIPODHT);); por último, definir qual pino utilizaremos para comunicação com o DHT (#define PINODHT 2) e qual dos DHTs (#define TIPODHT DHT22).

Feito isso, vamos para o bloco void setup (). Nessa parte vamos inicializar nosso display com a frase “Testando o sensor de temperatura e umidade DHT22!”, mas como se trata de uma simples demonstração vamos distribuir as palavras conforme o espaço disponível no display, por exemplo, na primeira coluna e primeira linha (lcd.setCursor(0,0)) vamos posicionar a parte “Testando o sen-“, na primeira coluna e segunda linha (lcd.setCursor(0,1)) inserimos “sor de tempera-” e assim por diante até toda a frase aparecer. Em algumas partes foi necessário utilizar o lcd.clear para limpar as palavras anteriores. Depois disso, apenas inicializamos o DHT com o dht.begin();.

No void loop(), é necessário esperar algum tempo antes de mostrarmos algo no display, pois o sensor leva cerca de 250 milisegundos para fazer a leitura das informações do ambiente (delay(1000)).

Vamos declarar uma variável para ler a umidade (lembrando que estamos utilizando um exemplo da biblioteca, portanto os termos estão em inglês), float h = dht.readHumidity(); e outra para a temperatura, que por padrão é feita em Celsius, float t = dht.readTemperature();. O exemplo utiliza a variável do tipo float porque os valores obtidos estão em porcentagem ou não são inteiros, como veremos mais para frente.

Em seguida, deixamos uma instrução caso haja falha na leitura if (isnan(h) || isnan(t)) { lcd.setCursor(0, 1); lcd.print(“Falha ao ler”); return; }. Se não houver erro de leitura instruimos o programa a “imprimir” no display as informações que o sensor leu: na primeira coluna e primeira linha (lcd.setCursor (0,0)) vamos mostrar a abreviação de umidade “UMID:” (lcd.print(“Umid: “);) e, na sexta coluna da primeira linha (lcd.setCursor (6,0)) mostramos o valor lido (lcd.print(h);); a unidade de medida será a porcentagem % (lcd.print(“%”);), posicionada na coluna 12 da primeira linha (lcd.setCursor(12, 0);).

Assim faremos para a temperatura também, lembrando que precisamos mudar as unidades, posicionamento no display e variável.

 
4. Componentes e materiais

  • Uma protoboard.
  • Um Arduino UNO.
  • Um cabo USB.
  • Um LCD Display I2C.
  • Um sensor DHT22.
  • Cabos jumper macho-macho.
  • Um resistor 10k

 

protoboard

Protoboard

 

placa arduino uno

Arduino UNO

 

cabo usb

Cabo USB

 

-display-lcd

LCD Display I2C

 

DHT22O3

Sensor DHT22

 

Resistor 10k

 

cabo-jumper

Cabos jumper

 

5. Montagem

Conecte o VCC e o GND do Arduino com a protoboard:

 

arduino-protoboard

Conectando a protoboard com o Arduino

 

Vamos conectar nosso DHT22: ele possue 4 pinos (da esquerda para a direita), um para alimentação, outro para comunicação, o terceiro é um pino nulo e um último para o GND. Lembrando que devemos colocar um resistor de 10k na trilha do cabo de comunicação:

 

montagem-dht

Montagem do DHT

 

Agora, devemos conectar os cabos do módulo I2C do display com o Arduino. Esse módulo possui 4 pinos, um para alimentação VCC, outro para o GND, um para a comunicação (SDA), que deve ser conectado ao pino A4 (isso no Arduino UNO, em outros é necessário pesquisar) e o SCL, uma espécie de temporizador entre os dispositivos (ele funciona como uma referência de tempo para a leitura da informação), que deve ser conectado ao pino A5.

 

conexao-modulo-i2c

Conexão módulo I2C

 

resultado-montagem

Montagem final

 

O resultado deverá ser parecido com esse:

 

 
6. Upload

Lembre-se de conectar o Arduino à entrada USB do seu computador. Verifique se a placa e portas estão já estão configuradas na IDE. Em caso de dúvida, clique aqui e reveja como fazer.

Para efetuar o Upload, clique na seta indicada em vermelho.

 

upload

Upload do programa

 

7. Dicas

  • Mude a porta USB.
  • Reposicione os componentes em outra parte da protoboard.
  • Aperte “Reset” do Arduino.
  • Troque de cabo.
  • Reinicie a IDE.
Produtos
Promoção!
Arduino UnoArduino Uno

Uno SMD – Arduino compatível

R$59,90 R$54,90

Ideal para iniciantes, o Uno é um Arduino compatível bem capaz, barato e com diversos shields e sensores compatíveis disponíveis. Se você está começando a aprender sobre microcontroladores e Arduinos, esta é a placa perfeita! Ela é a nossa placa principal nos nossos tutoriais de Arduino.

display-lcd

Display LCD 16X2 caracteres com I2C

R$24,90

Nosso display 16×2 vem equipado com uma placa I2C. Isto significa que com apenas duas conexões para alimentação e mais duas para comunicação pode-se fazer o display funcionar!

Muito mais simples que as conexões paralelas dos outros displays.

protoboard-830-2Out Of Stock

Protoboard transparente 830 pontos

R$24,90

Protoboard transparente com 830 pontos para prototipagem é ideal para trabalhos elétricos e eletrônicos com Arduino e microcontroladores em geral. É fácil tem muito espaço para conectar leds, cabos, resistores entre outros.

Os pólos negativos e positivos estão bem identificados para facilitar seu trabalho com vários componentes.

10 Comentários

  1. Maurício Jabur,

    Boa tarde!

    Você poderia me passar seus contatos (e-mail, celular e/ou whatsapp).

    Estou precisando falar com você.

    Aguardo Retorno.

    Fernando Loureiro
    IN TECH – Belém / Pará
    (91) 2121-5031
    (91) 98365-4549 TIM / Whatsapp

  2. Meu DHT22 tá marcando errado a umidade após 1 semana de uso. Está sempre abaixo de 10%. Liguei com fonte 5V na protoboard sem capacitores, pode ser isso?

    • Tales, boa noite!

      Se a tensão da fonte de alimentação não tiver capacitores de filtro qualquer circuito pode realmente apresentar um funcionamento estranho.

      Não entendi direito de onde pegou esses 5V, seria uma fonte externa?

      É possivel que o seu sensor tenha apresentado um defeito e não seja a fonte

  3. Olá. Será que consigo controlar a humorado e temperatura de um ambiente pequeno ( um barril por exemplo) adicionando ventoinhas que ligam e desligam conforme a programação ? como eu gostaria de usar o Arduino stand alone (sem estar ligado a um pc), queria determinar essa faixa escolhida através de um menu no lcd e botões. Por exemplo:
    Determinar a temperatura qur o ambiente deve permanecer ( de 30 a 60 graus por exemplo)
    Determinar a humidade (30% a 60% por exemplo).
    Esses valores escolhidos através de botões ou potenciômetros com a informação exibida no display. Complica muito ser feito ? obrigado.

    • Olá Luiz!

      Não sei se as ventoinhas somente vão alterar temperatura e umidade. Entretanto, em termos conceituais, é muito fácil ligar e desligar equipamentos usando módulos relê ( https://pandoralab.com.br/loja/modulo-rele-2-canais/ ).
      Temos um shield que já vem com botões e display, pode ser interessante: https://pandoralab.com.br/loja/display-lcd-16×2-com-mini-teclado/
      Eu também gosto de usar o encoder rotativo no lugar de botoões, aí fica uma interface parecida com máquinas de lavar modernas. Tenho certeza que este post pode ser um início: https://pandoralab.com.br/tutorial/encoder-rotativo-sistema-de-menus-multi-nivel/

      Além das peças, o Hardware, você precisa do Software.

      Um dos níveis do software é a exibição dos dados no display, o próximo á a coleta de dados do sensor. Estes dois podem ser adaptados deste tutorial que comentamos acima. Para a leitura dos botões ou sensores, te indiquei alguns links acima.

      Fica faltando somente a parte do software que compara as medidas com os valores escolhidos no display e que lig ou desliga os equipamentos . Um rascunho de como fazer isso seria assim:


      if (temp_medida > temp_max) {
      digitalWrite(RELE_REFRIGERA, LOW); // nosso modulo rele liga em LOW
      }
      else if (temp_medida < temp_max) { digitalWrite(RELE_REFRIGERA, HIGH); // nosso modulo rele desliga em HIGH }

      Note que isso é um reascunho com nomes de argumentos inventados. Apenas um norte para o começo de seu desenvolvimento.

      Saudações Makers!

  4. A biblioteca usada para o DHT22 é a mesma que para o DHT11?
    Eu tenho um programa onde eu uso o DHT11 e queria dar um upgrade para o DHT22.

Deixe uma resposta

Seu endereço de e-mail não será publicado. Campos obrigatórios estão marcados *

limpar formulárioPostar Comentário