Codice Arduino e video per un sensore digitale di temperatura e umidità Aosong AM2320 con LCD1602 e modulo I2C
In questo tutorial esploreremo come utilizzare il sensore digitale di temperatura e umidità Aosong AM2320 insieme a un display LCD1602 che impiega un modulo I2C. L'obiettivo è visualizzare le letture della temperatura sia in Fahrenheit che in Celsius, oltre all'umidità relativa. Questa configurazione è ideale per monitorare le condizioni ambientali in vari progetti, rendendola un'aggiunta versatile al tuo kit Arduino.

Utilizzeremo il sensore AM2320 per raccogliere i dati di temperatura e umidità, che verranno poi visualizzati sul LCD1602. Il modulo I2C semplifica il cablaggio, richiedendo solo quattro collegamenti: VCC, GND, SDA e SCL. Per comprendere chiaramente il collegamento e la programmazione, consiglio di guardare il video associato (nel video a 00:00).
L'hardware spiegato
I componenti chiave di questo progetto includono il sensore AM2320, il display LCD1602 e il modulo I2C. L'AM2320 è un sensore digitale che fornisce letture accurate di temperatura e umidità tramite un'interfaccia I2C. Funziona a una tensione da 3,3V a 5,5V e ha un intervallo di misurazione della temperatura da -40°C a +80°C e dell'umidità dal 0% al 100%.
Il display LCD1602 permette la visualizzazione delle letture del sensore. È un display a 16x2 caratteri che comunica tramite il protocollo I2C, il quale riduce il numero di collegamenti necessari a soli quattro. Il modulo I2C converte i dati paralleli dal display LCD in un formato seriale, rendendo più semplice il collegamento all'Arduino.
Dettagli della scheda tecnica
| Produttore | Aosong |
|---|---|
| Numero di parte | AM2320 |
| Tensione logica/I/O | 3.3 V - 5.5 V |
| Tensione di alimentazione | 3.3 V - 5.5 V |
| Corrente di uscita | ≤ 1.5 mA |
| Intervallo di misura (Temperatura) | da -40 °C a +80 °C |
| Campo di misura (Umidità) | da 0% a 100% |
| Tempo di risposta | ≤ 2 s |
| Pacchetto | DIP-4 |
| Note / varianti | Si raccomandano resistori pull-up per le connessioni I2C. |
- Garantire un'alimentazione adeguata all'interno dell'intervallo di tensione specificato.
- Usare resistori di pull-up (4,7 kΩ consigliati) per le linee SDA e SCL.
- Controllare che l'indirizzo I2C sia corretto (il valore predefinito è 0x27 per la maggior parte degli LCD).
- Gestire eventuali errori controllando il codice di errore del sensore.
- Cancella il display LCD prima di visualizzare nuove letture per evitare sovrapposizioni.
Istruzioni di cablaggio

Per cablare il sensore AM2320, collegare il pin sinistro (VCC) a 5V sull'Arduino. Il secondo pin (SDA) va al pin A4 su un Arduino Uno (o al pin 20 su un Mega). Il terzo pin (GND) deve essere collegato alla massa, e il quarto pin (SCL) si collega al pin A5 su un Arduino Uno (o al pin 21 su un Mega). Inoltre, collegare una resistenza da 4.7kΩ tra il pin SDA e 5V, e un'altra resistenza da 4.7kΩ tra il pin SCL e 5V per garantire livelli di segnale corretti.
Per il display LCD1602 con I2C, collegare il pin VCC a 5V e il pin GND a massa. Collegare il pin SDA del LCD allo stesso pin SDA (A4) utilizzato dal sensore. Analogamente, collegare il pin SCL del LCD allo stesso pin SCL (A5) utilizzato dal sensore. Questa cablatura condivisa permette ad entrambi i dispositivi di comunicare sullo stesso bus I2C.
Esempi di codice e guida passo passo
Il seguente codice inizializza il sensore AM2320 e il display LCD1602. Inizia includendo le librerie necessarie e creando un'istanza del sensore.
#include
AM2320 sensor;
#include
LiquidCrystal_I2C lcd(0x27, 16, 2); Qui, ilsensorUn oggetto viene creato dalla libreria AM2320, e illcdL'oggetto viene inizializzato con l'indirizzo I2C del display.
Nelsetup()All'interno della funzione inizializziamo sia il sensore che l'LCD. Questo include l'accensione della retroilluminazione e la visualizzazione di un messaggio iniziale.
void setup() {
sensor.begin();
lcd.begin();
lcd.backlight();
lcd.print("Robojax AM2320 ");
lcd.setCursor (0,1);
lcd.print("LCD1602 I2C Demo");
delay(3000);
}Questo codice configura il display per mostrare un messaggio di benvenuto per 3 secondi, permettendo all'utente di vedere che il sistema si sta inizializzando.
Illoop()La funzione controlla continuamente se sono disponibili misurazioni del sensore e aggiorna il display di conseguenza. Se è disponibile una misurazione, cancella lo schermo e visualizza la temperatura sia in Fahrenheit che in Celsius, insieme all'umidità 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);
}Questo estratto dimostra come il programma recupera e visualizza i dati del sensore, gestendo eventuali errori controllando ilerrorCode.
Dimostrazione / Cosa aspettarsi
Al termine della configurazione, il display LCD visualizzerà la temperatura sia in Fahrenheit sia in Celsius, oltre alla percentuale di umidità relativa. Se il sensore è offline o si verifica un errore CRC, il display mostrerà i messaggi di errore corrispondenti. È importante assicurarsi che tutte le connessioni siano sicure per evitare problemi (nel video a 02:45).
Marcatori temporali del video
- 00:00- Introduzione al progetto
- 01:30- Istruzioni di cablaggio
- 03:15- Spiegazione del codice
- 04:45- Dimostrazione della funzionalità
Cose di cui potresti avere bisogno
-
Amazon
-
AliExpressAcquista il sensore AM2302, DHT11 o DHT22 da AliExpress.s.click.aliexpress.com
Risorse e riferimenti
-
EsternoAM2320 Libreria (da GitHub)github.com
-
EsternoPagina di documentazione di Arduino Wirearduino.cc
File📁
Scheda tecnica (pdf)
-
Manuale utente del sensore di temperatura e umidità I2C Adafruit AM2320
adafruit-am2320-temperature-humidity-i2c-sensor.pdf1.27 MB
File Fritzing
-
Sensore di umidità e temperatura AM2320
AM2320 Humidity and Temperature Sensor.fzpz0.01 MB