In questo tutorial imparerai come utilizzare il sensore digitale di temperatura e umidità AM2320 con Arduino. Ho incluso schemi di collegamento e due esempi di codice per iniziare!
Per questo tutorial useremo la libreria Adafruit AM2320. Questa libreria rende la comunicazione con il sensore tramite I2C molto semplice. La useremo nel primo esempio per leggere i dati di temperatura e umidità dal sensore AM2320 e mostrarli nel Serial Monitor.
Nel secondo esempio estendiamo il progetto aggiungendo un display LCD 16×2 caratteri. Anche questo sarà collegato tramite il bus I2C e ci permetterà di visualizzare le letture sul display. Il progetto completo sarà così:

Se vuoi saperne di più su altri sensori di temperatura, dai un’occhiata ai nostri altri tutorial qui sotto:
- The complete guide for DS18B20 digital temperature sensors with Arduino
- How to use DHT11 and DHT22 sensors with Arduino
- TMP36 analog temperature sensor with Arduino tutorial
- LM35 analog temperature sensor with Arduino tutorial
Iniziamo!
Componenti necessari
Qui sotto trovi i componenti necessari per questo progetto. Oltre a un Arduino, ti serviranno una breadboard, alcuni fili e ovviamente il sensore AM2320. Per questo tutorial userò il classico Arduino Uno (REV3), ma va bene anche qualsiasi altro Arduino (o ESP32/ESP8266).
Ho incluso anche un display LCD 16×2 nella lista dei componenti necessari, che ti servirà per il secondo esempio di applicazione di questo tutorial. Se vuoi visualizzare solo temperatura e umidità sul Serial Monitor, non ti servirà.

Arduino Uno

Set di fili Dupont

Breadboard

Cavo USB per Arduino UNO

Sensore di temperatura AM2320

LCD 16×2 caratteri I2C

Arduino IDE
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Informazioni sull’AM2320
L’AM2320 è un sensore digitale di temperatura e umidità a basso costo prodotto da ASAIR. Questo sensore è simile ai popolari DHT11/DHT22 ma dispone di un’interfaccia I2C invece del protocollo di comunicazione a bus singolo usato da molti altri sensori DHTxx. Puoi trovare il nostro tutorial su DHT11 e DHT22 qui:
Il sensore è composto da un elemento capacitivo per la misurazione dell’umidità e da un elemento integrato ad alta precisione per la temperatura, collegati a un microprocessore. L’intervallo di misura della temperatura va da -40 a 80 gradi Celsius, con una precisione dichiarata di ± 0,5 °C.
Umidità relativa
Nel datasheet del sensore vedrai che misura l’umidità relativa (RH) dell’aria e non l’umidità assoluta. Ma qual è la differenza? L’umidità assoluta è la quantità di vapore acqueo nell’aria (espressa in g/m³), indipendentemente dalla temperatura. L’umidità relativa è invece influenzata dalla temperatura.
L’umidità relativa è il rapporto tra la quantità effettiva di vapore acqueo presente nell’aria e la quantità massima di vapore che l’aria può contenere a una data temperatura.
L’aria calda può contenere più acqua di quella fredda. Questo significa che per la stessa quantità di vapore acqueo, l’umidità relativa nell’aria fredda sarà più alta che in aria calda. Al 100% di umidità relativa, l’aria è satura ed è al punto di rugiada.
Pinout dell’AM2320
Il pinout del sensore AM2320 è il seguente:

| Pin | Nome | Descrizione |
|---|---|---|
| 1 | VDD | Pin di alimentazione positiva (3.1 – 5.5 V) |
| 2 | SDA | Dati seriali, porta bidirezionale |
| 3 | GND | Massa |
| 4 | SCL | Ingresso clock seriale (bus singolo a massa) |
Nota che l’indirizzo I2C predefinito del sensore è 0x5C e non può essere modificato.
La tabella seguente riporta le caratteristiche principali dell’AM2320:
Specifiche AM2320
| Tensione di alimentazione | 3.1 – 5.5 V |
| Consumo energetico | Sleep: 10 μA Misura: 950 μA |
| Intervallo umidità | 0 – 99.9 % RH ± 3 % RH |
| Intervallo temperatura | -40 – 80 °C ± 0.5 °C |
| Interfaccia | I2C 1-Wire |
| Periodo di campionamento | 2.0 s |
| Dimensioni corpo | 15 x 12.1 x 4.5 mm |
| Costo | Check price |
Per maggiori informazioni, puoi consultare il datasheet qui:
Collegare l’AM2320 ad Arduino
Collegare l’AM2320 ad Arduino è molto semplice come mostrato nel diagramma qui sotto.

