Controle sua TV com Alexa via Arduino IoT Cloud – Guia Passo a Passo
Componentes Necessários
| Componente | Quantidade |
|---|---|
| Arduino Nano 33 IoT | 1 |
| Resistor 330 Ω | 1 |
| Receptor IR (ex: VS1838B) | 1 |
| Emissor IR (LED IR 940 nm) | 1 |
| Jumpers | 1 kit |
| Protoboard | 1 |
Software e Serviços
- Arduino Web Editor
- Arduino IoT Cloud
- Skill Oficial Arduino para Amazon Alexa
Visão Geral
Este tutorial ensina a transformar um Arduino Nano 33 IoT em um controle remoto IR inteligente, integrado ao Arduino IoT Cloud e controlável por comandos de voz via Amazon Alexa.
⚠ Nota: Este tutorial pode estar desatualizado. Consulte a documentação oficial do Arduino IoT Cloud para a versão mais recente.
Parte 1: Capturar Códigos IR do Controle Original
A forma mais simples de controlar uma TV é emular seu controle remoto. Vamos:
- Montar o receptor IR no Arduino.
- Carregar um sketch de captura (ex: exemplo
IRrecvDumpV2da bibliotecaIRremote). - Abrir o Monitor Serial (9600 baud).
- Apontar o controle da TV para o receptor e pressionar as teclas desejadas.
- Anotar os arrays
rawData(unsigned int[]) exibidos para cada tecla.
Teclas recomendadas para capturar:
- POWER / STANDBY
- CANAIS 1 a 9
- VOLUME + / VOLUME -
- MUTE
- CANAL + / CANAL -
Exemplo de array capturado (controle Samsung – apenas referência; capture os seus):
// CANAL 1
unsigned int chan1[67] = {4450,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 500,1700, 550,1700, 550,1700, 500,1700, 550,1700, 500};
// ... (demais canais, volume, mute, etc.)
Parte 2: Configurar Arduino IoT Cloud
- Acesse Arduino IoT Cloud e crie um novo Thing chamado
TVRemoteController. - Selecione a placa Arduino Nano 33 IoT (ou outra compatível).
- Adicione uma Property do tipo Smart Home → TV:
- Nome:
tv - Permissão: Read & Write
- Atualização: When the value changes
- Nome:
- A propriedade
tvexpõe automaticamente:switch(liga/desliga),volume(0–100),channel(inteiro),mute(booleano).
Parte 3: Código no Arduino Web Editor
Clique em EDIT SKETCH no Thing para abrir o Web Editor. O código base é gerado automaticamente; adicione a lógica IR abaixo.
1. Incluir biblioteca IR
#include <IRremote.h>
2. Definir arrays de comandos IR
// Matriz de canais 1-9 (substitua pelos SEUS valores capturados)
const unsigned int chan[9][67] = {
{ /* chan1 */ }, { /* chan2 */ }, { /* chan3 */ },
{ /* chan4 */ }, { /* chan5 */ }, { /* chan6 */ },
{ /* chan7 */ }, { /* chan8 */ }, { /* chan9 */ }
};
const unsigned int volUp[67] = { /* seu array */ };
const unsigned int volDown[67] = { /* seu array */ };
const unsigned int chanUp[67] = { /* seu array */ };
const unsigned int chanDown[67] = { /* seu array */ };
const unsigned int onoff[67] = { /* seu array POWER */ };
const unsigned int mute[67] = { /* seu array MUTE */ };
3. Configurar emissor IR
IRsend irsend;
const int FREQ_KHZ = 38; // Frequência portadora padrão (38 kHz)
4. Função auxiliar para enviar comando IR
void sendIR(const unsigned int buf[]) {
digitalWrite(LED_BUILTIN, HIGH); // Feedback visual
irsend.sendRaw(buf, 67, FREQ_KHZ);
delay(300); // Ajuste conforme sua TV
digitalWrite(LED_BUILTIN, LOW);
}
5. Implementar callback onTvChange()
Este callback é chamado automaticamente quando a propriedade tv muda via Alexa ou app Arduino IoT.
bool first = true;
int prevSwitch = 0, prevVolume = 0, prevChannel = 0;
bool prevMute = false;
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;
}
// --- VOLUME ---
if (tv.getVolume() > prevVolume) {
tv.setMute(false); prevMute = false;
for (int k = prevVolume + 1; k <= tv.getVolume(); k++) {
sendIR(volUp);
Serial.println("Vol req: " + 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("Vol req: " + String(tv.getVolume()) + " Set: " + String(k));
}
prevVolume = tv.getVolume();
}
// --- MUTE ---
if (tv.getMute() != prevMute) {
prevMute = tv.getMute();
sendIR(mute); // Toggle mute
Serial.println("Mute: " + String(tv.getMute()));
}
// --- CANAL ---
if (tv.getChannel() != prevChannel) {
int newCh = tv.getChannel();
if (newCh > 0 && newCh < 10) {
sendIR(chan[newCh - 1]); // Tecla direta 1-9
} else if (newCh >= 10) {
if (newCh > prevChannel) {
for (int ch = prevChannel; ch < newCh; ch++) sendIR(chanUp);
} else {
for (int ch = prevChannel; ch > newCh; ch--) sendIR(chanDown);
}
}
prevChannel = newCh;
Serial.println("Channel: " + String(newCh));
}
// --- LIGA/DESLIGA ---
if (tv.getSwitch() != prevSwitch) {
prevSwitch = tv.getSwitch();
sendIR(prevSwitch ? chan[6] : onoff); // Ex: canal 7 = "on", power = "off" (ajuste conforme sua TV)
Serial.println("Switch: " + String(tv.getSwitch()));
}
}
Parte 4: Configurar Amazon Alexa
- Instale o app Amazon Alexa (iOS/Android) e faça login.
- No menu ☰ → Skills e Jogos → busque Arduino → habilite Arduino Alexa Skill.
- Vincule sua conta Arduino (login no Arduino IoT Cloud).
- Alexa descobrirá o dispositivo TVRemoteController (tipo TV).
- Renomeie para "TV" ou "Sala" se desejar.
Comandos de Voz Exemplos
- "Alexa, ligue a TV"
- "Alexa, aumente o volume da TV"
- "Alexa, mude para o canal 5 na TV"
- "Alexa, próximo canal na TV"
- "Alexa, mute a TV" / "Alexa, desmute a TV"
Esquemático de Ligação

