¡Saludos, futuros ingenieros! 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 práctico. Es como tener un termómetro y un medidor de humedad en un solo paquete digital. Con un solo pin de datos obtenemos dos mediciones.
⚙️ Protagonista 2: El Módulo de Relé (El Interruptor de Alto Voltaje)
¿Qué pasa si queremos controlar una lámpara de 120V? ¡NUNCA la conectes a tu Arduino! Para eso usamos un Relé. Es un interruptor electromagnético que usa una señal segura de 5V de Arduino para activar un interruptor interno, completamente aislado, que puede manejar alto voltaje de forma segura.
🖥️ Protagonista 3: La Pantalla LCD 16x2 con I2C
Para que nuestro proyecto sea independiente de la computadora, necesitamos una pantalla. La LCD 16x2 puede mostrar 2 filas de 16 caracteres. Para no usar todos nuestros pines, usamos un pequeño módulo I2C soldado detrás, que reduce los cables necesarios a solo 4: VCC, GND, SDA (A4) y SCL (A5).
🧠 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.
/*
* 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
}
}
🔌 Manos a la Obra: El Circuito
Conectaremos los tres módulos principales. La parte más delicada es la conexión del foco al lado de potencia del relé. ¡Pide supervisión del Profe Campos para este paso!
Diagrama del Circuito 9
💡 Conceptos Clave de la Misión
- Aislamiento Eléctrico: El relé aísla completamente el circuito de control de bajo voltaje del circuito de potencia de alto voltaje, lo que es crucial por seguridad.
- Comunicación I2C: Un protocolo que permite conectar múltiples dispositivos (sensores, pantallas) usando solo dos pines (SDA y SCL).
🚀 ¡Inténtalo Tú Mismo! (Retos)
- Control de Humedad: Modifica la lógica para que el relé se active si la humedad supera el 70%, simulando un deshumidificador.
- Doble Condición: Cambia el código para que el relé solo se active si la temperatura es alta Y la humedad también es alta (operador `&&`).
- Mensajes en LCD: Haz que en la pantalla LCD aparezca un mensaje como "Ventilador ON" o "Ventilador OFF" según el estado del relé.