Blaster IR WiFi casero con ESP8266 y Arduino: Controla tu TV desde el móvil
Componentes y materiales
| Componente | Cantidad | Notas |
|---|---|---|
| ESP8266 ESP-01 (o NodeMCU) | 1 | NodeMCU recomendado: regulador 3.3V, USB-Serie integrado, más pines. |
| Arduino Nano R3 | 1 | Usado en prototipo inicial; versión final solo NodeMCU. |
| Transistor NPN genérico (ej. 2N2222) | 1 | Para駆動 LEDs IR con 5V. |
| LED IR (Adafruit o similar) | 1-2 | En serie con transistor. |
| Resistencias, protoboard, cables | Varios |
Herramientas
- Soldador (para versión permanente).
Software y servicios
- Arduino IDE con core ESP8266.
- Librerías:
ESP8266WiFi,IRremoteESP8266,ESP8266mDNS. - Servidor web frontal (PHP + JS) en Raspberry Pi, CHIP, o nube.
- App web instalable (PWA) en Android via
manifest.json.
Descripción del proyecto
Proyecto evolutivo: comenzó con ESP-01 controlado por AT commands desde Arduino Nano, pero había latencia de 1-2s. Migración a NodeMCU (ESP8266 dev board) eliminó el Arduino intermedio: el propio ESP8266 monta un mini servidor web (puerto 80) que acepta peticiones GET /irTVpwr, /irTVvup, etc., y envía los códigos IR crudos (RAW) mediante un LED IR驱动 por transistor NPN a 5V (sin resistencia para mayor alcance).
Arquitectura final
- NodeMCU: Conectado a WiFi, sirve API REST simple. Cada endpoint dispara un código IR predefinido (TV, receptor AV).
- Frontend web (PHP/JS): Página HTML con botones (index.html) → JS (script.js) hace AJAX a
curl.php→ este hace cURL a la IP del NodeMCU. - PWA:
manifest.jsonpermite instalar la web como app nativa en Android (pantalla completa, icono). - Integración Alexa: Mediante skill personalizada o HA Bridge.
Código principal (NodeMCU sketch)
#include <ESP8266WiFi.h>
#include <IRremoteESP8266.h>
#include <ESP8266mDNS.h>
const char* ssid = "TU_SSID";
const char* password = "TU_PASS";
const int khz = 38; // Frecuencia portadora 38kHz
IRsend irsend(4); // GPIO4 = D2 en NodeMCU
// Códigos RAW para TV Samsung, Receptor NEC, etc. (ver original)
unsigned int irTVpwr[] = {4650,4250, 700,1550, ... };
// ... más arrays irTVsrc, irTVmute, irTVvdn, irTVvup, irTVchup, irTVchdn,
// irRECpwr, irRECpwrON, irRECpwrOFF, irRECmute, irRECvdn, irRECvup, irRECsrc
WiFiServer server(80);
MDNSResponder mdns;
void setup() {
Serial.begin(115200);
irsend.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
server.begin();
mdns.begin("IRBlasterLR", WiFi.localIP());
}
void loop() {
WiFiClient client = server.available();
if (!client) return;
String req = client.readStringUntil('\r');
client.flush();
if (req.indexOf("/irTVpwr") != -1) { irsend.sendRaw(irTVpwr, sizeof(irTVpwr)/sizeof(irTVpwr[0]), khz); }
else if (req.indexOf("/irTVvup") != -1) { irsend.sendRaw(irTVvup, sizeof(irTVvup)/sizeof(irTVvup[0]), khz); }
// ... resto de endpoints
else { client.stop(); return; }
client.print("HTTP/1.1 200 OK\r\n\r\n");
delay(1);
}
Frontend (archivos clave)
- index.html: Botones con
onClick="buttonClick(this.id)". - script.js: Función
buttonClick(id)hace$.get("curl.php", {room: IP, button: id}). - curl.php: Recibe
room(IP) ybutton, ejecutacurlahttps://IP/button. - manifest.json: Configura PWA (nombre, iconos, pantalla completa).
Esquemático
NodeMCU GPIO4 (D2) → base transistor NPN (2N2222) → colector a 5V (VIN) → emisor a LED IR (ánodo) → cátodo a GND. Opcional: 2 LEDs IR en serie. Versión avanzada: un NPN por LED para mayor corriente.
Actualización 3 meses y futuras mejoras
- Funcionamiento diario sin fallos.
- Segundo dispositivo para AC y otra TV.
- Migrar frontend a la nube.
- Añadir sensor DHT22 (temperatura/humedad).
- Receptor IR para "aprender" códigos de mandos existentes.
- Transmisor RF para ventiladores de techo.
- Integración con automatización del hogar (apagar dispositivos inactivos).
Proceso de manufactura
- Integración MQTT fluida: sensores NodeMCU DHT22 con Raspberry Pi 3 B+ como broker
- Construye un Robot Controlado por WiFi con Raspberry Pi y Smartphone Android
- Construye un Robot Raspberry Pi Controlado por Wi‑Fi con Python – Guía Paso a Paso
- Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
- Servidor Web Arduino Uno WiFi: Controla un LED desde el Navegador
- Cerradura Inteligente WiFi con Arduino y ESP8266: Desbloqueo desde el Móvil
- Llamadas WiFi explicadas: cómo funcionan y por qué importan
- Chorreado de microesferas explicado: guía definitiva para acabados lisos y pulidos
- Limitaciones clave de los sistemas de localización en tiempo real (RTLS) basados en Wi‑Fi
- Tecnologías inalámbricas emergentes de 2015: Guía para M2M e IoT
- Despliegue de un servidor web con TLS en un ESP8266 de 3 $ en menos de 30 minutos