En este tutorial, aprenderás a usar el sensor digital de temperatura y humedad AM2320 con Arduino. He incluido diagramas de conexión y dos ejemplos de código para empezar.
Para este tutorial, usaremos la biblioteca Adafruit AM2320. Esta biblioteca facilita mucho la comunicación con el sensor vía I2C. La usaremos en nuestro primer ejemplo para leer los datos de temperatura y humedad del sensor AM2320 y mostrarlos en el Monitor Serial.
En el segundo ejemplo, ampliamos esto añadiendo una pantalla LCD de 16×2 caracteres. Esta también se conectará vía bus I2C y nos permitirá mostrar las lecturas en la pantalla LCD. El proyecto completo se verá así:

Si quieres aprender más sobre otros sensores de temperatura, consulta nuestros otros tutoriales a continuación:
- 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
¡Vamos a empezar!
Partes necesarias
A continuación encontrarás las partes necesarias para este proyecto. Además de un Arduino, necesitarás una protoboard, algunos cables y, por supuesto, el sensor AM2320. Para este tutorial usaré el clásico Arduino Uno (REV3), pero cualquier otro Arduino (o ESP32/ESP8266) también servirá.
También incluí una pantalla LCD 16×2 en la lista de partes necesarias, que usarás para el segundo ejemplo de aplicación de este tutorial. Si solo quieres mostrar temperatura y humedad en el Monitor Serial, no necesitarás esta pantalla.

Arduino Uno

Juego de cables Dupont

Protoboard

Cable USB para Arduino UNO

Sensor de temperatura AM2320

LCD 16×2 con interfaz 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.
Acerca del AM2320
El AM2320 es un sensor digital de temperatura y humedad de bajo costo fabricado por ASAIR. Este sensor es similar a los populares DHT11/DHT22 pero cuenta con interfaz I2C en lugar del protocolo de bus único que usan muchos otros sensores DHTxx. Puedes encontrar nuestro tutorial para DHT11 y DHT22 aquí:
El sensor consta de un elemento capacitivo para medir humedad y un elemento integrado de alta precisión para medir temperatura, conectado a un microprocesador. El rango de medición de temperatura es de -40 a 80 grados Celsius, con una precisión declarada de ± 0.5 °C.
Humedad relativa
Al revisar la hoja de datos del sensor, verás que mide la humedad relativa (HR) del aire y no la humedad absoluta. ¿Pero cuál es la diferencia? La humedad absoluta es la cantidad de vapor de agua en el aire (expresada en g/m³), sin importar la temperatura. La humedad relativa sí toma en cuenta la temperatura.
La humedad relativa es la proporción entre la cantidad real de vapor de agua presente en el aire y la cantidad máxima de vapor de agua que el aire puede contener a una temperatura dada.
El aire cálido puede contener más agua que el aire frío. Esto significa que para la misma cantidad de vapor de agua en el aire, la humedad relativa en aire frío será mayor que en aire cálido. Al 100 por ciento de humedad relativa, el aire está saturado y alcanza su punto de rocío.
Pinout del AM2320
El pinout del sensor AM2320 es el siguiente:

| Pin | Nombre | Descripción |
|---|---|---|
| 1 | VDD | Pin de alimentación positiva (3.1 – 5.5 V) |
| 2 | SDA | Datos seriales, puerto bidireccional |
| 3 | GND | Tierra |
| 4 | SCL | Entrada de reloj serial (tierra de bus único) |
Ten en cuenta que la dirección I2C por defecto del sensor es 0x5C y no puede cambiarse.
La siguiente tabla muestra las características más importantes del AM2320:
Especificaciones del AM2320
| Voltaje de alimentación | 3.1 – 5.5 V |
| Consumo de energía | En reposo: 10 μA En medición: 950 μA |
| Rango de humedad | 0 – 99.9 % HR ± 3 % HR |
| Rango de temperatura | -40 – 80 °C ± 0.5 °C |
| Interfaz | I2C 1-Wire |
| Periodo de muestreo | 2.0 s |
| Dimensiones | 15 x 12.1 x 4.5 mm |
| Costo | Check price |
Para más información, puedes consultar la hoja de datos aquí:
Conectando el AM2320 al Arduino
Conectar el AM2320 al Arduino es muy fácil, como puedes ver en el diagrama a continuación.

Solo conecta 5V (o 3.3V) del Arduino al Pin 1 (VDD) del AM2320 y de igual forma conecta Tierra (GND) a GND. A4 va al Pin 2 (SDA) y A5 se conecta al Pin 4 (SCL) del AM2320. Las conexiones también se muestran en la tabla a continuación.
Conexiones del AM2320
| AM2320 | Cable | Arduino |
|---|---|---|
| Pin 1 (VDD) | rojo | 5 V |
| Pin 2 (SDA) | amarillo | A4 |
| Pin 3 (GND) | negro | GND |
| Pin 4 (SCL) | verde | A5 |
Si no usas un Arduino Uno, los pines SDA y SCL pueden estar en otra ubicación. Consulta la tabla a continuación para más detalles.
| Placa | 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 el diseño R3 (pinout 1.0) también tiene los pines SDA (línea de datos) y SCL (línea de reloj) cerca del pin AREF. El siguiente diagrama muestra un circuito alternativo que conecta el AM2320 a esos pines SDA y SCL:

Notarás que también hay dos resistencias pull-up adicionales de 4.7KΩ en las líneas SDA y SCL. En muchos casos no las necesitarás, ya que el Arduino UNO tiene resistencias pull-up internas que suelen ser suficientes. Sin embargo, son de valor bastante alto y si tienes problemas de comunicación con un dispositivo I2C deberías añadir las tuyas propias, especialmente si usas cables largos.
Instalando las bibliotecas necesarias para Arduino
Para este tutorial, usaremos la biblioteca Adafruit AM2320 del sensor. Para instalarla, ve a Tools > Manage Libraries en el Arduino IDE. Se abrirá el Library Manager.

En el LIBRARY MANAGER busca ‘Adafruit AM2320’ y haz clic en INSTALL.

Dependiendo de las otras bibliotecas que tengas instaladas, puede que veas o no el siguiente mensaje. Te indica que necesitas instalar otras bibliotecas requeridas por la biblioteca AM2320. Eso está bien. Solo haz clic en INSTALL ALL.

Ahora tienes todas las bibliotecas instaladas que necesitamos para ejecutar el código que se muestra en la siguiente sección.
Código para leer temperatura y humedad con AM2320
El siguiente código de ejemplo muestra cómo leer temperatura y humedad del sensor AM2320 y mostrar los datos en el Monitor Serial y el Serial Plotter. Échale un vistazo rápido primero, luego discutiremos los detalles del código.
// 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);
}
Importando las bibliotecas
En el primer paso incluimos las bibliotecas Adafruit_AM2320 y Adafruit_Sensor.
#include "Adafruit_Sensor.h" #include "Adafruit_AM2320.h"
Crear instancia del sensor
Luego, creamos una nueva instancia de la clase Adafruit_AM2320. En este caso la llamé «sensor«, pero puedes elegir otro nombre, siempre que ajustes el código siguiente en consecuencia.
Adafruit_AM2320 sensor = Adafruit_AM2320();
Función setup
En la función setup() iniciamos la comunicación serial a 9600 baudios. Asegúrate de que el Monitor Serial también esté configurado a 9600. También inicializamos el sensor AM2320 con sensor.begin().
void setup() {
Serial.begin(9600);
sensor.begin();
}
Función loop
En la sección loop del código, leemos los datos de temperatura y humedad del sensor AM2320 con las funciones readTemperature() y readHumidity().
Ten en cuenta que readTemperature() devuelve la temperatura en grados Celsius. Podemos convertirla fácilmente a Fahrenheit usando la fórmula 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();
Finalmente, imprimimos los resultados en el Monitor Serial y añadimos un retardo entre lecturas. El intervalo mínimo entre lecturas es de 2 segundos (ver hoja de datos), así que usamos un retardo de 2000 ms (=2 s) entre lecturas.
Serial.print("Temperatur:");
Serial.println(tempF);
Serial.print("Humidity:");
Serial.println(humidity);
delay(2000);
¡Y eso es todo! Tenemos un lector de temperatura y humedad. Ahora probémoslo.
Salida en el Monitor Serial
Si ejecutas este código y abres el Monitor Serial, deberías ver lecturas de temperatura y humedad similares a las siguientes. Asegúrate de que la velocidad en baudios esté a 9600.

