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
| Fabricante | Aosong |
|---|---|
| Número da peça | AM2320 |
| Tensão lógica/E/S | 3.3 V - 5.5 V |
| Tensão de alimentação | 3.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 |
| Pacote | DIP-4 |
| Notas / variantes | Resistores 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

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
Coisas que você pode precisar
-
Amazonas
-
AliExpressPurchase AM2302 or DHT11 or DHT22 sensor from AliExpresss.click.aliexpress.com
Recursos e referências
-
ExternoBiblioteca AM2320 (do GitHub)github.com
-
ExternoPágina de documentação do Arduino Wirearduino.cc
Arquivos📁
Folha de dados (pdf)
-
Adafruit-am2320-temperature-humidity-i2c-sensor user's manual
application/pdf1.27 MB
Arquivo Fritzing
-
AM2320 Humidity and Temperature Sensor
application/zip0.01 MB