Wie Sie Ihr TV mit einem Arduino zu kontrollieren!

4 Schritt:Schritt 1: Vorbereiten, Signale zu empfangen Schritt 2: Empfang der Signale Schritt 3: Interpretation der Signale Schritt 4: Senden der Signale

Wie Sie Ihr TV mit einem Arduino zu kontrollieren!
Also. Diese Instructable wird Ihnen zeigen, wie alles steuerbar IR oder Infrarot-Licht zu steuern.

Dazu gehören Kameras, Fernseher, DVD-Player, Videorecorder, Sie erhalten den Punkt.

Ich werde Ihnen zeigen, wie die Codes zu erhalten, und dann, wie man sie zu übertragen.

Objekte für dieses Projekt benötigt:
1x Arduino (jeglicher Art, solange es hat was als "PWM", was ich werde erklären)
1x IR LED (Sie können diese von jedem TV-Fernbedienung zu bekommen)
1x IR-Empfänger (siehe Bild)
1x USB A zu B Draht zur Programmierung des Arduino
1x Computer, um das Arduino mit programmieren
1x Arduino Software
und die .PDE Dateien I gehören

Diese Webseite hat mir wirklich geholfen, eine Menge mit diesem. http://www.ladyada.net/learn/sensors/ir.html

Das ist nicht mein CODE, ich habe keinen Eigentumsanspruch. Ich habe lediglich kopiert und eingefügt den Code und schrieb die Anleitung dies leicht verständlich zu machen.

Wenn Sie alles ILLEGAL mit diesem Code I werden nicht verantwortlich GEMACHT WERDEN DO (was meiner Meinung nach wahrscheinlich kein Problem).

Schritt 1: Vorbereiten, Signale zu empfangen

  1. Wie Sie Ihr TV mit einem Arduino zu kontrollieren!
    Zuerst sollten Sie die IR LED Receiver in der Einleitung erwähnt zu bekommen.

    Sie können einen hier: http://www.adafruit.com/products/157
    Sie kosten 2 € ohne Versandkosten.

    Sie wollen also nach dem ersten Bild, das sich der Empfänger soll.

    Ich sehr empfehlen setzen sowohl die IR-Empfänger und die Fernbedienung in einem Schuhkarton oder etwas, das dunkel ist (das gleiche Schuhkarton natürlich). Dies stellt sicher, wird es die geringsten Interferenzen zu sein und klarer Code haben, so dass Sie nicht haben, um Ihre Arduino 12-mal für eine einfache Aufgabe zu programmieren. Also, stellen Sie sicher, dass Sie aus dem Weg der Menschen vor dem Fernseher sind.

    Und Sie die Datei mit dem Namen IR_RECORD.PDE downloaden und öffnen Sie sie in die Arduino-Programm möchten.

    Schließen Sie Ihren Arduino in das USB-Kabel Ich hoffe, Sie haben, und fahren Sie mit Schritt 2!

Schritt 2: Empfang der Signale

  1. Wie Sie Ihr TV mit einem Arduino zu kontrollieren!
    So dass Sie, um das Programm auf Ihr Arduino Sie im letzten Schritt heruntergeladen hochladen möchten.

    Und Sie wollen haben die IR-Empfänger angeschlossen richtig.

    Sobald alles korrekt eingerichtet, und die Arduino ist eingeschaltet und angeschlossen an den Computer an. Öffnen Sie die Serien Monitor, indem Sie auf die Schaltfläche in der Arduino-Programm, das die Taste im Bild eingekreist ist.

    Sobald diese installiert ist und läuft. Sie müssen sich eine Fernbedienung, die Sie in der Lage sein zu verwenden, um etwas mit steuern möchten. Was ich damit meine, ist:

    -find die Fernbedienung für alles, was Sie steuern möchten
    -Punkt es am Empfänger
    -Drücken Sie die Taste, die Sie den Code für einmal bekommen möchten
    -Watch die Serial Monitor
    -Paste den gesamten Code in Editor oder WordPad
    -proceed nach Schritt 3

