Controla tu TV con Alexa mediante Arduino IoT Cloud: Guía Paso a Paso
Componentes y suministros
| Arduino Nano 33 IoT | ×1 |
| Resistencia 330 Ω | ×1 |
| Receptor IR (genérico, ej. VS1838B) | ×1 |
| Emisor IR (genérico) | ×1 |
| Cables jumper (genéricos) | ×1 |
| Protoboard (genérica) | ×1 |
Aplicaciones y servicios en línea
- Arduino Web Editor
- Arduino IoT Cloud
- Skill Oficial Arduino para Amazon Alexa
Sobre el proyecto
Nota: Este tutorial podría estar desactualizado, ve aquí para versión más actual.
Introducción: Arduino IoT Cloud
Arduino IoT Cloud permite a cualquiera crear objetos IoT conectados fácilmente. Para controlar la TV con Alexa, usaremos la Skill Oficial Arduino Alexa.
Si eres nuevo en Arduino IoT Cloud, mira primero este proyecto introductorio que guía en configuración de placas soportadas, Things y Properties.
Parte 1: Cómo controlar un televisor
La forma más fácil es actuar como su propio mando IR. Hay que escuchar las señales del mando, capturar datos y replicarlos con Arduino. Montado el circuito, sube este sketch para traducir pulsaciones del mando en arrays de enteros sin signo. Apunta el mando al Receptor IR del Arduino y pulsa:
- ENCENDIDO/STANDBY
- CANALES 1 A 9
- VOLUMEN ARRIBA
- VOLUMEN ABAJO
- MUTE
- CANAL ARRIBA
- CANAL ABAJO
Verás valores en Monitor Serial como rawData. Anótalos en archivo de texto asignando nombre a cada array (chan1, chan2...). Los valores de referencia son de un mando Samsung:
// Ejemplo arrays (67 elementos cada uno)
CHANNEL 1 unsigned int chan1[67] = {4450,4500, 550,1700, ... };
CHANNEL 2 unsigned int chan2[67] = {4500,4500, 550,1700, ... };
// ... hasta CHANNEL 9, VOLUME UP, VOLUME DOWN, CHANNEL UP, CHANNEL DOWN, ON/OFF, MUTE
Parte 2: Arduino IoT Cloud
En la página principal Arduino IoT Cloud, crea nuevo Thing llamado TVRemoteController. Selecciona tu placa (usamos Arduino Nano 33 IoT; otras compatibles valen, pero pinout y librería IR pueden variar). Si no ves tu placa, repasa el Getting Started.
Añade una Property al Thing representando la TV. Categoría Smart Home, tipo "TV", "Read & Write", actualización "When the value changes".

Parte 3: Arduino Web Editor
Pulsa EDIT SKETCH → Web Editor para añadir código personalizado al sketch generado.
- Incluye librería IR Remote (Ken Shirriff):
#include <IRremote.h> - Define arrays: uno 2D para canales (
chan[9][67]) y 6 arrays para comandos (volUp,volDown,chanUp,chanDown,onoff,mute) usando datos capturados en Parte 1. - Configura librería IR y frecuencia (38 kHz):
IRsend irsend; const int freq = 38; - Función para enviar comandos IR y parpadear LED integrado (depuración):
void sendIR(const unsigned int buf[]) {
digitalWrite(LED_BUILTIN, HIGH);
irsend.sendRaw(buf, 67, freq);
delay(300); // Ajusta según marca/modelo TV
digitalWrite(LED_BUILTIN, LOW);
}
- Completa callback generado
onTvChange()para enviar comandos IR cuando Alexa cambie propiedad TV. Ejemplo: si sube volumen → envíavolUp; si canal 7 → envíachan[6]; etc.
void onTvChange() {
Serial.println("==================");
Serial.println("Switch:"+String(tv.getSwitch()));
Serial.println("Volume:"+String(tv.getVolume()));
Serial.println("Channel:"+String(tv.getChannel()));
Serial.println("Mute:"+String(tv.getMute()));
Serial.println("==================");
if (first){
prevSwitch = tv.getSwitch(); prevVolume = tv.getVolume();
prevChannel = tv.getChannel(); prevMute = tv.getMute();
first = false; return;
}
// Volumen cambiado
if (tv.getVolume() > prevVolume) {
tv.setMute(false); prevMute = false;
for (int k = prevVolume + 1; k <= tv.getVolume(); k++) {
sendIR(volUp);
Serial.println("Volume requested:"+String(tv.getVolume())+" Set:"+String(k));
}
prevVolume = tv.getVolume();
} else if (tv.getVolume() < prevVolume) {
tv.setMute(false); prevMute = false;
for (int k = prevVolume - 1; k >= tv.getVolume(); k--) {
sendIR(volDown);
Serial.println("Volume changed:"+String(tv.getVolume())+" Set:"+String(k));
}
prevVolume = tv.getVolume();
}
// Mute cambiado
if (tv.getMute() != prevMute && tv.getMute()) {
prevMute = tv.getMute(); sendIR(mute);
Serial.println("Mute changed:"+String(tv.getMute()));
} else if (tv.getMute() != prevMute && !tv.getMute()) {
prevMute = tv.getMute(); sendIR(mute);
Serial.println("Mute changed:"+String(tv.getMute()));
}
// Canal cambiado
if (tv.getChannel() != prevChannel) {
int newChannel = tv.getChannel();
if (newChannel > 0 && newChannel < 10) {
sendIR(chan[newChannel-1]);
} else if (newChannel > 9) {
if (newChannel > prevChannel) {
for (int ch = prevChannel; ch < newChannel; ch++) {
sendIR(chanUp);
Serial.println("Chan requested:"+String(newChannel)+" Set:"+String(ch));
}
} else if (newChannel < prevChannel) {
for (int ch = prevChannel; ch > newChannel; ch--) {
sendIR(chanDown);
Serial.println("Chan requested:"+String(newChannel)+" Set:"+String(ch));
}
}
}
prevChannel = newChannel;
Serial.println("Channel changed:"+String(tv.getChannel()));
}
// Encendido/Apagado
if (tv.getSwitch() != prevSwitch) {
prevSwitch = tv.getSwitch();
if (tv.getSwitch()) sendIR(chan[6]); else sendIR(onoff);
Serial.println("Switch changed:"+String(tv.getSwitch()));
}
}
Parte 4: Amazon Alexa
Instala app Amazon Alexa (App Store / Google Play). Inicia sesión o crea cuenta.
Pasos para instalar Skill Arduino Alexa y configurar control TV (sigue secuencia imágenes):











¡Listo! Ahora control por voz:
- "Alexa, sube el volumen en TV."
- "Alexa, silencia TV" o "Alexa, activa sonido TV."
- "Alexa, siguiente canal en TV."
Diviértete con Alexa e IoT Cloud. Dudas o construcciones en comentarios.
Gracias,
Equipo Arduino
Proceso de manufactura
- Controla tu Ventilador de Techo con Alexa: Guía Paso a Paso
- Construye un Dispositivo de Levitación Ultrasónica con Arduino – Guía Paso a Paso
- Mando universal Android con Arduino, 1Sheeld y control IR
- Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
- Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
- Control Remoto IoT de Brazo Robótico Personalizado con Arduino MKR1000 y ThingSpeak
- Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
- Monitoriza la Temperatura de tu Hogar desde Cualquier Lugar con Integración Arduino Cloud
- Controla un Rover Arduino con Firmata y Mando Xbox One - Guía Completa
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Medición de Distancia en Tiempo Real con Sonar Arduino y Visualización en Processing