Inhaltsverzeichnis:

USB NEC Infrarot-Sender und -Empfänger - Gunook
USB NEC Infrarot-Sender und -Empfänger - Gunook

Video: USB NEC Infrarot-Sender und -Empfänger - Gunook

Video: USB NEC Infrarot-Sender und -Empfänger - Gunook
Video: How to make Universal Remote Controller for all Devices 2024, Juni
Anonim
USB NEC Infrarot-Sender und -Empfänger
USB NEC Infrarot-Sender und -Empfänger

Dieses Projekt ist ein Spin-off eines anderen Projekts, an dem ich arbeite, und da es einen Remote Control 2017-Wettbewerb für Instructables gibt, dachte ich, ich poste dieses Projekt. Wenn Ihnen dieses Projekt gefällt, stimmen Sie bitte dafür ab. Vielen Dank.

Wie Sie vielleicht wissen, bin ich ein großer Fan der 8-Bit-PIC-Controller von Microchip, siehe:

Ich verwende die Programmiersprache JAL, da sie wie Pascal aussieht (was mir auch gefällt). Der JAL-Compiler und die Bibliotheken können heruntergeladen werden von: https://www.justanotherlanguage.org/downloads (scrollen Sie nach unten für die neueste veröffentlichte Version).

Normalerweise schreibe ich den gesamten Code selbst, um vollständig zu verstehen, was ich tue, aber für dieses Projekt musste ich den PIC an den USB-Port des PCs anschließen und brauchte daher einen JAL USB-Seriell-Treiber für diesen PIC-Controller. Ich habe den seriellen USB-Treiber im JAL-Download-Paket verwendet, der gut zu funktionieren scheint. Da dieser USB-Seriell-Treiber für einen bestimmten PIC geschrieben wurde, habe ich diesen PIC verwendet, der der PIC18F14K50 ist. Dieser Controller hat viel mehr Funktionalität, als ich für dieses Projekt benötige, daher bin ich derzeit dabei, diesen USB-Treiber auf einer einfacheren PIC-Version, dem PIC16F1455, zum Laufen zu bringen, die auch billiger ist.

Worum geht es in diesem Projekt also? Mit dem in dieser Anleitung erwähnten Gerät können Sie Infrarot-Fernbedienungsbefehle über den USB-Anschluss mit dem beliebten NEC-Infrarot-Protokoll von und zu Ihrem PC senden und empfangen. Auf diese Weise können Sie Infrarotbefehle überwachen und jedes Gerät steuern, das das NEC Infrarot-Fernbedienungsprotokoll verwendet. Das Projekt dekodiert und übersetzt Infrarotnachrichten in ein Adressbyte und ein Befehlsbyte oder in eine Wiederholungsnachricht. Die Adresse wird natürlich verwendet, um ein bestimmtes Gerät wie einen Fernseher oder ein Radio anzusprechen, wobei das Befehlsbyte die auszuführende Funktion angibt, wie z. B. Lautstärke erhöhen, Lautstärke verringern. Neben der Entschlüsselung dieser Nachrichten können sie mit diesem Gerät auch über Infrarot übertragen werden.

Schritt 1: Einige Informationen zum NEC Infrarot-Protokoll

Einige Informationen zum NEC Infrarot-Protokoll
Einige Informationen zum NEC Infrarot-Protokoll

Eine kurze Einführung in dieses Protokoll. Das NEC Infrarot-Fernbedienungsprotokoll wird in vielen Geräten und Fernbedienungen verwendet, die Sie kaufen können. Es moduliert ein Infrarotsignal auf einem Träger von 38 kHz und verwendet eine Pulsabstandscodierung zum Codieren einer logischen „1“und einer logischen „0“. Das Protokoll verwendet eine einfache Überprüfung, um festzustellen, ob die Nachricht in Ordnung ist, indem sowohl die Adresse als auch das Befehlsbyte und eine invertierte Version von beiden in ein und derselben Nachricht gesendet und nach dem Empfang überprüft werden, ob sie gleich sind. Wenn eine Taste auf der Fernbedienung gedrückt wird, sendet sie einmal eine vollständige Infrarot-Nachricht mit Adresse und Befehl. Wenn Sie die Taste gedrückt halten, wird eine kürzere Wiederholungsnachricht ohne Adress- und Befehlsinformationen gesendet. Die Wiederholungszeit der gesendeten Nachrichten bei gedrückter Taste ist fest eingestellt.