Collega semplicemente il 5V (o 3.3V) di Arduino al Pin 1 (VDD) dell’AM2320 e allo stesso modo la massa (GND) al GND. A4 va al Pin 2 (SDA) e A5 è collegato al Pin 4 (SCL) dell’AM2320. I collegamenti sono anche riportati nella tabella qui sotto
Collegamenti AM2320
| AM2320 | Filo | Arduino |
|---|---|---|
| Pin 1 (VDD) | rosso | 5 V |
| Pin 2 (SDA) | giallo | A4 |
| Pin 3 (GND) | nero | GND |
| Pin 4 (SCL) | verde | A5 |
Se non usi un Arduino Uno, i pin SDA e SCL potrebbero trovarsi in posizioni diverse. Controlla la tabella qui sotto per maggiori dettagli.
| Scheda | SDA | SCL |
|---|---|---|
| Arduino Uno | A4 | A5 |
| Arduino Nano | A4 | A5 |
| Arduino Micro | 2 | 3 |
| Arduino Mega 2560 | 20 | 21 |
| Arduino Leonardo | 2 | 3 |
| Arduino Due | 20 | 21 |
Un Arduino Uno con layout R3 (pinout 1.0) ha anche i pin SDA (linea dati) e SCL (linea clock) vicino al pin AREF. Il diagramma seguente mostra un circuito alternativo che collega l’AM2320 a questi pin SDA e SCL:

Noterai che ci sono anche due resistori di pullup da 4.7KΩ sulle linee SDA e SCL. In molti casi non sono necessari, poiché l’Arduino UNO ha resistori di pullup interni spesso sufficienti. Tuttavia, essi hanno un valore abbastanza alto e se riscontri problemi di comunicazione con un dispositivo I2C dovresti aggiungerli. Soprattutto se usi cavi più lunghi.
Installazione delle librerie Arduino necessarie
Per questo tutorial useremo la libreria Adafruit AM2320. Per installarla, vai su Tools > Manage Libraries nell’Arduino IDE. Si aprirà il Library Manager.

Nel LIBRARY MANAGER cerca ‘Adafruit AM2320’ e clicca INSTALL.

A seconda delle altre librerie già installate, potresti vedere o meno questo messaggio. Ti informa che devi installare altre librerie necessarie per la libreria AM2320. Va benissimo così. Clicca semplicemente su INSTALL ALL.

Ora hai tutte le librerie necessarie per eseguire il codice fornito nella sezione successiva.
Codice per leggere temperatura e umidità con AM2320
Il codice di esempio seguente mostra come leggere temperatura e umidità dal sensore AM2320 e visualizzare i dati nel Serial Monitor e nel Serial Plotter. Dai un’occhiata veloce e poi discuteremo i dettagli del codice.
// Read Temperature and Humidity with AM2320
#include "Adafruit_Sensor.h"
#include "Adafruit_AM2320.h"
Adafruit_AM2320 sensor = Adafruit_AM2320();
void setup() {
Serial.begin(9600);
sensor.begin();
}
void loop() {
float tempC = sensor.readTemperature();
float tempF = tempC * 1.8 + 32;
float humidity = sensor.readHumidity();
Serial.print("Temperatur:");
Serial.println(tempF);
Serial.print("Humidity:");
Serial.println(humidity);
delay(2000);
}
Inclusione delle librerie
Per prima cosa includiamo le librerie Adafruit_AM2320 e Adafruit_Sensor.
#include "Adafruit_Sensor.h" #include "Adafruit_AM2320.h"
Creazione dell’istanza del sensore
Successivamente creiamo una nuova istanza della classe Adafruit_AM2320. In questo caso l’ho chiamata “sensor” ma puoi scegliere qualsiasi altro nome, purché modifichi il codice di conseguenza.
Adafruit_AM2320 sensor = Adafruit_AM2320();
Funzione setup
Nella funzione setup() avviamo la comunicazione seriale a 9600 baud. Assicurati che anche il Serial Monitor sia impostato a 9600. Inizializziamo inoltre il sensore AM2320 con sensor.begin().
void setup() {
Serial.begin(9600);
sensor.begin();
}
Funzione loop
Nella sezione loop del codice leggiamo i dati di temperatura e umidità dal sensore AM2320 con le funzioni readTemperature() e readHumidity().
Nota che readTemperature() restituisce la temperatura in gradi Celsius. Possiamo facilmente convertirla in Fahrenheit usando la formula tempF = tempC * 1.8 + 32.
// Read the temperature and the humidity: float tempC = sensor.readTemperature(); float tempF = tempC * 1.8 + 32; float humidity = sensor.readHumidity();
Infine stampiamo i risultati nel Serial Monitor e aggiungiamo un ritardo tra le letture. L’intervallo minimo tra le letture è di 2 secondi (vedi Datasheet), quindi usiamo un delay di 2000 ms (=2 sec) tra le letture.
Serial.print("Temperatur:");
Serial.println(tempF);
Serial.print("Humidity:");
Serial.println(humidity);
delay(2000);
E questo è tutto! Abbiamo un lettore di temperatura e umidità. Proviamolo.
Output nel Serial Monitor
Se esegui questo codice e apri il Serial Monitor dovresti vedere letture di temperatura e umidità simili a quelle qui sotto. Assicurati che la velocità di trasmissione sia impostata a 9600 baud.

Output nel Serial Plotter
Se ora apri il Serial Plotter e soffii sul sensore AM2320 dovresti vedere un picco nell’umidità e un leggero aumento della temperatura, simile al grafico qui sotto:

Aggiungere un LCD per visualizzare i dati
In questa parte ti mostro come aggiungere un LCD 16×2 caratteri per visualizzare i dati. Fortunatamente è molto semplice.
Collegamento dell’LCD
Il diagramma seguente mostra il collegamento completo. L’AM2320 è collegato esattamente come prima. Aggiungiamo l’LCD collegando la sua alimentazione (VCC, GND) alla linea di alimentazione e i suoi pin SDA e SCL alle stesse linee SDA e SCL a cui è collegato l’AM2320.

Quindi, sia l’LCD che l’AM2320 sono collegati tramite I2C ad Arduino. I2C è un bus seriale che può gestire fino a 128 dispositivi in comunicazione.

I dispositivi sul bus sono distinti dal loro indirizzo I2C. L’indirizzo I2C dell’AM2320 è fisso a 0x5C. L’indirizzo I2C del tuo LCD può variare, però. Gli indirizzi tipici sono 0x27 o 0x3F, spesso stampati sul retro. Se non sei sicuro puoi eseguire uno scanner I2C per scoprirlo. Dai un’occhiata al nostro tutorial Character I2C LCD with Arduino Tutorial.
Visualizzare le letture AM2320 su LCD
Il codice per mostrare i dati sul LCD è piuttosto semplice. Useremo la libreria LiquidCrystal di Frank de Brabander per controllare l’LCD.
Se non l’hai ancora installata, devi farlo nello stesso modo in cui hai installato la libreria AM2302. Se ti serve aiuto, dai un’occhiata al nostro tutorial su How to use the MQ-7 Gas Sensor with an LCD display and Arduino, dove spieghiamo tutto passo passo.
Dai un’occhiata veloce al codice prima di spiegarne i dettagli
// Display temperature and humidity readings from AM2320 sensor
// on 16x2 LCD display at I2C address 0x3F
#include "LiquidCrystal_I2C.h"
#include "Adafruit_Sensor.h"
#include "Adafruit_AM2320.h"
Adafruit_AM2320 sensor = Adafruit_AM2320();
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x3F, 20, 2);
void setup() {
Serial.begin(9600);
sensor.begin();
lcd.init();
lcd.backlight();
}
void loop() {
float tempC = sensor.readTemperature();
float tempF = tempC * 1.8 + 32;
float humidity = sensor.readHumidity();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperatur");
lcd.setCursor(11, 0);
lcd.print(tempF);
lcd.setCursor(0, 1);
lcd.print("Humidity");
lcd.setCursor(11, 1);
lcd.print(humidity);
delay(2000);
}
Iniziamo includendo le librerie necessarie.
Librerie
Per usare il sensore AM2320 e il display LCD, dobbiamo includere le librerie necessarie. Includiamo la libreria “LiquidCrystal_I2C.h” per l’LCD, la libreria “Adafruit_Sensor.h” per il sensore e la libreria “Adafruit_AM2320.h” per il sensore AM2320.
#include "LiquidCrystal_I2C.h" #include "Adafruit_Sensor.h" #include "Adafruit_AM2320.h"
Oggetti
Creiamo prima due oggetti: uno per il sensore AM2320 e uno per il display LCD. Inizializziamo l’oggetto sensore come “sensor” e l’oggetto LCD come “lcd”. Per creare l’oggetto lcd dobbiamo passare l’indirizzo I2C del display LCD (0x3F) e le dimensioni del display (20 colonne e 2 righe) al costruttore “LiquidCrystal_I2C”.
Adafruit_AM2320 sensor = Adafruit_AM2320(); LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x3F, 20, 2);
Funzione setup
Nella funzione “setup()” inizializziamo la comunicazione seriale a 9600 baud. Chiamiamo anche la funzione “begin()” sull’oggetto sensore per inizializzare l’AM2320. Poi chiamiamo la funzione “init()” sull’oggetto lcd per inizializzare il display LCD. Infine accendiamo la retroilluminazione del display LCD usando la funzione “backlight()”.
void setup() {
Serial.begin(9600);
sensor.begin();
lcd.init();
lcd.backlight();
}
Funzione loop
Nella funzione “loop()” leggiamo i valori di temperatura e umidità dal sensore usando rispettivamente le funzioni “readTemperature()” e “readHumidity()”.
Come prima, memorizziamo la temperatura in Celsius nella variabile “tempC” e la convertiamo in Fahrenheit moltiplicandola per 1.8 e aggiungendo 32, memorizzando il risultato nella variabile “tempF”. Analogamente, memorizziamo il valore di umidità nella variabile “humidity”.
Puliamo il display LCD usando la funzione “clear()”. Poi impostiamo la posizione del cursore alla prima colonna della prima riga con “setCursor()” e stampiamo “Temperature”. Impostiamo il cursore alla dodicesima colonna della prima riga e stampiamo la temperatura in Fahrenheit.
Successivamente impostiamo il cursore alla prima colonna della seconda riga e stampiamo “Humidity”. Impostiamo il cursore alla dodicesima colonna della seconda riga e stampiamo il valore di umidità.
Infine aggiungiamo un ritardo di 2000 millisecondi (2 secondi) usando la funzione “delay()” per lasciare il tempo di visualizzare le letture prima di ripetere il loop.
void loop() {
float tempC = sensor.readTemperature();
float tempF = tempC * 1.8 + 32;
float humidity = sensor.readHumidity();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature");
lcd.setCursor(11, 0);
lcd.print(tempF);
lcd.setCursor(0, 1);
lcd.print("Humidity");
lcd.setCursor(11, 1);
lcd.print(humidity);
delay(2000);
}
E questo è tutto. Ora hai un sistema completamente funzionante per visualizzare i dati di temperatura e umidità su un LCD.
Domande frequenti
Ecco alcune domande frequenti sull’uso del sensore AM2320 per leggere temperatura e umidità e visualizzare i dati su un LCD 16×2 con Arduino.
D: Cos’è il sensore AM2320?
R: L’AM2320 è un sensore digitale di temperatura e umidità che usa il bus seriale I2C per comunicare con microcontrollori come Arduino. Fornisce letture accurate di temperatura e umidità, ideale per applicazioni come monitoraggio meteo, domotica e controllo serre.
D: Cos’è I2C e come funziona?
R: I2C (Inter-Integrated Circuit) è un protocollo di comunicazione seriale che permette a più dispositivi di comunicare tra loro usando solo due fili – SDA (linea dati) e SCL (linea clock). Consente una comunicazione efficiente tra microcontrollori e sensori, riducendo il numero di pin necessari per il collegamento.
Assicurati di usare gli indirizzi I2C corretti dei dispositivi collegati nel tuo codice. Verifica anche che le linee SDA e SCL non siano invertite.
D: Come collego AM2320 e LCD ad Arduino tramite I2C?
R: Per collegare AM2320 e LCD ad Arduino tramite I2C, devi fare i seguenti collegamenti:
- Collega il pin SDA del sensore AM2320 al pin SDA di Arduino.
- Collega il pin SCL del sensore AM2320 al pin SCL di Arduino.
- Collega il pin SDA dell’LCD al pin SDA di Arduino.
- Collega il pin SCL dell’LCD al pin SCL di Arduino.
D: Come leggo temperatura e umidità tramite il sensore AM2320?
R: Per leggere temperatura e umidità tramite il sensore AM2320 devi inizializzare il sensore e poi usare le funzioni appropriate per ottenere i valori di temperatura e umidità. La libreria AM2320 fornisce funzioni come begin() per inizializzare il sensore e readTemperature() e readHumidity() per ottenere rispettivamente le letture di temperatura e umidità.
D: Come visualizzo i dati su un LCD 16×2?
R: Per visualizzare i dati di temperatura e umidità su un LCD 16×2 devi inizializzare l’LCD e poi usare le funzioni della libreria LCD per scrivere i dati sullo schermo. La libreria LiquidCrystal fornisce funzioni come begin() per inizializzare l’LCD e print() per visualizzare i dati sull’LCD.
D: Ci sono consigli per risolvere problemi con il sensore AM2320 e l’LCD?
R: Se incontri problemi usando il sensore AM2320 e l’LCD, ecco alcuni consigli:
- Controlla bene i collegamenti per assicurarti che siano corretti.
- Verifica di aver installato le librerie necessarie per il sensore AM2320 e l’LCD.
- Assicurati di avere gli indirizzi I2C corretti sia per il sensore che per l’LCD.
- Controlla che non ci siano conflitti con altri dispositivi sul bus I2C.
- Testa il codice passo passo per individuare eventuali errori.
Conclusione
In questo tutorial ti ho mostrato come usare il sensore di temperatura e umidità AM2320 con Arduino. Spero ti sia stato utile e informativo.
Se hai domande, sentiti libero di lasciare un commento.

