Universalfernbedienung für Arduino. Übertragen von Daten im Infrarotbereich mit Arduino. Anschließen eines Infrarotempfängers an Arduino

Im Internet gibt es viele Artikel darüber, wie man mit Arduino eine eigene TV-Fernbedienung baut, aber ich brauchte eine Universalfernbedienung, um meinen Fernseher und meinen Mediaplayer zu steuern. Der Hauptvorteil meiner Universalfernbedienung besteht darin, dass die Tasten in der Android-Telefonanwendung einen doppelten Zweck haben, aber schauen Sie sich das Video an.



Die Fernbedienung ist sehr praktisch, da fast dieselben Tasten auf dem Bildschirm zur Steuerung des Fernsehers und des Players verwendet werden. Ein Unterschied besteht darin, dass „ EIN V„im TV-Steuerungsmodus wechselt zu einer Taste“ " (Stopp) beim Umschalten in den Player-Steuerungsmodus. Die Bilder zeigen zwei Modi, links ist der TV-Steuerungsmodus, rechts ist der Player-Steuerungsmodus.

Nun erzähle ich Ihnen ein wenig über die Erstellung einer solchen Fernbedienung. Als Gerät habe ich die Fernbedienung für den ERGO TV und die Fernbedienung für den Mediaplayer DUNE HD TV101W verwendet.

Um Daten von den Fernbedienungen zu empfangen, habe ich einen Infrarotsensor TSOP1138 (analog zu TSOP4838) mit einer Betriebsfrequenz von 38 kHz verwendet und ihn nach dem Schema an das Arduino-Board angeschlossen:

Diese Skizze wird nicht benötigt, um die Codierung der Datenübertragung zu ermitteln und den Code der Fernbedienungstasten zu lesen.

Im Sketch in der Zeile int RECV_PIN = 11; Geben Sie unsere PIN-Nummer 4 an

Öffnen Sie nach dem Hochladen der Skizze den „Hafenmonitor“ und sehen Sie sich durch Drücken der Fernbedienungstasten die empfangenen Daten an.

Das Bild zeigt ein Beispiel für das Scannen des Netzschalters auf der TV-Fernbedienung und der Player-Fernbedienung. Jetzt erstellen wir eine Tabelle für Tastencodes.

Ich habe es wie auf dem Foto oben bekommen. Unter der Inschrift Fernseher Tastencodes der TV-Fernbedienung; unter der Inschrift Spieler- Codes von der Media-Player-Fernbedienung.

Jetzt trennen wir unseren Infrarot-Signalempfänger von der Arduino-Platine und schließen daran das HC-05-Bluetooth-Modul und eine Infrarot-LED gemäß der Abbildung auf dem Foto an.

Danach gehen wir direkt zur Skizze über.

Skizzieren

#enthalten IRsend irsend; int y = 1; void setup() ( Serial.begin(9600); ) void loop() ( if (Serial.available() > 0) ( int x = Serial.read(); if (x == 49) ( y = 1; ) if (x == 50) ( y = 2; ) if (y == 1) ( // Tastencodes für die TV-Fernbedienung if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); Verzögerung(40 ); ); (x == 100) ( irsend.sendNEC(0x807FF00F, 32); Verzögerung(40); ) if (x == 101) ( irsend.sendNEC(0x807F30CF, 32); Verzögerung(40); ) if (x == 102) ( irsend.sendNEC(0x807FB04F, 32); Verzögerung(40); ) if (x == 103) ( irsend.sendNEC(0x807F9867, 32); Verzögerung(40); ) if (x == 104) ( irsend .sendNEC(0x807F58A7, 32); Verzögerung(40); ) if (x == 105) ( irsend.sendNEC(0x807FD827, 32); Verzögerung(40); ) if (x == 106) ( irsend.sendNEC(0x807F38C7 , 32); Verzögerung(40); ) if (x == 107) ( irsend.sendNEC(0x807F48B7, 32); Verzögerung(40); ) if (x == 108) ( irsend.sendNEC(0x807FB847, 32); Verzögerung(40); ) if (x == 109) ( irsend.sendNEC(0x807F6897, 32); Verzögerung(40); ) ) if (y == 2) ( //Codes der Media-Player-Fernbedienungstasten if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); delay(40); ) if (x == 98) ( irsend. sendNEC(0xFDE01F, 32); Verzögerung(40); ) if (x == 99) ( irsend.sendNEC(0xFD18E7, 32); Verzögerung(40); ) if (x == 100) ( irsend.sendNEC (0xFDE817, 32); Verzögerung(40); ) if (x == 101) ( irsend.sendNEC(0xFDA857, 32); Verzögerung(40); ) if (x == 102) ( irsend.sendNEC(0xFD6897, 32 ); Verzögerung (40); ) if (x == 103) ( irsend.sendNEC(0xFDA857, 32); Verzögerung(40); ) if (x == 104) ( irsend.sendNEC(0xFD6897, 32); Verzögerung( 40); ) if (x == 105) ( irsend.sendNEC(0xFDE817, 32); Verzögerung(40); ) if (x == 106) ( irsend.sendNEC(0xFD18E7, 32); Verzögerung(40); ) if (x == 107) ( irsend.sendNEC(0xFD9867, 32); Verzögerung(40); ) if (x == 108) ( irsend.sendNEC(0xFD28D7, 32); Verzögerung(40); ) if (x = = 109) ( irsend.sendNEC(0xFD20DF, 32); Verzögerung(40); ) ) ) )


In der Skizze müssen Sie die Tastencodes bearbeiten, und zwar in den Zeilen:

Wenn (x == 97) ( irsend.sendNEC(0x807F08F7, 32); Verzögerung(40);
Ändern Sie den Wert 807F08F7 in:

If (y == 1) ( //Tastencodes für die TV-Fernbedienung if (x == 97) ( irsend.sendNEC(0x12345678, 32); delay(40); )
Wobei 12345678 der Code für Ihre Schaltfläche ist.

Nachdem Sie die Skizze mit Ihren Tastencodes bearbeitet haben, laden Sie die Skizze auf das Arduino-Board hoch und fahren mit der Installation der Anwendung auf Ihrem Telefon fort.

Wir schalten Bluetooth im Telefon ein, suchen nach unserem Gerät, erstellen ein Paar und starten dann die Anwendung Pult am Telefon.

Beim Start wird ein Bildschirm mit einem roten Bluetooth-Symbol in der unteren rechten Ecke angezeigt, das anzeigt, dass wir nicht mit unserem Gerät verbunden sind.

Klicken Sie anschließend auf dieses Symbol. Wir sollten ein Fenster mit einer Liste aller verfügbaren Bluetooth-Geräte sehen, in dem wir unser Gerät zum Verbinden auswählen.

Jetzt sind wir wieder auf dem Hauptbildschirm und können bereits den Fernseher steuern:

Um in den Steuermodus zu wechseln, müssen wir die Taste mit der Bezeichnung drücken "Spieler". Wie ich bereits sagte, wird sich unsere Schaltfläche mit der Bezeichnung „AV“ in eine Schaltfläche „ ":

Um die Verbindung zu unserem Gerät zu trennen, halten Sie einfach die „Power“-Taste einige Sekunden lang gedrückt.

So, ein paar Fotos von meinem fertigen Gerät.

Es ist ganz gut gelaufen, wie es scheint. Ich warte auf Kommentare zum Artikel.

Es sendet ein Paket codierter und modulierter Daten an die IR-LED, und wenn die Taste gedrückt gehalten wird, werden auch Pakete wiederholt.

  • Unsichtbares Infrarotlicht der IR-LED trifft auf das Trima IR-Empfängermodul und wird dort in demodulierte elektrische Impulse umgewandelt.
  • Die iarduino_IR-Bibliothek liest und dekodiert kontinuierlich Impulse vom IR-Empfänger (unter Verwendung des zweiten Arduino-Hardware-Timers).
  • Im Schleifencode vergleichen wir die von der Bibliothek dekodierten Daten mit den dem Gerät (Lampe) zugewiesenen Daten und ändern bei Übereinstimmung den Zustand („1“/„0“) am Eingang des Trema-Moduls Solid State Relais schalten daher das Gerät (Lampe) ein oder aus.
  • Das Gerät kann nützlich sein, wenn Sie ungenutzte Tasten auf der Fernbedienung des Fernsehers (z. B. die farbigen Teletexttasten) zur Steuerung der Beleuchtung im Raum belegen.

    Anstelle von Glühlampen können Sie jedes ~220-V-Netzwerkgerät mit einer Stromaufnahme von bis zu 2 A anschließen.

    Wir brauchen:

    • IR-Fernbedienung x 1 Stück (Jede TV-IR-Fernbedienung reicht aus)
    • Geräte (Lampen), die wir steuern x 3 Stk.

    Um das Projekt umzusetzen, müssen wir die Bibliothek installieren:

    • Bibliothek iarduino_IR für die Arbeit mit IR-Transceivern
      WICHTIG: Die Bibliothek verwendet einen zweiten Hardware-Timer.
      KEINE PWM-SIGNALE AN 3 ODER 11 AUSGANG AUSGEBEN!

    Wie Sie Bibliotheken installieren, erfahren Sie auf der Wiki-Seite – Bibliotheken in der Arduino IDE installieren.

    Video:

    Schaltplan:

    Diese Schaltung verwendet ausschließlich digitale Module; sie können an alle (sowohl digitalen als auch analogen) Arduino-Pins angeschlossen werden. Beispielsweise haben wir alle Module an analoge Ausgänge angeschlossen. Nicht jeder weiß, dass analoge Arduino-Pins wie normale digitale Pins funktionieren können, sodass Sie digitale Signale in Form von logischen „0“ und „1“ empfangen (von einem IR-Empfänger) und übertragen (an Halbleiterrelais) können.

    Wenn Sie Geräte mit anderen Pins verbinden, müssen deren Nummern in der zweiten (IR-Objektdeklaration) und dritten (PinRelay-Array-Deklaration) Zeile der Skizze angegeben werden. Der Programmcode ist so geschrieben, dass Sie so viele Relais anschließen können, wie freie Pins auf Ihrem Arduino vorhanden sind, indem Sie einfach die Pin-Nummern in der dritten Zeile der Skizze auflisten (PinRelay-Array-Deklaration).

    Arbeitsalgorithmus:

    • Am Anfang In der Skizze wird der Tastencode der IR-Fernbedienung nacheinander jedem Halbleiterrelais zugewiesen. Zunächst blinkt die LED und der Stromkreis des Halbleiterrelais wird geschlossen, dessen Ausgang zunächst angezeigt wird. Wenn Sie eine beliebige Taste auf der IR-Fernbedienung drücken, wird der Code für diese Taste diesem Relais zugewiesen und das nächste beginnt zu blinken usw., bis allen Relais Tasten auf der IR-Fernbedienung zugewiesen wurden.
    • Nach VereinbarungTastenfunktionen, alle Relais sind ausgeschaltet. Wenn Sie die Taste der IR-Fernbedienung drücken, schaltet sich das Relais ein, dem der Code dieser Taste zugewiesen ist. Wenn Sie die angegebene Taste erneut drücken, wird das Relais ausgeschaltet. Das Gerät reagiert nicht auf das Drücken von Tasten, deren Code keinem Relais zugewiesen wurde.
    • Wenn Wenn Sie nicht bei jedem Start Schaltflächencodes zuweisen möchten, geben Sie diese bei der Deklaration des varRelay-Arrays explizit an und entfernen Sie die for- und while-Schleifen aus dem Setup-Code.
    • Finden Sie den Code für jede Schaltfläche heraus Sie können die folgende Zeile schreiben: if(IR.check())(Serial.println(IR.data);)

    Programmcode:

    #enthalten // Bibliothek verbinden, um mit dem IR-Empfänger zu arbeiten iarduino_IR_RX IR(A5); // ein IR-Objekt für die Arbeit mit einem IR-Empfänger deklarieren (zeigt jeden Pin an, an den der IR-Empfänger angeschlossen ist) const uint8_t pinRelay = (A1,A2,A3); // ein Array deklarieren, das die Nummern aller Pins (digital oder analog) angibt, an die Halbleiterrelais angeschlossen sind const uint8_t allRelay = sizeof(pinRelay); // eine Konstante deklarieren, indem ihre Anzahl an Elementen im PinRelay-Array (Anzahl der Relais) übergeben wird uint32_t varRelay; // ein Array mit Codes (Befehlen) des IR-Empfängers einschließlich Relais deklarieren bool modRelay; // ein Array mit Relay-Zuständen deklarieren uint8_t setRelay; // eine Variable mit der Anzahl der Relais deklarieren, für die der Befehl vom IR-Empfänger geschrieben wird void setup())( IR.begin(); // Arbeit mit dem IR-Transceiver initialisieren for(uint8_t i=0; i Das IR-Empfängermodul in Kombination mit einer IR-Fernbedienung ermöglicht Ihnen die einfache Fernsteuerung des Arduino-Boards.

    Es handelt sich lediglich um einen IR-Empfänger VS1838B, auf dessen Platine der vom Hersteller empfohlene Kabelbaum installiert ist.

    Um mit diesem Modul sofort arbeiten zu können, benötigen Sie eine Fernbedienung mit einer Frequenz von 38 kHz.

    Der Vorteil dieser Platine ist der Push-in-Anschluss, der es Ihnen ermöglicht, den IR-Empfänger ohne Löten durch einen anderen zu ersetzen, der mit der für Ihr Projekt erforderlichen Frequenz arbeitet.

    Wichtigste technische Merkmale:

    Versorgungsspannung: 2,7 - 5,5 V

    Modulationsfrequenz: 38 kHz

    Temperaturbereich: - 20 ... + 80°C

    Schnittstelle: Digital

    Anschließen an Arduino

    Das Modul ist mit einem dreipoligen 2,54-mm-Stecker ausgestattet

    : wird mit dem GND-Pin verbunden

    : Anschluss an +5V-Ausgang

    : verbindet sich mit digitalem Pin (D2 im Beispiel)

    Ein Beispiel für die Arbeit in der Arduino-Umgebung

    Um mit diesem Modul arbeiten zu können, müssen Sie die IRRemote-Bibliothek installieren

    Laden Sie es herunter, entpacken Sie es und legen Sie es im Bibliotheksordner im Arduino-Ordner ab. Wenn die Arduino-IDE zum Zeitpunkt des Hinzufügens der Bibliothek geöffnet war, starten Sie die Umgebung neu.

    Tasten der Fernbedienung lesen

    Um die Messwerte der Fernbedienung abzulesen, füllen Sie die Skizze unten aus. Es gibt die Codierung der gedrückten Tasten an den Port aus.

    Als Beispiel verwenden wir die Fernbedienung, wie im Bild, weil Diese Art von Fernbedienung ist im Set enthalten

    Über die Unterschiede in der Bedienlogik verschiedener Fernbedienungen können Sie im Originalartikel eines Mitglieds unserer Community unter dem Spitznamen nachlesen

    Beispielcode:

    #enthalten int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); //Erstellen Sie ein Objekt zum Empfangen eines Signals von einem bestimmten Port decode_results Ergebnisse; //Variable, die das Ergebnis speichert Leere aufstellen () { Seriell // Beginnen Sie mit dem Empfang) Leere Schleife() ( if (irrecv.decode(&results)) //Beim Empfang eines Signals... { Seriell.println(results.value); //...den Wert an die serielle Schnittstelle ausgeben irrecv.resume(); ) )

    Im Portmonitor sollte Folgendes angezeigt werden:

    Indem wir jede Taste fast eine Sekunde lang gedrückt halten, erhalten wir etwa 10 Codes. Der erste ist der Tastencode. Und danach erscheint ein Standardcode, der meldet, dass die Schaltfläche klemmt.

    Steuerung des Arduino-Boards mit der Fernbedienung

    Lassen Sie uns die LED auf der Arduino-Platine (D13) aufleuchten lassen, wenn die erste Taste codiert ist, und ausschalten, wenn die zweite Taste codiert ist.

    Beispielcode:

    // Getestet auf Arduino IDE 1.0.3#enthalten int RECV_PIN = 2; int LED = 13; IRrecv irrecv(RECV_PIN); decode_results Ergebnisse; Leere aufstellen () { Seriell.begin(9600); irrecv.enableIRIn(); // Starten Sie den Empfänger pinMode(LED, AUSGANG); ) Leere Schleife() ( if (irrecv.decode(&results)) ( Seriell.println(results.value); if (results.value == 16769565) // Beim Empfang von Kodierung 1( digitalWrite(LED, HIGH); // Schalte die LED ein) if (results.value == 16761405) // Beim Empfang von Kodierung 2( digitalWrite(LED, LOW); // Schalte die LED aus) irrecv.resume(); // Den nächsten Wert abrufen } }

    Guten Tag allerseits (oder Nacht, wie Sie möchten), beginnen wir mit einer lyrischen Einleitung. Heutzutage haben viele Menschen Häuser Fernseher mit Fernbedienung, Tuner, DVD-Player . Viele Menschen (und Familien) können sich ihr Privatleben ohne eine Fernbedienung in der Hand nicht vorstellen. Stimmen Sie zu – wie großartig es ist, der Herr über Haushaltsgeräte zu sein und diesen Hardware-Teilen jederzeit Ihren Willen zu diktieren. In diesem Artikel möchten wir uns näher mit der Fernbedienungstechnik befassen und einige Anwendungsbeispiele für unsere Bedürfnisse nennen.

    Was brauchen wir also als Komponenten für unser Experiment? Als eine Option Es werden fertige IR-Fernbedienungs- und IR-Empfängermodule verkauft. Aber wir wollen nicht warten und Geld bezahlen, also werden wir härter agieren. Nehmen wir als Grundlage eine Fernbedienung unbekannter Herkunft, wir haben auch ein Stück Platine von einem chinesischen Tuner, auf dem ein Infrarotempfänger aufgelötet ist. Auf dem Foto unten sehen Sie diese Komponenten. Ehrlich gesagt wurde die Fernbedienung im unnötigen Müll auf dem Schreibtisch gefunden und die Platine mit dem IR-Empfänger wurde aus der nächsten Radio-Reparaturwerkstatt mitgenommen.

    Na dann, wie ich immer sagte Hannibal - „Vorwärts nach Karthago“ . Wir müssen nur den Empfänger ablöten und an die Platine anschließen Arduino nach folgendem Schema...

    • Anschließen eines IR-Empfängers

    IR-Empfänger Das aus der Platine gelötete Bauteil weist keine Markierungen auf, es handelt sich lediglich um ein weiteres unbekanntes chinesisches Radiobauteil, von dem Tausende hergestellt wurden. Kurz gesagt können wir sagen: In einem Gebäude vereint es sichFotodiode, Vorverstärker und Treiber . Die Ausgabe wird durch eine Normale gebildetTTL-Signal ohne Polsterung, geeignet für die Weiterverarbeitung durch den Mikrocontroller. Die Trägerfrequenz beträgt möglicherweise (!) 36 kHz, aber das ist jetzt nicht mehr so ​​wichtig... Versuchen wir einfach, es an die Platine anzuschließenArduino , das Bedingungsdiagramm gibt die gewünschte Pinbelegung dieses Geräts an. Im Diagramm unten ist die Form des Gehäuses, aus dem unseres besteht, rot hervorgehobenIR-Empfänger , grün hervorgehoben - Pinbelegung, über die es mit der Platine verbunden istArduino .

    Aufmerksamkeit!!! Im Internet gibt es viele Pinbelegungspläne für Geräte in einem solchen Gehäuse (TSOP). Die in diesem Artikel angegebenen Pinbelegungen stimmen möglicherweise nicht mit denen im Internet überein, aber so hängt alles mit uns zusammen. Wenn sich der IR-Empfänger beim Anschließen zu erwärmen beginnt, schalten Sie den zusammengebauten Stromkreis sofort aus. Dies bedeutet, dass die Anschlussbelegung nicht mit der tatsächlichen übereinstimmt und Sie sie fast zufällig auswählen müssen. Genau das haben wir gemacht, denn die im Internet gefundenen Schaltungen waren für unseren IR-Empfänger nicht geeignet. Hier geht es generell vor allem darum, das Arduino-Board nicht zu verbrennen, seien Sie vorsichtig!!!

    • IRremote-Bibliothek

    Es hängt also alles zusammen. Es gibt eine Bibliothek zum Lesen von Codes von der Fernbedienung IRremote.h Mit seiner Hilfe werden wir unsere Fernbedienung bzw. die Tastencodes studieren. Zukünftig werden wir die ausgelesenen Codes für eigene Zwecke nutzen. Die Skizze, mit der Tastencodes gelesen werden, wird in den Beispielen dieser Bibliothek dargestellt, heißt es IRrecvDemo. Aufmerksamkeit!!! Beim Kompilieren der Skizze kommt es zu einem Fehler; ganz am Anfang müssen Sie zwei weitere Plug-In-Bibliotheken hinzufügen:

    #include "boarddefs.h" //Zusätzliche Bibliothek #include "IRremote.h" #include "IRremoteInt.h" //Zusätzliche Bibliothek int RECV_PIN = 2; //Pin zum Anschließen des Ausgangssignals vom IR-Empfänger //Erstellen Sie eine Instanz der IRrecv-Klasse und übergeben Sie den Pin zum Anschließen des Signals vom IR-Empfänger als Parameter IRrecv irrecv(RECV_PIN); decode_results Ergebnisse; //Variable zum Speichern des empfangenen Codes der gedrückten Taste void setup() ( Serial.begin(9600); irrecv.enableIRIn(); //Funktion des IR-Empfängers aktivieren ) void loop() ( if (irrecv.decode( &results)) //Wenn ein Ereignis aufgetreten ist/die Taste gedrückt wurde ( Serial.println(results.value, HEX); //Den Code der gedrückten Taste in hexadezimaler Form an den Portmonitor ausgeben irrecv.resume(); // Lesen Sie den nächsten Wert/die nächste Schaltfläche ) Verzögerung(100 ); )

    Nachdem die Skizze auf die Tafel hochgeladen wurdeArduino(wir gebrauchen Arduino Nano auf dem Schild I/O Wireless Shield für Nano ), kann geöffnet werden Portmonitor und sehen Sie, welche Codes angezeigt werden, wenn Sie die Tasten auf der Fernbedienung drücken. Das Ergebnis der Skizze ist im folgenden Screenshot dargestellt:

    Übrigens, wie Portmonitor Wir verwenden unsere bewährte Software. Wenn jemand Interesse hat, kann er den Artikel lesen und Serial Monitor Pro herunterladen.

    #define KEY_ONOFF 0x807F807F //Ein/Aus-Taste #define KEY_MUTE 0x807F48B7 //Mute-Taste #define KEY_1 0x807F00FF //Taste 1 #define KEY_2 0x807FE01F //Taste 2 #define KEY_3 0x807F609F //K-Taste 3 #define KEY_4 0x80 7F20DF //Knopf 4 #define KEY_5 0x807FD02F //Button 5 #define KEY_6 0x807F50AF //Button 6 #define KEY_7 0x807F10EF //Button 7 #define KEY_8 0x807FF00F //Button 8 #define KEY_9 0x807F708F //Button 9 #define KEY_0 0x807FC83 7 //Taste 0

    Und jetzt ist im Allgemeinen alles bereit für den Abschlusstest – dies wird ein elementarer Test zur Steuerung des Ein-/Ausschaltens von Relaismodulen sein. Hier ist eine kleine Aufgabe:

    • Wir verwenden zwei Relaismodule
    • Wir binden Relais Nr. 1 an die Taste „1“ der Fernbedienung
    • Relais Nr. 2 ist mit der Taste „2“ der Fernbedienung verbunden
    • Das Einschalten eines der Relaismodule erfolgt durch Drücken der Taste, der es zugewiesen ist
    • Das Ausschalten eines beliebigen Relaismoduls erfolgt ebenfalls durch Drücken der ihm zugeordneten Taste
    • Durch Drücken der Ein/Aus-Taste werden beide Relaismodule bedingungslos ausgeschaltet (sofern sie eingeschaltet waren oder eines von ihnen eingeschaltet ist).

    Eine Skizze, die die obige Aufgabe umsetzt:

    #include „boarddefs.h“ //Zusätzliche Bibliothek #include „IRremote.h“ #include „IRremoteInt.h“ //Zusätzliche Bibliothek #define KEY_ONOFF 0x807F807F //Ein/Aus-Schaltfläche #define KEY_1 0x807F00FF //Schaltfläche 1 #define KEY_2 0x807FE01F //Button 2 #define RELOUT1 3 //Ausgangsport für Relais 1 #define RELOUT2 4 //Ausgangsport für Relais 2 int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results Ergebnisse; statischer boolescher Wert REL1_ONOFF = false; statischer boolescher Wert REL2_ONOFF = false; void setup() ( pinMode(RELOUT1, OUTPUT); pinMode(RELOUT2, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); // Starten Sie den Empfänger ) void loop() ( if (irrecv.decode(&results )) ( switch(results.value) ( ​​​​case(KEY_ONOFF): REL1_ONOFF = false; REL2_ONOFF = false; break; case(KEY_1): if(REL1_ONOFF) REL1_ONOFF = false; else REL1_ONOFF = true; break; case(KEY_2 ): if(REL2_ONOFF) REL2_ONOFF = false; else REL2_ONOFF = true; break; ) irrecv.resume(); ) digitalWrite(RELOUT1, REL1_ONOFF); digitalWrite(RELOUT2, REL2_ONOFF); delay(100); )

    Und am Ende des Artikels gibt es ein Video, das die Arbeit beider Skizzen demonstriert. Wenn Sie möchten und über kreative Vorstellungskraft verfügen, können Sie die Plug-in-Flotte erweitern und alles komplexer verwalten. In unserem Artikel haben wir versucht, ein grundlegendes Beispiel für den Einsatz dieser Technologie zu geben. Vielen Dank für Ihre Aufmerksamkeit und viel Spaß beim Zuschauen!!!

    Bitte aktivieren Sie Javascript, damit Kommentare funktionieren.

    Im Internet gibt es viele Artikel darüber, wie man mit Arduino eine eigene TV-Fernbedienung baut, aber ich brauchte eine Universalfernbedienung, um meinen Fernseher und meinen Mediaplayer zu steuern. Der Hauptvorteil meiner Universalfernbedienung besteht darin, dass die Tasten in der Android-Telefonanwendung einen doppelten Zweck haben, aber schauen Sie sich das Video an.



    Die Fernbedienung ist sehr praktisch, da fast dieselben Tasten auf dem Bildschirm zur Steuerung des Fernsehers und des Players verwendet werden. Ein Unterschied besteht darin, dass „ EIN V„im TV-Steuerungsmodus wechselt zu einer Taste“ " (Stopp) beim Umschalten in den Player-Steuerungsmodus. Die Bilder zeigen zwei Modi, links ist der TV-Steuerungsmodus, rechts ist der Player-Steuerungsmodus.

    Nun erzähle ich Ihnen ein wenig über die Erstellung einer solchen Fernbedienung. Als Gerät habe ich die Fernbedienung für den ERGO TV und die Fernbedienung für den Mediaplayer DUNE HD TV101W verwendet.

    Um Daten von den Fernbedienungen zu empfangen, habe ich einen Infrarotsensor TSOP1138 (analog zu TSOP4838) mit einer Betriebsfrequenz von 38 kHz verwendet und ihn nach dem Schema an das Arduino-Board angeschlossen:

    Diese Skizze wird nicht benötigt, um die Codierung der Datenübertragung zu ermitteln und den Code der Fernbedienungstasten zu lesen.

    Im Sketch in der Zeile int RECV_PIN = 11; Geben Sie unsere PIN-Nummer 4 an

    Öffnen Sie nach dem Hochladen der Skizze den „Hafenmonitor“ und sehen Sie sich durch Drücken der Fernbedienungstasten die empfangenen Daten an.

    Das Bild zeigt ein Beispiel für das Scannen des Netzschalters auf der TV-Fernbedienung und der Player-Fernbedienung. Jetzt erstellen wir eine Tabelle für Tastencodes.

    Ich habe es wie auf dem Foto oben bekommen. Unter der Inschrift Fernseher Tastencodes der TV-Fernbedienung; unter der Inschrift Spieler- Codes von der Media-Player-Fernbedienung.

    Jetzt trennen wir unseren Infrarot-Signalempfänger von der Arduino-Platine und schließen daran das HC-05-Bluetooth-Modul und eine Infrarot-LED gemäß der Abbildung auf dem Foto an.

    Danach gehen wir direkt zur Skizze über.

    Skizzieren

    #enthalten IRsend irsend; int y = 1; void setup() ( Serial.begin(9600); ) void loop() ( if (Serial.available() > 0) ( int x = Serial.read(); if (x == 49) ( y = 1; ) if (x == 50) ( y = 2; ) if (y == 1) ( // Tastencodes für die TV-Fernbedienung if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); Verzögerung(40 ); ); (x == 100) ( irsend.sendNEC(0x807FF00F, 32); Verzögerung(40); ) if (x == 101) ( irsend.sendNEC(0x807F30CF, 32); Verzögerung(40); ) if (x == 102) ( irsend.sendNEC(0x807FB04F, 32); Verzögerung(40); ) if (x == 103) ( irsend.sendNEC(0x807F9867, 32); Verzögerung(40); ) if (x == 104) ( irsend .sendNEC(0x807F58A7, 32); Verzögerung(40); ) if (x == 105) ( irsend.sendNEC(0x807FD827, 32); Verzögerung(40); ) if (x == 106) ( irsend.sendNEC(0x807F38C7 , 32); Verzögerung(40); ) if (x == 107) ( irsend.sendNEC(0x807F48B7, 32); Verzögerung(40); ) if (x == 108) ( irsend.sendNEC(0x807FB847, 32); Verzögerung(40); ) if (x == 109) ( irsend.sendNEC(0x807F6897, 32); Verzögerung(40); ) ) if (y == 2) ( //Codes der Media-Player-Fernbedienungstasten if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); delay(40); ) if (x == 98) ( irsend. sendNEC(0xFDE01F, 32); Verzögerung(40); ) if (x == 99) ( irsend.sendNEC(0xFD18E7, 32); Verzögerung(40); ) if (x == 100) ( irsend.sendNEC (0xFDE817, 32); Verzögerung(40); ) if (x == 101) ( irsend.sendNEC(0xFDA857, 32); Verzögerung(40); ) if (x == 102) ( irsend.sendNEC(0xFD6897, 32 ); Verzögerung (40); ) if (x == 103) ( irsend.sendNEC(0xFDA857, 32); Verzögerung(40); ) if (x == 104) ( irsend.sendNEC(0xFD6897, 32); Verzögerung( 40); ) if (x == 105) ( irsend.sendNEC(0xFDE817, 32); Verzögerung(40); ) if (x == 106) ( irsend.sendNEC(0xFD18E7, 32); Verzögerung(40); ) if (x == 107) ( irsend.sendNEC(0xFD9867, 32); Verzögerung(40); ) if (x == 108) ( irsend.sendNEC(0xFD28D7, 32); Verzögerung(40); ) if (x = = 109) ( irsend.sendNEC(0xFD20DF, 32); Verzögerung(40); ) ) ) )


    In der Skizze müssen Sie die Tastencodes bearbeiten, und zwar in den Zeilen:

    Wenn (x == 97) ( irsend.sendNEC(0x807F08F7, 32); Verzögerung(40);
    Ändern Sie den Wert 807F08F7 in:

    If (y == 1) ( //Tastencodes für die TV-Fernbedienung if (x == 97) ( irsend.sendNEC(0x12345678, 32); delay(40); )
    Wobei 12345678 der Code für Ihre Schaltfläche ist.

    Nachdem Sie die Skizze mit Ihren Tastencodes bearbeitet haben, laden Sie die Skizze auf das Arduino-Board hoch und fahren mit der Installation der Anwendung auf Ihrem Telefon fort.

    Wir schalten Bluetooth im Telefon ein, suchen nach unserem Gerät, erstellen ein Paar und starten dann die Anwendung Pult am Telefon.

    Beim Start wird ein Bildschirm mit einem roten Bluetooth-Symbol in der unteren rechten Ecke angezeigt, das anzeigt, dass wir nicht mit unserem Gerät verbunden sind.

    Klicken Sie anschließend auf dieses Symbol. Wir sollten ein Fenster mit einer Liste aller verfügbaren Bluetooth-Geräte sehen, in dem wir unser Gerät zum Verbinden auswählen.

    Jetzt sind wir wieder auf dem Hauptbildschirm und können bereits den Fernseher steuern:

    Um in den Steuermodus zu wechseln, müssen wir die Taste mit der Bezeichnung drücken "Spieler". Wie ich bereits sagte, wird sich unsere Schaltfläche mit der Bezeichnung „AV“ in eine Schaltfläche „ ":

    Um die Verbindung zu unserem Gerät zu trennen, halten Sie einfach die „Power“-Taste einige Sekunden lang gedrückt.

    So, ein paar Fotos von meinem fertigen Gerät.

    Es ist ganz gut gelaufen, wie es scheint. Ich warte auf Kommentare zum Artikel.