Weitere Informationen zum NEC Infra Red Protokoll finden Sie beispielsweise unter:

Schritt 2: Erforderliche Komponenten

Erforderliche Komponenten
Erforderliche Komponenten
Erforderliche Komponenten
Erforderliche Komponenten

Sie benötigen die folgenden Komponenten für dieses Projekt:

  • PIC Mikrocontroller PIC18F14K50, siehe:
  • Quarz 12 MHz
  • Keramikkondensator: 2 * 100nF, 1 * 220 nF, 2 * 18pF
  • Elektrolytkondensator 47 uF/16V
  • Infrarot-Empfänger TSOP4838, siehe:
  • Widerstände: 2 * 33k, 1 * 4k7, 1 * 1k, 3 * 330 Ohm, 1 * 22 Ohm
  • LEDs: 2 * Infrarot, 1 Bernstein, 1 Grün, 1 Rot
  • Transistor BC640, siehe:
  • Brücke (optional)
  • USB-Anschluss

Siehe das schematische Diagramm zum Anschließen der Komponenten. Ich habe für dieses Projekt ein Steckbrett verwendet, wie Sie im Bild und im Video sehen können. Die Schaltung wird über den USB-Port des PCs mit Strom versorgt.

Schritt 3: Die Software und die Bedienung des Geräts

Wie bereits erwähnt, ist die Software für einen PIC18F14K50 geschrieben. Es wurde in JAL geschrieben. Die Intel Hex-Datei zum Programmieren Ihres PIC ist beigefügt. Die Software führt die folgenden Funktionen aus:

  • Dekodieren von NEC-Infrarot-Nachrichten und Senden an den PC über USB. Die Nachricht wird aus dem vom Infrarotempfänger erzeugten Bitstrom decodiert und in eine Adresse + Befehlsnachricht oder eine Wiederholungsnachricht übersetzt.
  • Senden von NEC Infrarot-Nachrichten, die vom PC über USB empfangen wurden. Beachten Sie, dass die Software auch die 38-kHz-Trägerfrequenz erstellt, die die Infrarot-LEDs direkt ansteuert. Parallel zur Infrarot-LED ist eine Amber-LED angeschlossen, um die Übertragung einer Nachricht sichtbar zu machen.

Standardmäßig schaltet diese Schaltung den Infrarot-Empfänger während der Übertragung einer Infrarot-Nachricht stumm. Wenn ein Jumper auf die Position „Unmute“gesetzt wird, wird diese Mute-Funktion deaktiviert. In diesem Fall wird auch die gesendete Infrarot-Nachricht parallel zur Übertragung dekodiert und nach vollständigem Empfang als empfangene Infrarot-Nachricht an den PC gesendet. Wenn eine gültige NEC Infrarot-Nachricht empfangen wird, leuchtet die rote „IR OK“-LED auf.

Um dieses Gerät zu betreiben, benötigen Sie ein Terminal-Emulator-Programm auf Ihrem PC. Zu diesem Zweck habe ich ‚Termite‘verwendet. Wenn das Gerät mit dem PC verbunden ist, wird es von Windows 10 automatisch als zusätzlicher COM-Port erkannt, da ein Microchip-Treiber für dieses Gerät in Windows 10 vorinstalliert zu sein scheint. Die Einstellung für diesen COM-Port sollte sein: 19200 Baud 8 Bit, 1 Stoppbit, keine Parität und RTS/CTS-Flusskontrolle verwenden. Die Baudrate kann bei Bedarf auf jeden anderen Wert eingestellt werden, so dass auch eine Baudrate von 115200 funktioniert. Sobald das Gerät über den USB-Port konfiguriert ist, indem es über das Terminal-Emulator-Programm damit verbunden wird, leuchtet die grüne „Configured“-LED auf.

Empfangen von Infrarot-Nachrichten

Wenn eine Infrarotnachricht empfangen wird, wird im Terminalemulatorprogramm Folgendes angezeigt:

  • „A:xx C:xx“bei einer vollständigen Nachricht, wobei xx die hexadezimale Zahl der Adresse (A) und des Befehls (C) ist. Die Werte für beide können von 0x00 (0) bis 0xFF (255) reichen.
  • „Wiederholen“bei einer Wiederholungsnachricht.

Senden von Infrarot-Nachrichten

Dazu musste ich ein Protokoll definieren, das dem Gerät sagt, was es tun soll. Da wir einen Terminalemulator verwenden, habe ich ASCII-Zeichen verwendet, um eine Nachricht zu definieren. Das Protokoll zum Senden eines Befehls an das Gerät verwendet das folgende Format: „!AACCRR#“, wobei (bei allen Zeichen wird die Groß-/Kleinschreibung nicht beachtet):

  • „!“kennzeichnet den Beginn der Nachricht.
  • ‚AA‘ist der Wert der Adresse in hexadezimaler Schreibweise, also ‚0‘bis ‚9‘und ‚A‘bis ‚F‘,
  • „CC“ist der Wert des Befehls in hexadezimaler Schreibweise, also „0“bis „9“und „A“bis „F“
  • „RR“ist die Anzahl der Wiederholungsnachrichten, die in hexadezimaler Schreibweise übertragen werden müssen, also „0“bis „9“und „A“bis „F“. Ein Wert von „00“bedeutet, dass keine Wiederholungsnachricht gesendet wird.

Ein Beispiel für eine Nachricht mit Adresse 0x07, Befehl 0x05 und 3 Wiederholungen sollte dann im Terminal-Emulator-Programm wie folgt eingegeben werden: !070503#

Das Gerät reagiert nach einem Befehl vom PC unterschiedlich:

  • „Y“bedeutet, dass eine Nachricht übertragen wurde. Beachten Sie, dass diese Antwort gegeben wird, nachdem alle Nachrichten - einschließlich aller Wiederholungen - übertragen wurden, so dass es einige Zeit dauern kann, bis diese Antwort gegeben wird, wenn viele Wiederholungsnachrichten übertragen werden müssen.
  • „N“bedeutet, dass die an den PC gesendete Nachricht ein unzulässiges Zeichen enthielt.
  • „B“bedeutet, dass eine Infrarot-Übertragung noch beschäftigt war, als der Befehl erteilt wurde.
  • ?“bedeutet, dass das Gerät ein „!“erwartet hat, aber etwas anderes empfangen hat.

Schritt 4:

Ich habe ein kurzes Video von dem Gerät in Aktion gemacht. Für dieses Video habe ich eine handelsübliche LED-Lampe mit Fernbedienung verwendet, um zu sehen, dass sowohl das Senden als auch der Empfang funktionieren. Das Video zeigt Folgendes:

  • Konfigurieren des USB-Geräts über das Terminalemulationsprogramm. Wenn das Gerät konfiguriert ist, antwortet es mit der Meldung „USB NEC Infra Red Transmitter and Receiver“. Am Gerät leuchtet die grüne LED und zeigt damit an, dass das Gerät vom PC konfiguriert wurde.
  • Die Lampe wird mit der Fernbedienung eingeschaltet. Dazu verwendet die Fernbedienung die Adresse 0x00 und den Befehl 0x07, der vom Gerät dekodiert und auf dem PC angezeigt wird.
  • Die Lampe wird mit der Fernbedienung ausgeschaltet. Dazu verwendet die Fernbedienung die Adresse 0x00 und den Befehl 0x06, der vom Gerät dekodiert und auf dem PC angezeigt wird.
  • Die Lampe wird durch Eingabe des gleichen Fernbedienungsbefehls auf dem PC mit einem Wiederholungswert von 0 (keine Wiederholung) eingeschaltet, also durch Eingabe von „!000700#“. Die Lampe geht an.
  • Ändern der Farbe der Lampe in Blau mithilfe der Adresse 0x00 und des Befehls 0x0A und mithilfe von 0x30-Wiederholungen. Die gelbe LED, die parallel zu den Infrarot-LEDs geschaltet ist, blinkt und zeigt die Übertragung der Wiederholungsnachricht über Infrarot an. Die eingegebene Nachricht lautet „!000A30#“.

Beachten Sie, dass während der Aufnahme dieses Videos die Jumper-Verbindung „Unmute“aktiv war, sodass Sie auch die gesendete Nachricht „!000700#“sehen konnten, die als „A:00 C:07“im Terminalemulationsprogramm empfangen wurde. In der Demo der blau eingefärbten Lampe sieht man auch, dass die rote LED solange leuchtet, wie die gültigen – Wiederholungs-Nachrichten übertragen werden, da diese parallel zur Übertragung der Wiederholungsnachrichten empfangen und dekodiert werden.

Viel Spaß beim Bauen Ihres eigenen Projekts und gespannt auf Ihre Reaktionen. Vergessen Sie nicht, für dieses Projekt im Wettbewerb Remote Control 2017 abzustimmen, wenn es Ihnen gefällt. Danke noch einmal.

Empfohlen: