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

Volle Kontrolle über Ihren Fernseher mit Alexa und Arduino IoT Cloud

Komponenten und Verbrauchsmaterialien

Arduino Nano 33 IoT
× 1
Widerstand 330 Ohm
× 1
IR-Empfänger (generisch)
ex. VS1838B
× 1
IR-Sender (generisch)
× 1
Jumper (generisch)
× 1
Breadboard (generisch)
× 1

Apps und Onlinedienste

Arduino Web Editor
Arduino IoT Cloud
Arduino Amazon Alexa Offizieller Arduino-Skill

Über dieses Projekt

Hinweis:Dieses Tutorial könnte veraltet sein, bitte gehen Sie hier für eine aktuellere Version.

Einführung:Arduino IoT Cloud

Arduino IoT Cloud ist eine Plattform, die es jedem ermöglicht, mit Leichtigkeit IoT-verbundene Objekte zu erstellen. Um unseren Fernseher mit Alexa zu steuern, verwenden wir auch den offiziellen Arduino Alexa Skill.

Wenn Sie neu bei Arduino IoT Cloud sind, empfehlen wir Ihnen, sich zuerst dieses Einführungsprojekt anzusehen, das Ihnen einen Überblick gibt und Sie durch den Einrichtungsprozess eines der unterstützten Boards, IoT Cloud, führt Things und Eigenschaften und dich an Bord holen.

Teil 1:So steuern Sie ein Fernsehgerät

Der einfachste Weg, jede Art von Fernseher zu steuern, besteht darin, so zu tun, als ob wir eine eigene Infrarot-Fernbedienung wären. Dazu müssen wir zuhören für die Signale, die die Fernbedienung sendet, erfassen Sie die Daten und ahmen Sie sie mit unserem Arduino-Board nach. Sobald die Schaltung zusammengebaut ist, werden wir diese Skizze auf unser Board hochladen. Es übersetzt die IR-Signalbursts, die durch Drücken der Fernbedienungstaste erzeugt werden, in ein Array von Ganzzahlen ohne Vorzeichen. Lassen Sie uns die Fernbedienung auf den Arduino IR-Empfänger richten wir haben gebaut und drücken die folgenden Knöpfe:

  • STROM/STANDBY
  • KANÄLE VON 1 BIS 9
  • LAUTSTÄRKE
  • LEERER
  • Stumm
  • KANAL AUF
  • KANAL UNTEN

Wir sehen die Werte durch den Serienmonitor , gemeldet als rawData . Lassen Sie uns sie vorerst in einer Textdatei notieren und jeder Liste einen eigenen Array-Namen zuweisen (chan1 , chan2 und so weiter). Die folgenden Werte dienen nur als Referenz und werden von der TV-Fernbedienung von Samsung generiert.

