
Chisme 164 del Lince: el sensor AM2302 en la TTGO LoRa32 V1.3
Víctor Vílchez, el Lince de la Noche, entró en la cueva de Sierra Bermeja con una lista de la compra muy larga. AM2302 TTGO Lora
—Para el CanSat necesito saber la temperatura y la humedad del aire —anunció—. Así que me hará falta un termómetro, un higrómetro, un microcontrolador para cada uno y…
—¿Cuántos cables? —preguntó la Gata Montesa sin levantar la vista.
—Unos veinte.
—¿Y si hay uno solo que mide las dos cosas y lleva solo tres cables?
El Lince se quedó con el lápiz en el aire.
—¿Existe?
—Se llama AM2302. Está en esa caja desde el lunes. —La Gata le señaló la mesa—. Pero antes dime: ¿a qué pin de la placa va el cable de datos? Y no vale decir «a uno cualquiera».
Introducción
En este chisme 164 conectas un AM2302 a la TTGO LoRa y lees la temperatura y la humedad del aire en el monitor serie del Arduino IDE. Usamos la TTGO LoRa32 V1.3 (868 MHz), la misma placa del chisme 163, el primer LED.
Antes de montarlo, practica en el simulador del chisme 164. No hace falta escribir nada: tiene un botón verde que lo ejecuta todo solo.
Por qué este chisme
El CanSat BermejaSat va a medir el aire por el que pasa. Para eso necesita un sensor que dé temperatura y humedad con pocos cables.
El AM2302 es un sensor ASAIR que, por dentro, es un DHT22 con cable. Es el mismo tipo de sensor del chisme 26, el termómetro Bluetooth con Heltec y DHT22, pero ahora en la placa del CanSat.
Qué necesitamos
- Una TTGO LoRa32 V1.3 (868 MHz) con la antena LoRa.
- Un sensor AM2302 de 3 cables (rojo, negro y amarillo o blanco).
- Cables para unirlo a los pines de la placa.
- Un cable USB y el Arduino IDE con soporte para ESP32.
- Las librerías DHT sensor library (Adafruit) y Adafruit Unified Sensor, desde el Gestor de bibliotecas.
El módulo de 3 cables ya lleva la resistencia pull-up integrada. Si usas un DHT22 «desnudo» de 4 patas, necesitarías una de 10 kΩ entre DATA y 3V3.
Conexión del AM2302 a la TTGO LoRa
Antes de enchufar el USB, conecta la antena LoRa. Hoy no usamos la radio, pero es una norma del proyecto.
| Cable del sensor | Pin de la TTGO |
|---|---|
| Rojo (VCC) | 3V3 (nunca 5 V) |
| Negro (GND) | GND |
| Amarillo o blanco (DATA) | GPIO 13 |