Salida en el Serial Plotter
Si ahora abres el Serial Plotter y soplas sobre el sensor AM2320, deberías ver un pico en la humedad y un ligero aumento en la temperatura, similar al gráfico siguiente:

Añadiendo un LCD para mostrar los datos
En esta parte te muestro cómo añadir una pantalla LCD 16×2 para mostrar los datos. Por suerte, es muy sencillo.
Conexión del LCD
El siguiente diagrama muestra la conexión completa. El AM2320 se conecta igual que antes. Añadimos el LCD conectando su alimentación (VCC, GND) a la línea de alimentación y sus pines SDA y SCL a las mismas líneas SDA y SCL a las que está conectado el AM2320.

Así, tanto el LCD como el AM2320 están conectados vía I2C al Arduino. I2C es un bus serial que puede permitir la comunicación de hasta 128 dispositivos.

Los dispositivos en el bus se distinguen por su dirección I2C. La dirección I2C del AM2320 es fija en 0x5C. Sin embargo, la dirección I2C de tu LCD puede variar. Las direcciones típicas son 0x27 o 0x3F, y a menudo están impresas en la parte trasera. Si no estás seguro, puedes ejecutar un escáner I2C para descubrir la dirección. Consulta nuestro tutorial Character I2C LCD with Arduino Tutorial.
Mostrando lecturas del AM2320 en LCD
El código para mostrar datos en el LCD es bastante simple. Usaremos la biblioteca LiquidCrystal de Frank de Brabander para controlar el LCD.
Si aún no la has instalado, deberás hacerlo igual que instalaste la biblioteca AM2302. Y si necesitas ayuda, consulta nuestro tutorial sobre How to use the MQ-7 Gas Sensor with an LCD display and Arduino, donde hacemos exactamente eso con pasos detallados.
Echa un vistazo rápido al código antes de explicar los detalles.
// 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);
}
Comenzamos incluyendo las bibliotecas necesarias.
Bibliotecas
Para usar el sensor AM2320 y la pantalla LCD, necesitamos incluir las bibliotecas necesarias. Incluimos «LiquidCrystal_I2C.h» para la pantalla LCD, «Adafruit_Sensor.h» para el sensor y «Adafruit_AM2320.h» para el sensor AM2320.
#include "LiquidCrystal_I2C.h" #include "Adafruit_Sensor.h" #include "Adafruit_AM2320.h"
Objetos
Primero creamos dos objetos: uno para el sensor AM2320 y otro para la pantalla LCD. Inicializamos el objeto del sensor como «sensor» y el objeto del LCD como «lcd». Para crear el objeto lcd necesitamos pasar la dirección I2C del LCD (0x3F) y las dimensiones de la pantalla (20 columnas y 2 filas) al constructor «LiquidCrystal_I2C».
Adafruit_AM2320 sensor = Adafruit_AM2320(); LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x3F, 20, 2);
Función setup
En la función «setup()», inicializamos la comunicación serial a 9600 baudios. También llamamos a la función «begin()» del objeto sensor para inicializar el AM2320. Luego, llamamos a la función «init()» del objeto lcd para inicializar la pantalla LCD. Finalmente, encendemos la luz de fondo del LCD usando la función «backlight()».
void setup() {
Serial.begin(9600);
sensor.begin();
lcd.init();
lcd.backlight();
}
Función loop
En la función «loop()», leemos los valores de temperatura y humedad del sensor usando las funciones «readTemperature()» y «readHumidity()» respectivamente.
Como antes, almacenamos la temperatura en Celsius en la variable «tempC» y la convertimos a Fahrenheit multiplicándola por 1.8 y sumando 32, guardando el resultado en la variable «tempF». De igual forma, almacenamos el valor de humedad en la variable «humidity».
Limpiamos la pantalla LCD usando la función «clear()». Luego, colocamos el cursor en la primera columna de la primera fila con «setCursor()» y escribimos «Temperature». Colocamos el cursor en la columna doce de la primera fila y mostramos la temperatura en Fahrenheit.
Después, colocamos el cursor en la primera columna de la segunda fila y escribimos «Humidity». Colocamos el cursor en la columna doce de la segunda fila y mostramos el valor de humedad.
Finalmente, añadimos un retardo de 2000 milisegundos (2 segundos) usando la función «delay()» para dar tiempo a que las lecturas se muestren antes de repetir el ciclo.
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);
}
Y eso es todo. Ahora tienes un sistema completamente funcional para mostrar datos de temperatura y humedad en un LCD.
Preguntas frecuentes
Aquí tienes algunas preguntas frecuentes sobre el uso del sensor AM2320 para leer temperatura y humedad y mostrar los datos en un LCD 16×2 con Arduino.
P: ¿Qué es el sensor AM2320?
R: El AM2320 es un sensor digital de temperatura y humedad que usa el bus serial I2C para comunicarse con microcontroladores como Arduino. Proporciona lecturas precisas de temperatura y humedad, ideal para aplicaciones como monitoreo meteorológico, domótica y control de invernaderos.
P: ¿Qué es I2C y cómo funciona?
R: I2C (Inter-Integrated Circuit) es un protocolo de comunicación serial que permite que múltiples dispositivos se comuniquen usando solo dos cables: SDA (línea de datos) y SCL (línea de reloj). Facilita la comunicación eficiente entre microcontroladores y sensores, minimizando el número de pines necesarios para la conexión.
Asegúrate de usar las direcciones I2C correctas de los dispositivos conectados en tu código. También verifica que las líneas SDA y SCL no estén invertidas.
P: ¿Cómo conecto el AM2320 y el LCD al Arduino vía I2C?
R: Para conectar el AM2320 y el LCD al Arduino vía I2C, debes hacer las siguientes conexiones:
- Conecta el pin SDA del sensor AM2320 al pin SDA del Arduino.
- Conecta el pin SCL del sensor AM2320 al pin SCL del Arduino.
- Conecta el pin SDA del LCD al pin SDA del Arduino.
- Conecta el pin SCL del LCD al pin SCL del Arduino.
P: ¿Cómo leo temperatura y humedad con el sensor AM2320?
R: Para leer temperatura y humedad con el sensor AM2320, debes inicializar el sensor y luego usar las funciones adecuadas para obtener los valores de temperatura y humedad. La biblioteca AM2320 proporciona funciones como begin() para inicializar el sensor y readTemperature() y readHumidity() para obtener las lecturas de temperatura y humedad respectivamente.
P: ¿Cómo muestro los datos en un LCD 16×2?
R: Para mostrar los datos de temperatura y humedad en un LCD 16×2, debes inicializar el LCD y luego usar las funciones de la biblioteca LCD para escribir los datos en la pantalla. La biblioteca LiquidCrystal proporciona funciones como begin() para inicializar el LCD y print() para mostrar los datos en el LCD.
P: ¿Hay consejos para solucionar problemas con el sensor AM2320 y el LCD?
R: Si tienes problemas usando el sensor AM2320 y el LCD, aquí tienes algunos consejos:
- Revisa tus conexiones para asegurarte de que estén bien cableadas.
- Verifica que hayas instalado las bibliotecas necesarias para el sensor AM2320 y el LCD.
- Asegúrate de tener las direcciones I2C correctas tanto para el sensor como para el LCD.
- Comprueba si hay conflictos con otros dispositivos que usen el bus I2C.
- Prueba tu código paso a paso para identificar posibles errores.
Conclusión
En este tutorial te he mostrado cómo usar el sensor de temperatura y humedad AM2320 con Arduino. Espero que te haya resultado útil e informativo.
Si tienes alguna pregunta, no dudes en dejar un comentario.

