Aula 36: Usando o Sensor de Temperatura HTU21D com um LCD Arduino Curso Passo a Passo

Aula 36: Usando o Sensor de Temperatura HTU21D com um LCD Arduino Curso Passo a Passo

O sensor de temperatura e umidade HTU21D é uma escolha popular para muitos projetos com Arduino devido à sua facilidade de uso e precisão. Nesta lição, construiremos um projeto simples que lê dados de temperatura e umidade do sensor e os exibe em uma tela LCD. Ao final deste tutorial, você terá uma configuração funcional que exibe continuamente a temperatura em Celsius, Fahrenheit e Kelvin, bem como a porcentagem de umidade relativa. Para mais esclarecimentos, você pode consultar o vídeo (no vídeo em mm:ss).

Hardware Explicado

O componente principal deste projeto é o sensor de temperatura e umidade HTU21D, que se comunica via I2C. Este sensor opera dentro de uma faixa de tensão de 1,5 a 3,6 volts, tornando-o adequado para sistemas de 3,3V e 5V. Ele consome muito pouca energia, tipicamente apenas 0,02 microamperes quando em repouso e 450 microamperes durante a medição. Além do HTU21D, também usaremos um display LCD, especificamente o LCD1602 com I2C. Este display permite a saída fácil de dados textuais e requer apenas dois pinos para comunicação: SDA (linha de dados) e SCL (linha de clock). A combinação destes componentes nos permitirá criar um display informativo para monitorar os níveis de temperatura e umidade.

Detalhes da Ficha Técnica

FabricanteTE Connectivity
Número da peçaHTU21D-F
Tensão de Lógica/IO1,5 - 3,6 V
Tensão de alimentação3,3 V (típ.)
Corrente de saída (típ.)0,02 µA (em repouso), 450 µA (medição)
Faixa de temperatura-40 a +125 °C
Faixa de umidade0 a 100 %UR
Resolução (Temperatura)0,01 °C
Resolução (Umidade)0,04 %UR
PacoteDFN-6

  • Use um resistor de pull-up para as linhas SDA e SCL, se não estiver integrado.
  • Garanta a tensão de alimentação correta para evitar danos ao sensor.
  • Mantenha a fiação adequada para evitar erros de comunicação.
  • Verifique o endereço I2C se o sensor não responder.
  • Use um atraso entre as leituras para evitar sobrecarga do sensor.
  • Certifique-se de que o LCD seja compatível com a comunicação I2C.

Instruções de Fiação

Para conectar o sensor HTU21D e o display LCD, comece pelas conexões de energia. Conecte o pino da esquerda do HTU21D à fonte de alimentação de 3,3V e o segundo pino (geralmente vermelho) ao terra. Em seguida, conecte o pino SDA do HTU21D ao pino analógico A4 do Arduino e o pino SCL ao pino analógico A5. Para o display LCD1602, conecte o pino VCC à mesma fonte de 3,3V e conecte o pino GND ao terra. O pino SDA no LCD também deve ser conectado a A4 e o pino SCL deve ser conectado a A5, permitindo que ambos os componentes compartilhem o barramento I2C. Certifique-se de que todas as conexões estejam seguras para facilitar a comunicação adequada entre o Arduino, o sensor e o display.

Exemplos de Código e Passo a Passo

O seguinte código inicializa o sensor HTU21D e o display LCD. Na função de configuração, o LCD é preparado para uso e o sensor é verificado quanto à conectividade:

void setup() {
  lcd.begin();
  lcd.backlight();
  if (!htu.begin()) {
      lcd.print("Robojax HTUD1DF");
      lcd.setCursor(0,1);
      lcd.print("sensor missing"); 
      while (1);
  } else {
      lcd.print("Robojax HTUD1DF");
      lcd.setCursor(0,1);
      lcd.print("Demo"); 
  }
  delay(2000);   
}

Este trecho verifica se o sensor está conectado corretamente. Se não, exibe uma mensagem de erro no LCD e interrompe o programa. Se o sensor estiver funcionando, mostra uma mensagem de demonstração por dois segundos. A função de loop é onde a leitura e exibição principais ocorrem. Aqui, chamamos a função `lcdDisplay` para mostrar a temperatura em diferentes unidades:

void loop() {
   lcd.clear(); // clear previous values from screen
   lcdDisplay(0, 0, "Celsius: ", 10, 0, getHTU('C'), 'd');  
   lcdDisplay(0, 1, "Fahrenheit: ", 10, 1, getHTU('F'), 'd');     
   delay(5000);
}

Neste loop, o LCD é limpo e as leituras de temperatura em Celsius e Fahrenheit são exibidas. A função `getHTU` é chamada com o caractere 'C' para Celsius e 'F' para Fahrenheit, respectivamente. Finalmente, a função `getHTU` é definida para ler a temperatura ou umidade com base no caractere de entrada:

float getHTU(char type) {
   float temp = htu.readTemperature();
   float rel_hum = htu.readHumidity();
   if(type =='F') {
       return temp * 9/5 + 32; // convert to Fahrenheit 
   } else if(type =='K') {
       return temp + 273.15; // convert to Kelvin
   } else if(type =='H') {
       return rel_hum; // return relative humidity
   } else {
       return temp; // return Celsius
   }
}

Esta função lê a temperatura e a umidade do sensor e converte a temperatura para a unidade solicitada. Certifique-se de verificar o código completo carregado abaixo do artigo para detalhes adicionais.

Demonstração / O que Esperar

Ao concluir a fiação e carregar o código, você deve ver os valores de temperatura e umidade exibidos no LCD. As leituras serão atualizadas a cada poucos segundos, refletindo as condições atuais. Se você aplicar calor ao sensor, deverá perceber a temperatura subindo de acordo, enquanto a umidade deve diminuir ligeiramente. Fique atento ao limite máximo de temperatura do sensor; exceder isso pode resultar em leituras imprecisas ou falha do sensor (no vídeo em mm:ss).

Marcos do Vídeo

  • 00:00- Introdução ao projeto
  • 01:15Instruções de fiação
  • 03:30- Revisão de código
  • 10:00- Demonstração da configuração
511-Lesson 36: Using the HTU21D Temperature Sensor with an LCD and Arduino: A Step-by-Step Course
Idioma: C++
Copiado!

Coisas que você pode precisar

Arquivos📁

Folha de dados (pdf)