Por qué el GPIO 13
Esta es la pregunta de la Gata Montesa. En esta placa muchos pines ya tienen dueño:
- GPIO 21 y 22: son de la pantalla OLED.
- GPIO 5, 18, 19, 27, 14 y 26: son del módulo LoRa.
- GPIO 0, 2, 12 y 15: son pines de arranque: su valor al encender decide cómo arranca la placa.
- GPIO 13: queda libre y es seguro.
Si el 13 fallara, las alternativas son el 32 y el 33.
Aviso importante: con la Heltec V3.2, la placa definitiva del CanSat, los pines son otros. Además, hay que poner el GPIO 36 (Vext) en LOW para dar corriente al sensor. Verifícalo antes de cablear.
Cómo funciona el AM2302
La placa y el sensor hablan por un solo cable de datos: el protocolo One-Wire. La placa envía un pulso de arranque por DATA, y el sensor responde con 40 bits: humedad, temperatura y una suma de comprobación (checksum).
El checksum permite saber si los datos llegaron bien. Si no cuadra, la librería devuelve un valor no válido (NaN) y el programa escribe «Error de lectura».
El sensor admite una lectura cada 2 segundos. Pedirle más no sirve de nada.
Configurar el Arduino IDE
- En *Herramientas → Placa*, elige ESP32 Dev Module.
- Elige el puerto de tu placa, con un cable USB que transmita datos.
- Abre el monitor serie a 115200 baudios.
El código
Copia el programa completo, súbelo y abre el monitor serie:
#include <DHT.h>
#define DHTPIN 13
#define DHTTYPE DHT22 // el AM2302 es un DHT22 con cable
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
delay(2000); // el sensor admite 1 lectura cada 2 s
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Error de lectura");
return;
}
Serial.printf("T: %.1f C H: %.1f %%\n", t, h);
}
Lo importante son tres cosas:
DHTPINdebe ser el pin donde está el cable amarillo.DHTTYPEesDHT22: el AM2302 es un DHT22 con cable.isnancomprueba si la lectura es válida antes de usarla.
Cómo probarlo
- Sube el programa. Cada 2 segundos verás algo como
T: 22.4 C H: 48.0 %. - Sopla suavemente cerca del sensor. La humedad sube.
- Espera un poco. Vuelve a bajar, pero no de golpe.
Lee y predice: si cambias delay(2000) por delay(500), ¿tendrás cuatro medidas distintas por segundo? Pruébalo en el simulador.
Si sale «Error de lectura»
Casi siempre es el cableado. Revisa, por este orden:
- Mide 3,3 V entre VCC y GND en el conector del sensor.
- Comprueba que el cable DATA esté firme y en el GPIO 13.
- Prueba otro GPIO libre (32 o 33) y cambia
DHTPIN.
Qué estamos midiendo realmente
El AM2302 mide la humedad relativa: el porcentaje de vapor de agua que hay en el aire respecto al máximo que cabría a esa temperatura. Es una idea que puedes repasar en la humedad relativa en Wikipedia.
La temperatura la mide con un termistor y la humedad con un sensor capacitivo. Ninguno es un instrumento de precisión.
Según la guía de Adafruit sobre el DHT22 y el AM2302, la temperatura tiene un error de unos ±0,5 °C y la humedad, de entre el 2 % y el 5 %.
Además, el sensor reacciona con retraso. Y la propia placa se calienta: si lo pegas a ella, medirás el calor de la placa, no el del aire. Medir no significa medir bien.
Para el aula
- Qué variable medimos: ¿en qué unidades llegan la temperatura y la humedad?
- Compara dos sensores: si tienes dos, ponlos juntos. ¿Dan lo mismo? ¿Qué error ves entre ellos?
- Cambia una variable: mide al sol y a la sombra, o cerca y lejos de la placa. ¿Qué cambia?
- Datos del CanSat: ¿qué valores esperas dentro de la lata a media altura? ¿Cómo lo comprobarías?
Retos
- Reto 1: haz que funcione y apunta la temperatura de tu aula.
- Reto 2: haz que lea cada 5 segundos en lugar de cada 2.
- Reto 3: saca la temperatura y la humedad por la pantalla OLED.
- Reto 4: guarda 20 lecturas y calcula la media.
- Reto 5: compáralo con el chisme 147, el termómetro con micro:bit: ¿miden lo mismo?
- Reto 6: convierte el proyecto en una pequeña investigación: ¿cuánto tarda el sensor en reaccionar a tu aliento?
Qué hemos aprendido
Has conectado un AM2302 a la TTGO LoRa con tres cables, has elegido un pin con criterio y has comprobado que el sensor solo renueva la medida cada 2 segundos. Es una pieza del CanSat BermejaSat del IES Monterroso.
También sabes que medir no es medir bien: el sensor tiene error, retraso y se deja influir por el calor de la placa.
—Funciona —dijo el Lince, mirando el monitor—. Veintidós grados y cuarenta y ocho por ciento.
—Con tres cables —respondió la Gata—. Y sin comprar la mitad de la tienda.