Schritt 3: Interpretation der Signale

  1. Wie Sie Ihr TV mit einem Arduino zu kontrollieren!
    Hier finden Sie eine Reihe von Zahlen, gefolgt von "usecs" oder "us" zu bekommen.
    Achten Sie darauf, die Signal Sie wollen in ein Textunterlage für einfacher Verweis kopiert haben.

    Es wird in etwa so aussehen:
    500 & mgr; s, 300 & mgr; s
    600 & mgr; s, 1200 usec

    Aber es wird noch viel mehr Zahlen als die.

    Jetzt im Programm werden Sie dies schon ein paar Mal zu sehen:

    delayMicroseconds ();
    pulseIR ();

    Sie wollen die erste Nummer und legen Sie sie in den Klammern in delayMicroseconds ("hier"); Wert
    Und Sie die zweite Zahl von der gleichen Linie wie die einer der delayMicroseconds (nehmen) wollen; Wert und legen Sie sie in den Klammern der pulseIR (); Wert.

    Beispiel:

    Angenommen, Sie erhalten diese auf der seriellen Monitor:
    AUS AN
    1660 usec 580 usec
    1640 usec 560 usec

    Sie möchten, dass die entsprechenden Werte in den entsprechenden Bereichen setzen.
    So wie:

    delayMicroseconds (1660);
    pulseIR (580);
    delayMicroseconds (1640);
    pulseIR (560);

    Es ist verdammt einfach.

    Sobald Sie die Codes, die Sie wollen, öffnen Sie die Datei in der IR_SEND.pde Arduino Programm und setzen Sie dann die Werte, die Sie von der seriellen Monitor zwischen den Klammern bekam, es zu tun die gleiche Weise ich Ihnen gezeigt, wie es geht.

    Der nächste Schritt wird ein Beispiel, wie ich tat dies mit einem Comcast remote zu zeigen.

Schritt 4: Senden der Signale

  1. Wie Sie Ihr TV mit einem Arduino zu kontrollieren!
    Nun, wenn Sie haben die Codes, die Sie wollen, und haben das Programm mit dem Signal die Sie senden möchten hochgeladen, ist alles, was Sie tun müssen Haken, die IR LED an Pin 13 und dann zu Masse ähnlich der schema im Bild. Sie brauchen nicht den Widerstand, wenn Sie einen Arduino Duemilanove, weil es eine in Widerstand für PIN 13 gebaut, so dass Sie keine Sorgen zu machen.

    Dies kann auch mit einem 8-Pin Mikrocontroller ATtiny auf Größe geschnitten unten durchgeführt werden. Ich habe eine, aber ich bin mir nicht sicher, wie man es noch verwenden.

    Jetzt werde ich ein reales Beispiel, wie Sie dies tun, zeigen Sie.

    Auch dies ist nicht mein Code, ich habe gerade kopiert und eingefügt, um es einfacher zu verstehen.

    Also habe ich diesen Code, wenn ich drückte auf den Kanal nach oben-Taste auf meiner Fernbedienung Comcast. Dies ist die Art von Fern, die Sie haben, wenn Sie die kleinen schwarzen Kästchen, die die kleinen schwarzen Fernbedienungen verwenden. Sie fungieren als einem Analog-Digital-Konverter-Box, die nur den Kanal zu wechseln.

    Hier ist der Serial Monitor Code:
    Empfangen:

    AUS AN
    36.328 usec 280 usec
    820 & mgr; s, 300 & mgr; s
    1580 usec 320 usec
    640 & mgr; s, 240 & mgr; s
    2740 usec 240 usec
    1280 usec 240 usec
    1240 usec 240 usec
    1120 usec 240 usec
    2600 usec 240 usec
    12740 usec 240 usec
    840 & mgr; s, 240 & mgr; s
    980 & mgr; s, 240 & mgr; s
    700 & mgr; s, 240 & mgr; s
    700 & mgr; s, 240 & mgr; s
    720 & mgr; s, 240 & mgr; s
    2460 usec 260 usec
    700 & mgr; s, 240 & mgr; s
    700 & mgr; s, 240 & mgr; s
    14904 usec 260 usec
    820 & mgr; s, 240 & mgr; s
    1660 usec 240 usec
    700 & mgr; s, 260 & mgr; s
    2740 usec 240 usec
    1240 usec 240 usec
    1260 usec 240 usec
    1100 usec 240 usec
    2620 usec 240 usec
    12720 usec 260 usec
    840 & mgr; s, 220 & mgr; s
    2080 usec 240 usec
    1780 usec 260 usec
    700 & mgr; s, 240 & mgr; s
    700 & mgr; s, 240 & mgr; s
    2480 usec 240 usec
    700 & mgr; s, 240 & mgr; s
    700 & mgr; s, 240 & mgr; s

    Hier ist der Code, den ich aus den Rohdaten aus, indem Sie den Code in:

    // Diese Skizze wird den Kanal zu wechseln alle zehn Sekunden, so dass Sie kann mit anderen Dingen
    // Beim Fernsehen und nicht mit den Kanal zu wechseln, wie auf einem Laptop und mit
    // Es Zyklus durch die Kanäle, so dass Sie die Hände frei.
    // Wir alle wissen, auf Knopfdruck wird so hart, also warum nicht machen es automatisiert?
    int IRledPin = 13; // Um ​​digitale Stift 13 LED verbunden

    // Das Setup () -Methode wird einmal, als Skizze beginnt die

    Leere setup () {
    // Initialisierung der IR digitalen Stift als Ausgang:
    pinMode (IRledPin, OUTPUT);

    Serial.begin (9600);
    }

    Leere Schleife ()
    {
    SendChannelUpCode ();

    Verzögerung (20 * 1000); // Warten 20 Sekunden (20 Sekunden * 1000 Millisekunden) Ändern Sie diesen Wert für verschiedene Intervalle.
    }

    // Diese Prozedur sendet ein 38KHz Impuls an den IRledPin
    // Für eine bestimmte Anzahl der Mikrosekunden. Der Benutzername, wann immer wir brauchen, um Codes zu senden
    nichtig pulseIR (lange Mikrosekunden) {
    // Wir unten von der Anzahl der Mikrosekunden wird uns gesagt, zu warten, zu zählen

    cli (); // Dies schaltet alle Hintergrund-Interrupts

    while (Mikrosekunden> 0) {
    // 38 kHz beträgt etwa 13 Mikrosekunden und 13 Mikrosekunden hoch niedrig
    digital (IRledPin, HIGH); // Dieses dauert ca. 3 Mikrosekunden passieren
    delayMicroseconds (10); // Hängen für 10 Mikrosekunden
    digital (IRledPin, LOW); // Dieses dauert auch ca. 3 Mikrosekunden
    delayMicroseconds (10); // Hängen für 10 Mikrosekunden

    // So 26 Mikrosekunden insgesamt
    Mikrosekunden - = 26;
    }

    sei (); // Dies macht sie wieder auf
    }

    Leere SendChannelUpCode () {
    // Das ist der Code für die CHANNEL + für die TV COMCAST

    delayMicroseconds (36328); // Time off (linke Spalte)
    pulseIR (280); // Time auf (rechte Spalte) <------- MISCHEN NICHT diese bis
    delayMicroseconds (820);
    pulseIR (300);
    delayMicroseconds (1580);
    pulseIR (320);
    delayMicroseconds (640);
    pulseIR (240);
    delayMicroseconds (1280);
    pulseIR (240);
    delayMicroseconds (1240);
    pulseIR (240);
    delayMicroseconds (1120);
    pulseIR (240);
    delayMicroseconds (2600);
    pulseIR (240);
    delayMicroseconds (12740);
    pulseIR (240);
    delayMicroseconds (840);
    pulseIR (240);
    delayMicroseconds (980);
    pulseIR (240);
    delayMicroseconds (700);
    pulseIR (240);
    delayMicroseconds (700);
    pulseIR (240);
    delayMicroseconds (720);
    pulseIR (240);
    delayMicroseconds (2460);
    pulseIR (240);
    delayMicroseconds (700);
    pulseIR (240);
    delayMicroseconds (700);
    pulseIR (240);
    delayMicroseconds (14904);
    pulseIR (240);
    delayMicroseconds (820);
    pulseIR (240);
    delayMicroseconds (1600);
    pulseIR (240);
    delayMicroseconds (700);
    pulseIR (260);
    delayMicroseconds (2740);
    pulseIR (240);
    delayMicroseconds (1240);
    pulseIR (240);
    delayMicroseconds (1260);
    pulseIR (240);
    delayMicroseconds (1100);
    pulseIR (240);
    delayMicroseconds (2620);
    pulseIR (240);
    delayMicroseconds (12720);
    pulseIR (260);
    delayMicroseconds (840);
    pulseIR (220);
    delayMicroseconds (2080);
    pulseIR (240);
    delayMicroseconds (1780);
    pulseIR (260);
    delayMicroseconds (700);
    pulseIR (240);
    delayMicroseconds (700);
    pulseIR (240);
    delayMicroseconds (2480);
    pulseIR (240);
    delayMicroseconds (700);
    pulseIR (240);
    delayMicroseconds (700);
    pulseIR (240);
    }