Steuern Sie Ihren Fernseher mit Alexa!
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
|
Apps und Onlinedienste
|
Über dieses Projekt
Verwenden von Alexa zur Steuerung Ihres Fernsehers!
Einführung: In diesem Projekt wird also erläutert, wie Sie mit Alexa Befehle senden und Ihren Fernseher steuern, indem Sie mit ihm sprechen. Alles, was Ihre TV-Fernbedienung kann, kann Ihre Alexa. Was wir tun werden, ist die Remote-IR-Signale aufzuzeichnen und Alexa zu verwenden, um dieselben Signale auf Sprachbefehl erneut zu senden. Hier sind die Schritte, die Sie dafür benötigen, oder sehen Sie sich dieses YouTube-Video an:
Schritt 1:Erforderliche Bibliotheken herunterladen
Laden Sie die folgenden Bibliotheken herunter und fügen Sie sie in Ihre Arduino IDE-Bibliotheken ein:
- ESPAsyncTCP - https://github.com/me-no-dev/ESPAsyncTCP
- ESPAsyncUDP - https://github.com/me-no-dev/ESPAsyncUDP
- FauxMoESP - https://bitbucket.org/xoseperez/fauxmoesp> Downloads> Repository herunterladen
Schritt 2:Programmierung von NodeMCU (Wi-Fi-Modul)
Öffnen Sie die ESP8266-Alexa.ino-Skizze und laden Sie sie auf Ihre NodeMCU hoch (laden Sie die Board-Informationen vom Board Manager in Arduino IDE herunter). Alles, was Sie ändern müssen, sind die WLAN-Anmeldeinformationen und die Gerätenamen.
Sie können die Gerätenamen in der Skizze ESP8266-Alexa.ino und die Signale, die in der Skizze IR-Alexa-Send.ino ausgegeben werden, anpassen:
Schritt 3:IR-Signale von der TV-Fernbedienung lesen
Laden Sie die Skizze IR_REMOTE_read.ino auf Ihren Arduino hoch, um die Remote-Signaltreffer zu lesen und Ihre empfangenen IR-Signale als Referenz später aufzuzeichnen, wie in diesem Tutorial zu sehen:
Schritt 4:Programmierung von Arduino zum Senden von TV-IR-Signalen über Alexa
Öffnen Sie als Nächstes IR-Alexa-Send.ino in der Arduino IDE und laden Sie es auf Ihr Arduino Uno hoch (stellen Sie sicher, dass Sie die Upload-Board-Info in UNO ändern).
Verdrahten Sie beide Module mit Strom und verbinden Sie die Drähte dazwischen. Stellen Sie sicher, dass der IR-Sender an Klemme 3 von UNO angeschlossen ist. Weitere Informationen finden Sie im beigefügten Schaltplan:
Schritt 5:Testen des Projekts mit Alexa
Gehen Sie nun auf Ihrem Mobilgerät oder PC in Ihre Amazon Alexa-App, gehen Sie zu Ihrem Smart Home und klicken Sie auf "Geräte hinzufügen", um jeden der Befehle zu finden, die Sie in der ESP8266-Alexa.ino-Skizze festgelegt haben.
Sobald sie gefunden wurden, können Sie sie mit einer der folgenden Befehlsstrukturen testen:
- "Alexa, schalte GERÄTENAME ein "
- "Alexa, drehe GERÄTENAME auf"
- "Alexa, dreh den GERÄTENAME auf"
- "Alexa, schalte GERÄTENAME ein "
Code
- ESP8266-Alexa.ino
- IR-Alexa-Send.ino
- IR_REMOTE_read.ino
ESP8266-Alexa.inoC/C++
Dies muss auf den NodeMCU-Chip geschrieben werden, um ein "WEMO"-Gerät über die Arduino IDE zu emulieren#include#include #include "fauxmoESP.h"// ----- -------------------------------------------------- ----------------------// WLAN-Zugangsdaten// ---------------------- -------------------------------------------------- -----#define WIFI_SSID "linksys"#define WIFI_PASS ""#define SERIAL_BAUDRATE 115200fauxmoESP fauxmo;// -------------------------- -------------------------------------------------- -// W-lan// -------------------------------------------- ---------------------------------void wifiSetup () { // WIFI-Modul auf STA-Modus setzen WiFi.mode ( WIFI_STA); // Connect Serial.printf("[WIFI] Verbindung zu %s", WIFI_SSID); WiFi.begin(WIFI_SSID, WIFI_PASS); // Warten Sie, während (WiFi.status () ! =WL_CONNECTED) { Serial.print ( "."); Verzögerung (100); } Serial.println(); // In Verbindung gebracht! Serial.printf("[WIFI] STATION-Modus, SSID:%s, IP-Adresse:%s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str()); }// ----------------------------------------------------------- ------------------------------// Pins initialisieren// -------------- -------------------------------------------------- -------------#define RELAY_PIN1 13#define RELAY_PIN2 2#define RELAY_PIN3 14#define RELAY_PIN4 15void setup () {//Relaispins initialisieren PinMode (RELAY_PIN1, OUTPUT); digitalWrite (RELAY_PIN1, LOW); pinMode (RELAY_PIN2, AUSGANG); digitalWrite (RELAY_PIN2, LOW); pinMode (RELAY_PIN3, AUSGANG); digitalWrite (RELAY_PIN3, LOW); pinMode (RELAY_PIN4, AUSGANG); digitalWrite (RELAY_PIN4, LOW); // Serielle Schnittstelle initialisieren und Müll bereinigen Serial.begin (SERIAL_BAUDRATE); Serial.println(); Serial.println(); Serial.println ("FauxMo-Demoskizze"); Serial.println ("Nach der Verbindung bitten Sie Alexa/Echo, "Pixel ein- oder auszuschalten" oder "Relais ein- oder auszuschalten"); // Wifi wifiSetup(); // ------------------------------------------ ----------------------------------// Alexa-Gerätenamen// ------- -------------------------------------------------- -------------------- // Fauxmo fauxmo.addDevice("TV"); fauxmo.addDevice("GregsNetflix"); fauxmo.addDevice("Schlaf"); fauxmo.addDevice("Büro"); fauxmo.onMessage(callback);}// ---------------------------------------- --------------------------------------// Alexa Operation Calls// ------ -------------------------------------------------- ---------------------void callback(uint8_t device_id, const char * device_name, bool state) { Serial.printf("[MAIN] %s state:%s \n", device_name, state ? "ON" :"OFF"); if ( (strcmp(device_name, "TV") ==0) ) { // Relais sofort einstellen! if (Zustand) { digitalWrite (RELAY_PIN1, HIGH); aufrechtzuerhalten. Sonst { DigitalWrite (RELAY_PIN1, HIGH); } } if ( (strcmp(device_name, "GregsNetflix") ==0) ) { // Relay sofort einstellen! if (Zustand) { digitalWrite (RELAY_PIN2, HIGH); aufrechtzuerhalten. Sonst { DigitalWrite (RELAY_PIN2, LOW); } } if ( (strcmp(device_name, "Sleep") ==0) ) { // Relay sofort einstellen! if (Zustand) { digitalWrite (RELAY_PIN3, HIGH); aufrechtzuerhalten. Sonst { DigitalWrite (RELAY_PIN3, LOW); } } if ( (strcmp(device_name, "Office") ==0) ) { // Relay sofort einstellen! if (Zustand) { digitalWrite (RELAY_PIN4, HIGH); aufrechtzuerhalten. Sonst { DigitalWrite (RELAY_PIN4, LOW); }}}void loop () {fauxmo.handle (); Verzögerung (500); digitalWrite (RELAY_PIN1, LOW); digitalWrite (RELAY_PIN2, LOW); digitalWrite (RELAY_PIN3, LOW); digitalWrite(RELAY_PIN4, LOW);}
IR-Alexa-Send.inoC/C++
Dies wird auf das Arduino UNO hochgeladen, um Signale von NodeMCU zu lesen und die entsprechenden IR-Signale über die IR-Sendediode auszusenden#includeIRsend irsend;#define a 4#define b 5#define c 6# definiere d 7void setup () { Serial.begin (9600); pinMode (a, EINGANG); pinMode (b, EINGANG); pinMode (c, EINGANG); pinMode (d, INPUT);}void loop () { if (digitalRead (a) ==HIGH) { irsend.sendNEC (0x57E3E817, 32); // Stromcode Serial.println ( "TV"); Verzögerung (500); aufrechtzuerhalten. Wenn (digitalRead (b) ==HIGH) {irsend.sendNEC (0x57E354AB, 32); //Enter Key delay (2000); irsend.sendNEC(0x57E39867, 32); // Aufwärts-Tastenverzögerung (1000); irsend.sendNEC(0x57E39867, 32); // Aufwärts-Tastenverzögerung (1000); irsend.sendNEC(0x57E39867, 32); // Aufwärts-Tastenverzögerung (1000); irsend.sendNEC(0x57E3B44B, 32); // Rechte Taste Verzögerung (1000); irsend.sendNEC(0x57E354AB, 32); // Verzögerung eingeben (2000); irsend.sendNEC(0x57E354AB, 32); // Serial.println eingeben ("Das Büro"); Verzögerung (500); aufrechtzuerhalten. Wenn (digitalRead (c) ==HIGH) {irsend.sendNEC (0x57E38679, 32); // Optionsschaltflächenverzögerung (1500); irsend.sendNEC(0x57E3CC33, 32); // Verzögerung der Abwärtstaste (700); irsend.sendNEC(0x57E3CC33, 32); // Verzögerung der Abwärtstaste (700); irsend.sendNEC(0x57E3CC33, 32); // Verzögerung der Abwärtstaste (700); irsend.sendNEC(0x57E3CC33, 32); // Verzögerung der Abwärtstaste (700); irsend.sendNEC(0x57E3B44B, 32); // Rechte Taste Verzögerung (700); irsend.sendNEC(0x57E3B44B, 32); // Rechte Taste Verzögerung (900); irsend.sendNEC(0x57E38679, 32); // Optionstaste Serial.println ( "Sleep Timer"); Verzögerung (500); aufrechtzuerhalten. Wenn (digitalRead (d) ==HIGH) {irsend.sendNEC (0x57E34AB5, 32); // Netflix-Code Serial.println ("Gregs Netflix"); Verzögerung (500); }}
IR_REMOTE_read.inoC/C++
Verwenden Sie diesen Code auf Ihrem Arduino, um die Clicker-Hits zu lesen, die von Ihrer Fernbedienung zum IR-Empfänger kommen PIN VON LINKS NACH RECHTS MIT PINS AUF OBERSEITE * * GND - VCC - POT MIDDLE - 12 - GND - 11 - KEINE - KEINE - KEINE - KEINE - 5 - 4 - 9 - 2 - VCC - GND * * POT MUSS 5V HABEN UND GND DARAUF UND KANN DEN KNOPF DREHEN, UM LCD-KONTRAST ZU ÄNDERN */ LiquidCrystal lcd(12, 11, 5, 4, 9, 2); // 9 statt 3 (NEED FOR SENMITTER)int receiverpin =10;IRrecv irrecv(receiverpin);decode_results Ergebnisse;void setup() {lcd.begin (16, 2); pinMode (Empfängerpin, INPUT); Serial.begin (9600); irrecv.enableIRIn();}void loop() { if (irrecv.decode (&results)) { Serial.println (results.value, HEX); irrecv.resume(); lcd.clear(); lcd.print (results.value, HEX); Verzögerung (150); }}Schaltpläne
Dies ist der endgültige Schaltplan zum Verbinden des Arduino mit der NodeMCU (Wi-Fi-Modul)Herstellungsprozess
- Antibabypille
- Umstellen Ihres industriellen Steuerungssystems auf Wireless
- Gründe für die Verwendung von Duroplast-Verbundwerkstoffen in Ihrem Produkt
- Reparieren oder ersetzen Sie Ihre beschädigte Touchscreen-Steuerung?
- Aktivieren Sie die Alexa-Steuerung für Ihren Deckenventilator
- Übernehmen Sie die Kontrolle über Ihre eigenen Fahrzeugreparaturen
- Sicherung Ihres industriellen Steuerungssystems
- So verwenden Sie Ihre Bohrmaschine zum Bohren von Metall
- 8 Schritte zum Debuggen Ihres Prozessleitsystems
- Nutzen Sie PLCnext to WakeOnLan (WoL) Ihren PC