Je TV bedienen met Alexa via Arduino IoT Cloud – stapsgewijze handleiding
Onderdelen en benodigdheden
| Arduino Nano 33 IoT | × | 1 |
| Weerstand 330 Ω | × | 1 |
| IR-ontvanger (bijv. VS1838B) | × | 1 |
| IR-zender (IR-LED) | × | 1 |
| Jumper wires | × | 1 set |
| Breadboard | × | 1 |
Apps en online diensten
- Arduino Web Editor
- Arduino IoT Cloud
- Arduino Amazon Alexa Official Skill
Over dit project
Let op: Deze tutorial kan verouderd zijn. Raadpleeg deze link voor een actuele versie.
Intro: Arduino IoT Cloud
Arduino IoT Cloud maakt het eenvoudig om IoT-apparaten te bouwen. Om onze TV met Alexa te besturen, gebruiken we de officiële Arduino Alexa Skill. Nieuw met IoT Cloud? Bekijk eerst het introductieproject voor het opzetten van een board, Things en Properties.
Deel 1: Hoe een TV-set te besturen
De simpelste manier: doe alsof we de originele IR-remote zijn. We luisteren naar de signalen van de remote, vangen de data op en spelen ze na met de Arduino. Na het bouwen van de schakeling, upload deze sketch om IR-codes vast te leggen. Richt de remote op de IR-ontvanger en druk op:
- POWER/STANDBY
- KANAAL 1 T/M 9
- VOLUME UP / DOWN
- MUTE
- CHANNEL UP / DOWN
In de Seriële Monitor verschijnen rawData-arrays. Noteer ze in een tekstbestand met arraynamen (chan1, chan2, …). Hieronder voorbeeldwaarden van een Samsung-remote (67 waarden per toets):
// Voorbeeld: CHANNEL 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};
// CHANNEL 2 t/m 9, VOLUME UP/DOWN, CHANNEL UP/DOWN, ON/OFF, MUTE – analogon
Vul je eigen gemeten waarden in!
Deel 2: Arduino IoT Cloud configureren
- Ga naar Arduino IoT Cloud, maak een nieuw Thing: TVRemoteController.
- Selecteer je board (Arduino Nano 33 IoT of compatibel).
- Voeg één Property toe: categorie Smart Home, type TV, Read & Write, Update: When the value changes.
Deel 3: Arduino Web Editor – code aanvullen
Klik EDIT SKETCH. De IoT Cloud genereert een basis-sketch; we voegen custom code toe.
1. IRremote bibliotheek (Ken Shirriff)
#include <IRremote.h>
2. IR-code arrays definieren
const unsigned int chan[9][67] = { {chan1}, {chan2}, {chan3}, {chan4}, {chan5}, {chan6}, {chan7}, {chan8}, {chan9} };
const unsigned int volUp[67] = { ... };
const unsigned int volDown[67] = { ... };
const unsigned int chanUp[67] = { ... };
const unsigned int chanDown[67]= { ... };
const unsigned int onoff[67] = { ... };
const unsigned int mute[67] = { ... };
3. IR-zender initialiseren
IRsend irsend;
const int freq = 38; // 38 kHz standaard voor IR-remotes
4. Helper-functie voor IR-verzending
void sendIR(const unsigned int buf[]) {
digitalWrite(LED_BUILTIN, HIGH);
irsend.sendRaw(buf, 67, freq);
delay(300); // aanpassen aan TV-model
digitalWrite(LED_BUILTIN, LOW);
}
5. Callback onTvChange() implementeren
Deze functie wordt aangeroepen wanneer Alexa de TV-property wijzigt. We vertalen Alexa-commando's naar IR-sequenties:
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 veranderd
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 veranderd
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()));
}
// Kanaal veranderd
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()));
}
// Aan/uit veranderd
if (tv.getSwitch() != prevSwitch) {
prevSwitch = tv.getSwitch();
if (tv.getSwitch()) sendIR(chan[6]); // kanaal 7 als "aan" trigger (voorbeeld)
else sendIR(onoff);
Serial.println("Switch changed: " + String(tv.getSwitch()));
}
}
Deel 4: Amazon Alexa configureren
- Installeer de Amazon Alexa app (App Store / Play Store), log in.
- Installeer de Arduino Alexa Skill via de app (zoek "Arduino" in Skills).
- Koppel je Arduino IoT Cloud-account aan de Skill.
- Detecteer apparaten → TVRemoteController zou moeten verschijnen.
- Geef het een vriendelijke naam (bijv. "TV").
De originele handleiding bevat screenshots van elke stap; hier het overzicht:
Nu kun je stemcommando's geven:
- "Alexa, zet het volume hoger op TV."
- "Alexa, demp TV" of "Alexa, zet geluid aan op TV."
- "Alexa, volgende kanaal op TV."
Veel plezier met Alexa en IoT Cloud! Vragen of resultaten? Laat een reactie achter.
— Het Arduino Team
Productieproces
- Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding
- Bouw een Ultrasonische Zweefapparaat met Arduino – Stap-voor-stap Handleiding
- Universele Android-afstandsbediening bouwen met Arduino, 1Sheeld en IR-besturing
- Een slimme voltmeter bouwen met Arduino en smartphone – Eenvoudig DIY-project
- Real-time IoT hartslagmonitor met Arduino en MAX30100
- Externe IoT-besturing van een zelfgebouwde robotarm
- Bouw een Slimme IoT Pot met ESP8266, Arduino & Ultrasonische Sensor – Real-time Monitoring
- Monitor Je Huistemperatuur Overal met Arduino Cloud Integratie
- Bestuur een Arduino-rover naadloos met Firmata en een Xbox One-controller
- DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
- Realtime afstandsmeting met Arduino Sonar & Processing visualisatie