Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

TV per Alexa steuern mit Arduino IoT Cloud – Schritt-für-Schritt

Komponenten und Zubehör

Arduino Nano 33 IoT × 1
Widerstand 330 Ω × 1
IR-Empfänger (z. B. VS1838B) × 1
IR-Sender (IR-LED) × 1
Jumper-Wires × 1 Set
Breadboard × 1

Apps und Online-Dienste

Projektbeschreibung

Hinweis: Dieses Tutorial könnte veraltet sein. Aktuelle Version hier.

Teil 1: TV per Infrarot steuern

Der einfachste Weg: Arduino mimikt die originale IR-Fernbedienung. Dazu Signale der Fernbedienung mit IR-Empfänger aufzeichnen, dann per IR-LED wieder senden.

Schaltung aufbauen (IR-Empfänger an Pin 2, IR-LED mit 330 Ω an Pin 3). Sketch hochladen, Seriellen Monitor öffnen (9600 Baud), Fernbedienung auf Empfänger richten und Tasten drücken:

Im Monitor erscheinen rawData-Arrays (unsigned int[67]). Diese notieren und benennen (chan1…chan9, volUp, volDown, chanUp, chanDown, onoff, mute). Beispielwerte (Samsung-TV):


const unsigned int chan1[67] = {4450,4500, 550,1700, 500,1700, ... };
const unsigned int chan2[67] = {4500,4500, 550,1700, 500,1700, ... };
// ... chan3 bis chan9, volUp, volDown, chanUp, chanDown, onoff, mute

Teil 2: Arduino IoT Cloud einrichten

  1. Auf Arduino IoT Cloud → Neues Thing → Name: TVRemoteController.
  2. Board wählen: Arduino Nano 33 IoT (andere kompatible Boards möglich).
  3. Property hinzufügen: Kategorie Smart Home → Typ TV → Read & Write → Update: When the value changes.
TV per Alexa steuern mit Arduino IoT Cloud – Schritt-für-Schritt

Teil 3: Arduino Web Editor – Code ergänzen

EDIT SKETCH klicken → Web Editor öffnet sich mit Grundgerüst. Folgendes ergänzen:

Bibliothek & IR-Daten


#include <IRremote.h>

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] = { ... };

IRsend irsend;
const int freq = 38; // 38 kHz Trägerfrequenz

IR-Sende-Funktion


void sendIR(const unsigned int buf[]) {
  digitalWrite(LED_BUILTIN, HIGH);
  irsend.sendRaw(buf, 67, freq);
  delay(300); // Je nach TV anpassen
  digitalWrite(LED_BUILTIN, LOW);
}

Callback onTvChange() vervollständigen

Wird aufgerufen, wenn Alexa die TV-Property ändert. Logik: Volume/Channel/ Mute/Power auswerten & passende IR-Sequenz senden.


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) { // Initialisierung
    prevSwitch = tv.getSwitch();
    prevVolume = tv.getVolume();
    prevChannel = tv.getChannel();
    prevMute = tv.getMute();
    first = false;
    return;
  }

  // Volume geändert
  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 geändert
  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()));
  }

  // Kanal geändert
  if (tv.getChannel() != prevChannel) {
    int newChannel = tv.getChannel();
    if (newChannel > 0 && newChannel < 10) {
      sendIR(chan[newChannel - 1]); // Direkte Zifferntaste
    } 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 {
        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()));
  }

  // Ein/Aus geändert
  if (tv.getSwitch() != prevSwitch) {
    prevSwitch = tv.getSwitch();
    if (tv.getSwitch()) sendIR(chan[6]); // Beispiel: Kanal 7 als "Ein" (anpassen!)
    else sendIR(onoff);
    Serial.println("Switch changed:" + String(tv.getSwitch()));
  }
}

Teil 4: Amazon Alexa einrichten

  1. Amazon Alexa App installieren (iOS/Android), anmelden.
  2. In Skills & Spiele nach „Arduino“ suchen → Offizieller Arduino Skill aktivieren.
  3. Mit Arduino-Account verknüpfen (Login im Web-Editor).
  4. Geräte suchen → TVRemoteController wird gefunden.
  5. Gerät benennen (z. B. „Wohnzimmer TV“).

Bildfolge der Einrichtung (Screenshots in Originalartikel).

Sprachbeispiele

Viel Spaß mit Alexa & IoT Cloud! Fragen in den Kommentaren.

Herstellungsprozess

  1. Deckenventilator per Alexa steuern – Schritt-für-Schritt-Anleitung
  2. Ultraschall-Schwebegerät mit Arduino bauen – Akustische Levitation Schritt für Schritt
  3. Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
  4. Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
  5. Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
  6. Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000
  7. Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
  8. Heimtemperatur weltweit überwachen: Arduino Cloud Integration mit TMP36
  9. Arduino Rover per Firmata & Xbox One Gamepad steuern
  10. DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation