💡 Ideas Makers (Proyecto 4): Control de Luces con Wi-Fi usando ESP8266

La automatización del hogar es una de las aplicaciones más interesantes de la electrónica. En este cuarto proyecto de Ideas Makers, aprenderemos a controlar luces desde un teléfono móvil o computadora usando ESP8266 y un módulo relé.

🔎 ¿Por qué usar Wi-Fi para controlar luces?

Comodidad: Enciende y apaga luces sin moverte.
Automatización: Programa horarios de encendido y apagado.
Eficiencia energética: Reduce el consumo eléctrico con control remoto.

🛠️ Materiales necesarios

Para este proyecto, necesitarás:

  • ESP8266 (NodeMCU o similar)
  • Módulo relé de 5V
  • Bombilla LED o lámpara
  • Fuente de alimentación de 5V
  • Cables de conexión
  • Protoboard

🔬 Cómo funciona el sistema

El ESP8266 actúa como un servidor web, permitiendo controlar la luz desde cualquier dispositivo conectado a la misma red Wi-Fi. Al recibir una orden, activa el módulo relé, que enciende o apaga la bombilla.

📐 Esquema del circuito

Aquí tienes el esquema de conexión del ESP8266 con el módulo relé:

        +5V
             │
       ┌─────┴─────┐
       │ ESP8266   │  ← Microcontrolador con Wi-Fi
       └─────┬─────┘
             │
       ┌─────┴─────┐
       │ Módulo Relé │  ← Activa la bombilla
       └─────┬─────┘
             │
       🔦 Bombilla LED

💻 Código para ESP8266

Este código crea un servidor web en el ESP8266 para controlar la luz desde un navegador:

# ****  VERSION ARDUINO   ****

#include <ESP8266WiFi.h>

const char* ssid = "TuRedWiFi";
const char* password = "TuContraseñaWiFi";
WiFiServer server(80);

const int relePin = 5; // Pin del relé

void setup() {
  pinMode(relePin, OUTPUT);
  digitalWrite(relePin, LOW);
  
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("WiFi conectado");
  server.begin();
}

void loop() {
  WiFiClient client = server.available();
  if (!client) return;

  String request = client.readStringUntil('\r');
  client.flush();

  if (request.indexOf("/ON") != -1) {
    digitalWrite(relePin, HIGH);
  } else if (request.indexOf("/OFF") != -1) {
    digitalWrite(relePin, LOW);
  }

  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println();
  client.println("<html><body>");
  client.println("<h1>Control de Luces</h1>");
  client.println("<a href='/ON'>Encender</a><br>");
  client.println("<a href='/OFF'>Apagar</a>");
  client.println("</body></html>");
  client.stop();
}
#   **** VERSION PYTHON ****
import network
import socket
import machine

# Configuración del Wi-Fi
SSID = "TuRedWiFi"
PASSWORD = "TuContraseñaWiFi"

# Configuración del relé
rele = machine.Pin(5, machine.Pin.OUT)  # GPIO 5

# Conectar a Wi-Fi
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(SSID, PASSWORD)

while not wifi.isconnected():
    pass  # Esperar hasta que se conecte

print("Conectado a Wi-Fi:", wifi.ifconfig())

# Configuración del servidor web
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('', 80))
server.listen(5)

while True:
    conn, addr = server.accept()
    request = conn.recv(1024)
    request = str(request)

    if "/ON" in request:
        rele.on()
    elif "/OFF" in request:
        rele.off()

    response = """\
HTTP/1.1 200 OK
Content-Type: text/html

<html>
<body>
<h1>Control de Luces</h1>
<a href="/ON">Encender</a><br>
<a href="/OFF">Apagar</a>
</body>
</html>
"""
    conn.send(response)
    conn.close()

📌 Cómo funciona

ESP8266 se conecta a Wi-Fi y crea un servidor web.
El usuario accede a la página web en su navegador.
Las solicitudes HTTP activan el relé, encendiendo o apagando la luz.

Este código es ideal para domótica y automatización.

🎯 Conclusión y aplicaciones

Este control de luces con Wi-Fi es ideal para:
✅ Domótica y automatización del hogar.
✅ Control remoto de dispositivos eléctricos.
✅ Integración con asistentes de voz.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio