Código Arduino e vídeo para um sensor digital de temperatura e umidade Aosong AM2320 com LCD1602 e módulo I2C

Código Arduino e vídeo para um sensor digital de temperatura e umidade Aosong AM2320 com LCD1602 e módulo I2C

Neste tutorial, exploraremos como usar o sensor digital de temperatura e umidade Aosong AM2320 em conjunto com um display LCD1602 que utiliza um módulo I2C. O objetivo é exibir leituras de temperatura tanto em Fahrenheit quanto em Celsius, bem como a umidade relativa. Esta configuração é ideal para monitorar condições ambientais em diversos projetos, tornando-a uma adição versátil ao seu kit de ferramentas Arduino.

Usaremos o sensor AM2320 para coletar dados de temperatura e umidade, que serão então exibidos no LCD1602. O módulo I2C simplifica o processo de fiação, exigindo apenas quatro conexões: VCC, GND, SDA e SCL. Para uma compreensão clara da fiação e da programação, recomendo assistir ao vídeo associado (no vídeo às 00:00).

Hardware explicado

Os componentes-chave deste projeto incluem o sensor AM2320, o display LCD1602 e o módulo I2C. O AM2320 é um sensor digital que fornece leituras precisas de temperatura e umidade através de uma interface I2C. Ele funciona com uma tensão de 3.3V a 5.5V e tem uma faixa de medição de -40°C a +80°C para temperatura e de 0% a 100% para umidade.

O display LCD1602 permite a visualização das leituras dos sensores. É um display de 16x2 caracteres que se comunica via protocolo I2C, o que reduz o número de conexões necessárias para apenas quatro. O módulo I2C converte os dados paralelos do LCD para um formato serial, facilitando a conexão ao Arduino.

Detalhes da ficha técnica

FabricanteAosong
Número da peçaAM2320
Tensão lógica/E/S3.3 V - 5.5 V
Tensão de alimentação3.3 V - 5.5 V
Corrente de saída≤ 1.5 mA
Faixa de medição (Temperatura)-40°C a +80°C
Faixa de medição (Umidade)0% a 100%
Tempo de resposta≤ 2s
PacoteDIP-4
Notas / variantesResistores pull-up são recomendados para conexões I2C.

  • Garanta alimentação adequada dentro da faixa de tensão especificada.
  • Use resistores de pull-up (4,7 kΩ recomendados) nas linhas SDA e SCL.
  • Verifique se o endereço I2C está correto (o padrão é 0x27 para a maioria dos LCDs).
  • Trate possíveis erros verificando o código de erro do sensor.
  • Limpe o LCD antes de exibir novas leituras para evitar sobreposição.

Instruções de fiação

Arduino wiring for AM2320 sensor with LCD
Arduino wiring for AM2320 sensor with LCD

Para ligar o sensor AM2320, conecte o pino esquerdo (VCC) a 5V no Arduino. O segundo pino (SDA) vai para o pino A4 em um Arduino Uno (ou pino 20 em um Mega). O terceiro pino (GND) deve ser conectado à terra, e o quarto pino (SCL) conecta-se ao pino A5 em um Arduino Uno (ou pino 21 em um Mega). Além disso, conecte um resistor de 4.7kΩ entre o pino SDA e 5V, e outro resistor de 4.7kΩ entre o pino SCL e 5V para garantir níveis de sinal adequados.

Para o display LCD1602 com I2C, conecte o pino VCC a 5V e o pino GND ao terra. Conecte o pino SDA do LCD ao mesmo pino SDA (A4) usado pelo sensor. Da mesma forma, conecte o pino SCL do LCD ao mesmo pino SCL (A5) usado pelo sensor. Essa fiação compartilhada permite que ambos os dispositivos se comuniquem pelo mesmo barramento I2C.

Exemplos de código e guia passo a passo

O código a seguir inicializa o sensor AM2320 e o display LCD1602. Ele começa incluindo as bibliotecas necessárias e criando uma instância do sensor.

#include 
AM2320 sensor;
#include 
LiquidCrystal_I2C lcd(0x27, 16, 2);

Aqui, osensoro objeto é criado a partir da biblioteca AM2320, e olcdO objeto é inicializado com o endereço I2C do display.

Nosetup()Na função, inicializamos tanto o sensor quanto o LCD. Isso inclui ligar a retroiluminação e exibir uma mensagem inicial.

void setup() {
  sensor.begin();
  lcd.begin();
  lcd.backlight();
  lcd.print("Robojax AM2320 ");
  lcd.setCursor (0,1);
  lcd.print("LCD1602 I2C Demo");
  delay(3000);
}

Este código configura o visor para mostrar uma mensagem de boas-vindas por 3 segundos, permitindo tempo para que o usuário veja que o sistema está inicializando.

Oloop()A função verifica continuamente as medições do sensor e atualiza a tela de acordo. Se uma medição estiver disponível, ela limpa a tela e exibe a temperatura em Fahrenheit e Celsius, juntamente com a umidade relativa.

void loop() {
  if (sensor.measure()) {
    lcd.clear();
    lcd.print("T:");
    lcd.print(temp('F'));
    lcd.print("F/");
    lcd.print(temp('C'));
    lcd.print("C");  
    lcd.setCursor (0,1);
    lcd.print("R.H. :");
    lcd.print(sensor.getHumidity());
    lcd.print("%"); 
  }
  else {
    int errorCode = sensor.getErrorCode();
    switch (errorCode) {
      case 1: lcd.print("ERR: Sensor offline"); break;
      case 2: lcd.print("ERR: CRC failed."); break;
    }    
  }
  delay(500);
}

Este trecho demonstra como o programa recupera e exibe os dados do sensor enquanto trata quaisquer erros potenciais verificando oerrorCode.

Demonstração / O que Esperar

Quando a configuração estiver concluída, espere que o LCD exiba a temperatura em Fahrenheit e Celsius, bem como o percentual de umidade relativa. Se o sensor estiver offline ou houver um erro de CRC, o display mostrará mensagens de erro correspondentes. É importante garantir que todas as conexões estejam seguras para evitar quaisquer problemas (no vídeo em 02:45).

Marcas de tempo do vídeo

  • 00:00- Introdução ao projeto
  • 01:30- Instruções de fiação
  • 03:15- Explicação do código
  • 04:45- Demonstração de funcionalidade

Imagens

AM2320-sensor-1
AM2320-sensor-1
AM2320-sensor-2
AM2320-sensor-2
AM2320-sensor-3
AM2320-sensor-3
AM2320-sensor-4
AM2320-sensor-4
Arduino wiring for AM2320 sensor with LCD
Arduino wiring for AM2320 sensor with LCD
85-This is the Arduino code for an Aosong AM2320 temperature and humidity sensor with an LCD1602 and I2C module.
Idioma: C++
86-This is the Arduino code for the Aosong AM2320 temperature and humidity sensor with an LCD1602 and I2C module.
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Arquivos📁

Folha de dados (pdf)

Arquivo Fritzing