CHANNEL 1unsigned 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 2unsigned int chan2[67] ={4500,4500, 550.1700, 500.1700, 550.1700, 550.550, 550.550, 550.600, 500.600, 550.600, 500 ,1700, 550.1700, 500.1700, 550.600, 500.600, 550.550, 550.600, 500.600, 550.1700, 500.600, 550.1700, 500.600, 550.550, 550.600, 500.600, 550.550, 550.650, 450.1700, 550.600, 500 ,1700, 550.1700, 500,1700, 550.1700, 550.1700, 500};CHANNEL 3unsigned int chan3[67] ={4500,4500, 500,1700, 550.1700, 550.1700, 500,600, 550.550 , 550.600, 500.600, 550.550, 550.1700, 500.1700, 550.1700, 550.550, 550.600, 500.600, 550.550, 550.600, 500.600, 550.1700, 500.1700, 550.600, 550.550, 550.550, 550.600, 550.550, 550 ,1700, 500 ,600, 550.550, 550.1700, 550.1650, 550.1700, 550.1700, 500.1700, 600};CHANNEL 4unsigned int chan4[67] ={4450,4450, 550.1700, 550.1700, 500 ,1700, 550.600, 500.600, 550.550, 600.550, 500.600, 550.1700, 500.1700, 550.1700, 550.550, 550.600, 500.600, 550.550, 550.600, 500.600, 550.550, 550.600, 500.1700, 550.600, 500.600, 550.550 , 550.600, 500.1700, 550.1700, 550.1700, 500.600, 550.1700, 500.1700, 550.1700, 550.1700, 500}; CHANNEL 5unsigned int chan5[67] ={4500,4500, 500.1700, 550.1700, 550.1700, 550.550, 550.550, 550.550, 600.550, 550.550, 550.1700, 550.1650, 550.1700, 550.550, 550.600 , 500.600, 550.550, 550.600, 500.1700, 550.600, 500.600, 550.1700, 500.600, 550.550, 550.600, 550.550, 550.550, 550.1700, 550.1700, 500.600, 550.1700, 500.1700, 550.1700 , 550.1700, 500}; CHANNEL 6unsigned int chan6[67] ={4500,4500, 550.1650, 550.1700, 550.1700, 500.600, 550.550, 550.600, 500.600, 500.600, 550.1700, 500.1700, 550.1700, 550.550, 600.550 , 500.600, 550.550, 600.550, 550.550, 550.1700, 500.600, 550.1700, 500.600, 550.550, 550.600, 500.600, 550.1700, 500.600, 550.1700, 500.600, 550.1650, 600.1650, 550.1700 , 550.1650, 600}; CHANNEL 7unsigned int chan7[67] ={4500,4500, 550.1700, 500.1700, 550.1750, 500.550, 550.600, 500.650, 500.550, 550.550, 550.1750, 500.1700, 500.1700, 550.650, 450.650 , 500.550, 550.600, 500.650, 500.550, 550.600, 500.1700, 550.1750, 500.600, 500.550, 550.600, 500.650, 500.1750, 450.1700, 550.600, 500.650, 500.1700, 500.1700, 550.1750 , 500,1700, 500}; CHANNEL 8unsigned int chan8[67] ={4450,4550, 500.1700, 550.1700, 550.1650, 550.600, 500.600, 550.550, 550.600, 500.600, 550.1700, 500.1700, 550.1700, 550.550, 550.600 , 500.600, 550.550, 550.600, 500.1700, 550.600, 500.1700, 550.1700, 500.600, 550.550, 550.650, 450.600, 550.550, 550.1700, 550.550, 550.600, 500.1700, 550.1700, 550.1700 , 500, 1700, 550}; CHANNEL 9unsigned int chan9[67] ={4450,4500, 550.1700, 550.1700, 500.1700, 550.600, 500.600, 550.550, 550.600, 500.600, 550.1700, 500.1700, 550.1700, 500.600, 550.550 , 550.600, 500.600, 550.550, 550.600, 500.1700, 550.1700, 550.1700, 500.600, 550.550, 550.550, 550.600, 500.1700, 550.600, 500.600, 550.550, 550.1700, 550.1700, 500.1700 , 550.1700, 550}; VOLUME UPunsigned int volUp[67] ={4500,4500, 550.1700, 500.1750, 500.1700, 550.600, 500.600, 500.600, 550.550, 550.600, 500.1700, 550.1700, 550.1700, 500.650, 450.600 , 550.600, 500.650, 450.650, 500.1700, 500.1750, 500.1750, 500.550, 550.600, 500.650, 500.550, 550.600, 500.650, 500.600, 500.600, 500.1700, 550.1750, 450.1750, 500.1700 , 550.1700, 500}; VOLUME DOWNunsigned int volDown[67] ={4450,4550, 500.1700, 550.1700, 550.1650, 550.600, 550.550, 550.600, 500.600, 500.600, 550.1700, 500.1700, 550.1700, 550.550, 550.600 , 500.600, 550.550, 550.600, 500.1700, 550.1700, 550.600, 500.1700, 550.600, 500.600, 500.600, 550.550, 550.600, 500.650, 500.1700, 500.650, 500.1700, 500.1750, 500.1700 , 550.1700, 500}; CHANNEL UPunsigned int chanUp[67] ={4500,4450, 550.1700, 550.1650, 550.1700, 550.550, 550.600, 550.550, 550.550, 600.550, 550.1650, 550.1700, 550.1650, 600.550, 550.550 , 550.600, 500.600, 550.550, 550.550, 550.1700, 550.550, 600.550, 550.1650, 550.600, 550.550, 550.550, 550.1700, 550.550, 550.1700, 550.1700, 550.550, 550.1650, 600.1650 , 550.1700, 550}; CHANNEL DOWNunsigned int chanDown[67] ={4500,4450, 600.1650, 550.1700, 550.1650, 550.600, 550.550, 550.550, 550.600, 500.600, 550.1700, 500.1700, 550.1700, 550.550, 550.600 , 550.550, 550.550, 550.550, 600.550, 550.550, 550.600, 500.600, 550.1650, 600.550, 550.550, 550.550, 600.1650, 550.1700, 500.1700, 600.1650, 550.550, 600.1650, 550.1700 , 500,1700, 550}; 