- Receptor IR (VS1838B): OUT → D2, VCC → 3,3V, GND → GND
- Emissor IR (LED IR): Anodo → D3 (via resistor 330 Ω), Catodo → GND
- O pino D3 deve suportar PWM (no Nano 33 IoT, D3 é PWM).
Dicas e Solução de Problemas
- Se a TV não responder, ajuste o
delay(300)emsendIR()(tente 100–500 ms). - Certifique-se de que o LED IR está alinhado com o receptor da TV (distância < 5 m, sem obstáculos).
- O Nano 33 IoT precisa de Wi-Fi 2,4 GHz e conta Arduino Cloud ativa.
- Para canais > 9, o código usa CH+/CH- sequencial; pode ser lento. Considere capturar teclas de 2 dígitos se sua TV suportar.
Processo de manufatura
- Controle seu Ventilador de Teto com Alexa: Guia Passo a Passo
- Construa um Dispositivo de Levitação Ultrassônica com Arduino – Guia Passo a Passo
- Controle Remoto Universal Android com Arduino, 1Sheeld e IR
- Construa um Voltímetro Inteligente com Arduino e Smartphone – Projeto DIY Fácil
- Monitor de Frequência Cardíaca IoT em Tempo Real com Arduino e MAX30100
- Controle IoT Remoto de Braço Robótico Personalizado
- Construa um Pote Inteligente IoT com ESP8266, Arduino e Sensor Ultrassônico – Monitoramento em Tempo Real
- Monitore a Temperatura da Sua Casa de Qualquer Lugar com Integração Arduino Cloud
- Controle um Rover Arduino com Firmata e Gamepad Xbox One
- Controlador de Umidificador DIY com Arduino e Relé – Configuração Segura de Alta Tensão