Tutorial Arduino: Sensor DHT11 con Pantalla LCD I2C y LEDs de Alerta
En este proyecto aprenderemos a medir temperatura y humedad utilizando un sensor DHT11, mostrar los valores en una pantalla LCD 16×2 con interfaz I2C, y encender luces LED que indican si la temperatura supera un umbral establecido.
Este ejercicio es perfecto para quienes quieren iniciar en el uso de sensores ambientales con Arduino.
Materiales necesarios
- Arduino UNO/Nano/Mega (o compatible)
- Sensor DHT11 de temperatura y humedad
- Protoshield para Arduino UNO (con o sin mini protoboard)
- Pantalla LCD 16×2 con módulo I2C
- LED Rojo (indica temperatura baja)
- LED Verde (indica temperatura alta)
- Cables Dupont macho/hembra
- Protoboard
Sensor DHT11
librería para usar con Arduino
Adafruit_Unified_Sensor_library
LCD 16×2
Modulo I2C para el LCD
El módulo I2C es una pequeña placa que se monta en la parte posterior de la pantalla LCD y utiliza el protocolo I2C (Inter-Integrated Circuit) para comunicarse con Arduino.
Su función principal es reducir el número de pines necesarios para controlar la pantalla.
Librería Para Control I2C con Arduino
Pines del Módulo I2C
Pin I2C | Descripción | Conexión Arduino (UNO) |
---|---|---|
GND | Tierra | GND |
VCC | Alimentación (5V) | 5V |
SDA | Datos seriales | A4 |
SCL | Reloj serial | A5 |
Ventaja: gracias al I2C, podemos usar más sensores o dispositivos en el mismo bus sin gastar pines extra.
Uso del Protoshield
El protoshield es una placa que se coloca sobre el Arduino UNO y permite:
- Soldar componentes si se desea un montaje permanente.
- Usar una mini protoboard para realizar pruebas rápidas sin soldadura.
- Organizar el cableado, ya que replica las líneas de pines de Arduino en una superficie más accesible.
Gracias al protoshield, el sensor DHT11, el módulo I2C y los LEDs pueden conectarse de manera más compacta y ordenada, ideal para proyectos de laboratorio o prototipos.
Conexiones del circuito
A continuación, se muestran las conexiones recomendadas:
Componente | Pin Arduino |
---|---|
DHT11 Señal | 11 |
DHT11 VCC | 3V |
DHT11 GND | GND |
LCD I2C SDA | A4 |
LCD I2C SCL | A5 |
LED Rojo (-) | 12 |
LED Verde (-) | 13 |
LEDs GND (+) | a 3V de la Placa |
Nota: Si tu LCD no funciona en la dirección 0x27
, prueba con 0x3F
.
Sketch para Arduino IDE
Explicación del código
- Librerías
Wire.h
: habilita la comunicación I2C.LiquidCrystal_I2C.h
: controla la pantalla mediante el módulo I2C.DHT.h
: gestiona las lecturas de temperatura y humedad.
- Configuración de pines
- Se definen los pines del DHT11, los LEDs y el umbral de temperatura (
TEMP_THRESHOLD
).
- Se definen los pines del DHT11, los LEDs y el umbral de temperatura (
- Inicialización
- Se inicia la pantalla (
lcd.init()
), se enciende su luz de fondo y se prepara el sensor (dht.begin()
).
- Se inicia la pantalla (
- Lectura de datos
dht.readTemperature()
ydht.readHumidity()
obtienen las mediciones.isnan()
valida que los datos sean correctos.
- Visualización en la LCD
- Se muestran temperatura y humedad en las dos líneas de la pantalla.
(char)223
agrega el símbolo de grados (°).
- Control de LEDs
- Si la temperatura es mayor a 30 °C, el LED rojo se enciende.
- Si es menor o igual, se enciende el LED verde.
- usamos lógica invertida para controlar los LEDs y así poder usarlos con 3V de la Placa y no usar resistores.