Teil 2:Arduino IoT Cloud

Von der Arduino IoT Cloud Seite erstellen wir ein neues Ding und vergeben Sie einen aussagekräftigen Namen. Nennen wir es TVRemoteController . Wir wählen dann das Board aus, das wir verwenden werden. Für dieses Tutorial haben wir ein Arduino Nano 33 IoT verwendet, aber wenn Sie ein anderes kompatibles Board haben, ist es auch in Ordnung, denken Sie nur daran, dass sich die Pinbelegung und das Verhalten der IR-Bibliothek ändern können. Wenn Sie Ihr Board zu diesem Zeitpunkt nicht sehen können, haben Sie möglicherweise die Erste Schritte . übersprungen Vorgehensweise, die wir oben erwähnt haben. Wenn dies der Fall ist, gehen Sie diesen Vorgang erneut durch.

Sobald dies erledigt ist, fügen wir eine Eigenschaft hinzu zu unserem Ding , es wird unser Fernsehgerät darstellen. Unter dem Smart Home Kategorie, wählen Sie "TV" als Eigenschaftstyp, stellen Sie es als "Lesen &Schreiben" ein und wählen Sie unter "Aktualisieren" "Wenn sich der Wert ändert".

Hier ist es, was die Eigenschaften Sicht auf unser Ding sollte an dieser Stelle so aussehen:

Teil 3:Arduino-Webeditor

Es ist an der Zeit, auf die Schaltfläche "SKETCH BEARBEITEN" zu klicken, die uns zum Web-Editor führt, wo wir benutzerdefinierten Code zu der von IoT Cloud automatisch generierten Skizze hinzufügen können.

Das erste, was wir hinzufügen müssen, ist die IR Remote-Bibliothek von Ken Shirriff.

#include  

Wir müssen dann ein zweidimensionales Array für unsere Kanäle und 6 Arrays für die benötigten Befehle einrichten. Wenn Sie sich erinnern, haben wir in Teil 1 einige IR-Daten erfasst, die wir jetzt verwenden, um unsere Arrays zu füllen

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

Lassen Sie uns dann die IR-Bibliothek und die erforderliche Frequenz einrichten (für diese Art von Anwendung sind es immer 38KHz)

IRsend irsend;const int freq =38; 

Wir benötigen auch eine Funktion, um IR-Befehle zu senden und die eingebaute LED zu blinken (zu diesem Zeitpunkt hauptsächlich zu Debugging-Zwecken). Der verwendete Verzögerungswert hängt von der Marke und dem Modell Ihres Fernsehers ab. Sie können ihn also gerne anpassen, wenn die Dinge nicht wie erwartet funktionieren (falsche Befehle oder keine Befehle empfangen).

void sendIR(const unsigned int buf[]) { digitalWrite(LED_BUILTIN, HIGH); irsend.sendRaw(buf, 67, freq); Verzögerung (300); digitalWrite(LED_BUILTIN, LOW);} 

Der letzte Schritt besteht darin, den generierten Rückruf onTvChange() . abzuschließen mit einem benutzerdefinierten Code, um IR-Befehle zu senden, wenn die TV-Eigenschaft durch Alexa-Befehle geändert wird. Wenn zum Beispiel die Lautstärke erhöht wird, müssen wir virtuell die Taste Lautstärke erhöhen . drücken Wenn der Kanal auf 7 eingestellt ist, müssen wir die Sequenz für die Taste von Kanal 7 senden, und so weiter.

void onTvChange() {Serial.println("=================="); Serial.println("Switch:"+String(tv.getSwitch())); Serial.println("Volume:"+String(tv.getVolume())); Serial.println("Kanal:"+String(tv.getChannel())); Serial.println("Stumm:"+String(tv.getMute())); Serial.println("=================="); if (zuerst){ prevSwitch =tv.getSwitch(); prevVolume =tv.getVolume(); prevChannel =tv.getChannel(); prevMute =tv.getMute(); zuerst =falsch; Rückkehr; } // Lautstärke 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 angefordert:"+String(tv.getVolume())+"Set:"+String(k)); } prevVolume =tv.getVolume(); aufrechtzuerhalten. Sonst if (tv.getVolume () =tv.getVolume(); k--) { sendIR(volDown); Serial.println("Volume geändert:"+String(tv.getVolume())+"Set:"+String(k)); } prevVolume =tv.getVolume(); } // Stummschaltung geändert if (tv.getMute() !=prevMute &&tv.getMute()) { prevMute =tv.getMute(); sendIR(stumm); Serial.println ( "Mute geändert:" + String (tv.getMute ())); } else if (tv.getMute() !=prevMute &&!tv.getMute()) { prevMute =tv.getMute(); sendIR(stumm); Serial.println ( "Mute geändert:" + String (tv.getMute ())); } // Kanal geändert if (tv.getChannel() !=prevChannel) { int newChannel =tv.getChannel(); if (newChannel> 0 &&newChannel <10) { sendIR (chan[newChannel-1]); aufrechtzuerhalten. Sonst if (newChannel> 9) { if (newChannel> prevChannel) { for (int ch =prevChannel; ch  newChannel; ch--) { sendIR (chanDown); Serial.println("Chan angefordert:"+String(newChannel)+"Set:"+String(ch)); } } } prevChannel =newChannel; Serial.println("Kanal geändert:"+String(tv.getChannel())); } // Ein/Aus geändert if (tv.getSwitch() !=prevSwitch) { prevSwitch =tv.getSwitch(); if (tv.getSwitch()) { sendIR(chan[6]); aufrechtzuerhalten. Sonst { sendIR (onoff); } Serial.println("Schalter geändert:"+String(tv.getSwitch())); } 

Teil 4:Amazon Alexa

Wir benötigen jetzt die Amazon Alexa App die im Apple App Store oder im Google Play Store heruntergeladen werden kann. Melden Sie sich nach der Installation mit Ihrem bestehenden Konto an oder erstellen Sie ein neues.

Gehen wir die erforderlichen Schritte durch, um den Arduino Alexa Skill zu installieren und ihn für den Zugriff und die Steuerung unseres Fernsehers zu konfigurieren. Wir folgen der folgenden Bilderfolge, um alle erforderlichen Schritte zu sehen.

Wir sind fertig, es ist jetzt an der Zeit, unseren Fernseher per Sprachbefehl zu steuern und Dinge zu fragen wie

  • "Alexa, dreh den Fernseher lauter."
  • “Alexa, TV stumm“ oder „Alexa, TV stumm.“
  • "Alexa, nächster Kanal im Fernsehen."

Viel Spaß beim Spielen mit Alexa und IoT Cloud. Wenn Sie Fragen haben und / oder dieses Projekt bauen, lassen Sie es uns in den Kommentaren unten wissen.

Danke,

Das Arduino-Team

Code

Arduino

Schaltpläne


Herstellungsprozess

  1. Aktivieren Sie die Alexa-Steuerung für Ihren Deckenventilator
  2. ULTRASCHALLLEVITATION-Maschine mit ARDUINO
  3. Universelle Fernbedienung mit Arduino, 1Sheeld und Android
  4. DIY-Voltmeter mit Arduino und Smartphone
  5. Herzfrequenzmesser mit IoT
  6. Einsatz des IoT zur Fernsteuerung eines Roboterarms
  7. IOT - Smart Jar mit ESP8266, Arduino und Ultraschallsensor
  8. Kennen Sie die Temperatur Ihres Zuhauses von überall mit der Arduino Cloud!
  9. Steuern Sie Arduino Rover mit Firmata und Xbox One-Controller
  10. Arduino-Befeuchtersteuerung