Tomo 8: El Panorama Completo - DHT11, Relés y LCD

¡Saludos, futuros ingenieros! Ya son expertos en medir el mundo y controlar movimiento. Hoy vamos a dar un salto gigante: aprenderemos a leer dos variables ambientales con un solo sensor, a controlar aparatos del mundo real (como los que se conectan a la pared) y a mostrar toda esa información de manera profesional en una pantalla de cristal líquido (LCD).

🧠 Protagonista 1: Sensor DHT11 (El Combo Digital 2x1)

El DHT11 es un sensor increíblemente popular y práctico. Es como tener un termómetro y un medidor de humedad en un solo paquete digital.

Sensor de temperatura y humedad DHT11 en versión individual y módulo

⚙️ Protagonista 2: El Módulo de Relé (El Interruptor de Alto Voltaje)

¿Recuerdan que el transistor nos ayudó a controlar un motor de 12V? Bueno, ¿qué pasa si queremos controlar una lámpara, un ventilador o una cafetera que se conecta directamente al enchufe de la pared (120V AC)? ¡NUNCA, BAJO NINGUNA CIRCUNSTANCIA, conectes alto voltaje directamente a tu protoboard o Arduino! Podrías destruirlo y, lo que es peor, es extremadamente peligroso.

Para esta tarea, necesitamos un intermediario seguro: el Relé (o Relevador).

Módulo de relé de un canal mostrando el lado de control y los terminales de potencia

🖥️ Protagonista 3: La Pantalla LCD 16x2 con I2C

El Monitor Serial es genial para pruebas, pero si queremos que nuestro proyecto sea independiente de la computadora, necesitamos una forma de ver la información.

La Pantalla LCD (Liquid Crystal Display) es la solución clásica. El modelo 16x2 significa que puede mostrar 2 filas de 16 caracteres cada una.

Conectar una LCD directamente requiere muchos pines. Por eso, usamos un pequeño módulo I2C que viene soldado detrás. ¡Este módulo reduce los 16 cables necesarios a solo 4!

Pantalla LCD 16x2 con el módulo adaptador I2C soldado en la parte posterior

🔌 El Circuito: Estación de Monitoreo Ambiental

Componentes Necesarios:

📝 Instrucciones de Conexión:

  1. Conecta la Pantalla LCD:
    • GND ➜ GND, VCC ➜ 5V, SDAA4, SCLA5.
  2. Conecta el Sensor DHT11:
    • + ➜ 5V, - ➜ GND, OUT ➜ Pin Digital 2.
  3. Conecta el Módulo de Relé (Lado de Control):
    • + ➜ 5V, - ➜ GND, IN ➜ Pin Digital 7.
  4. Conecta el Foco al Relé (Lado de Potencia):
    • ADVERTENCIA: Pide ayuda y supervisión al Profe Campos para este paso.
    • Toma el cable de la lámpara. Córtalo en uno de los dos hilos (no en ambos).
    • Conecta un extremo del hilo cortado al tornillo COM del relé.
    • Conecta el otro extremo del hilo cortado al tornillo NO del relé.

⚡ Diagrama de armado

Diagrama completo de conexiones de la estación de monitoreo ambiental

💡 Conceptos Clave de la Misión

🧠 El Código: El Centro de Comando

Este código necesita varias librerías. Asegúrate de instalarlas desde el Gestor de Librerías de Arduino IDE: DHT sensor library (de Adafruit) y LiquidCrystal_I2C.

Código Arduino

/*
 * Misión 09: El Panorama Completo
 * Descripción: Muestra Temp/Humedad del DHT11 en una LCD y activa un relé.
 * Por: Profe Campos
 * CECyTEM 05 Guacamayas
*/

// --- INCLUIR LIBRERÍAS ---
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Para la pantalla LCD
#include "DHT.h"                 // Para el sensor DHT

// --- CONFIGURACIÓN DE COMPONENTES ---
#define DHTPIN 2       // Pin donde está el DHT11
#define DHTTYPE DHT11  // Definimos que es un DHT11
const int pinRele = 7; // Pin para controlar el relé

// Inicializamos los objetos
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C, 16 columnas, 2 filas

void setup() {
  Serial.begin(9600);
  pinMode(pinRele, OUTPUT);
  digitalWrite(pinRele, LOW); // Nos aseguramos que el relé empiece apagado

  dht.begin(); // Iniciamos el sensor DHT
  
  lcd.init();      // Iniciamos la pantalla LCD
  lcd.backlight(); // Encendemos la luz de fondo
  lcd.setCursor(0, 0); // Ponemos el cursor en la columna 0, fila 0
  lcd.print("Estacion CTEC");
  lcd.setCursor(0, 1); // Columna 0, fila 1
  lcd.print("Iniciando...");
  delay(2000);
  lcd.clear(); // Limpiamos la pantalla
}

void loop() {
  delay(2000); // Esperamos 2 segundos entre lecturas

  // Leer la humedad y la temperatura toma unos 250ms
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // Verificamos si la lectura falló (muy común con los DHT)
  if (isnan(h) || isnan(t)) {
    Serial.println("Error al leer del sensor DHT!");
    lcd.setCursor(0, 0);
    lcd.print("Error de Sensor");
    return; // Salimos del loop y lo intentamos de nuevo
  }

  // --- MOSTRAMOS EN LCD ---
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("Hum:  ");
  lcd.print(h);
  lcd.print(" %");

  // --- LÓGICA DEL RELÉ ---
  if (t > 30.0) { // Si la temperatura supera los 30 grados
    digitalWrite(pinRele, HIGH); // Activamos el relé
  } else {
    digitalWrite(pinRele, LOW);  // Lo desactivamos
  }
}

🚀 ¡Inténtalo Tú Mismo! (Retos)

¡Felicidades! Han dado un paso enorme hacia la instrumentación real. Ahora pueden no solo leer el ambiente con precisión, sino también controlar dispositivos de mayor potencia de forma segura. ¡Están listos para automatizar casi cualquier cosa!

¡A seguir construyendo! - Profe Campos