Dekodierung von schwarzen oder weißen Fernbedienungen mit Arduino
In diesem Tutorial werden wir lernen, wie man die Tasten von schwarz-weißen Infrarotfernbedienungen mit einem Arduino und einem IR-Empfänger decodiert. Am Ende dieses Projekts werden Sie in der Lage sein, zu bestimmen, welche Taste auf der Fernbedienung gedrückt wurde, und diese Information im seriellen Monitor anzuzeigen. Dies kann nützlich sein, um Geräte mit jeder Fernbedienung, die Sie möglicherweise haben, wie Fernseher oder andere Geräte, zu steuern (im Video bei 01:00).
Wir werden ein einfaches Setup verwenden, das ein Arduino, ein Infrarotempfängermodul und den notwendigen Code zum Dekodieren der Signale umfasst. Der Infrarotempfänger wird die Signale von der Fernbedienung erfassen, und das Arduino wird diese Signale interpretieren, um zu bestimmen, welcher Knopf gedrückt wurde. Dieses Projekt ist einfach und kann für verschiedene Fernbedienungen angepasst werden.
Hardware erklärt
Die Hauptkomponenten für dieses Projekt umfassen das Arduino-Board und ein IR-Empfangsmodul, das typischerweise als VS1838B bezeichnet wird. Das Arduino dient als Hauptsteuerungseinheit, die den Code ausführt, der die Signale verarbeitet, die vom Fernbedienung empfangen werden. Der IR-Empfänger erfasst die Infrarotsignale, die von der Fernbedienung ausgesendet werden, und wandelt sie in ein Format um, das das Arduino verstehen kann.
Der VS1838B arbeitet im Spannungsbereich von 2,7V bis 5,5V, was ihn mit den meisten Arduino-Boards kompatibel macht. Er kann Signale aus einer Entfernung von 10 bis 15 Metern erkennen, abhängig von den Bedingungen. Der Infrarotempfänger gibt ein digitales Signal aus, das anzeigt, welcher Knopf auf der Fernbedienung gedrückt wurde, sodass der Arduino entsprechend reagieren kann.
Datenblattdetails
| Hersteller | VS1838B |
|---|---|
| Teilenummer | VS1838B |
| Logik/IO-Spannung | 2,7-5,5 V |
| Versorgungsspannung | 5 V |
| Ausgangsstrom (pro Kanal) | 1,5 mA |
| Empfangsentfernung | 10-15 m |
| Eingangsfrequenz | 38 kHz |
| Ruhestrom | 0,8 mA (typ.) |
| Betriebswinkel | 70 Grad |
| Paket | TO-220 |
- Stellen Sie eine ordnungsgemäße Spannungsversorgung sicher, um das IR-Empfänger nicht zu beschädigen.
- Halten Sie das Empfangsmodul von direkter Sonneneinstrahlung oder starken Infrarotquellen fern.
- Verwenden Sie ggf. Pull-up-Widerstände, um die Signalwerte zu stabilisieren.
- Die Verdrahtungsverbindungen sollten sicher sein, um intermittierende Signale zu verhindern.
- Testen Sie verschiedene Fernbedienungen, um zu sehen, wie gut sie mit der Einrichtung funktionieren.
-
Deconding-IR-remote-main-1
Verdrahtungsanleitungen
Um den IR-Empfänger mit dem Arduino zu verbinden, schließen Sie zunächst den VCC-Pin des IR-Empfängers an den 5V-Pin des Arduinos an. Verbinden Sie anschließend den GND-Pin des Empfängers mit einem der GND-Pins des Arduinos. Schließlich verbinden Sie den Signal-Pin (häufig als SIG oder OUT bezeichnet) des IR-Empfängers mit dem digitalen Pin 11 des Arduinos.
Stellen Sie sicher, dass die Verbindungen sicher sind, da lose Verbindungen zu inkonsistenten Messwerten führen können. Wenn Sie eine PCB-Version des IR-Empfängers oder ein nacktes Modul verwenden, bleibt die Verdrahtung gleich; stellen Sie nur sicher, dass Sie die Pins entsprechend der Beschriftung des Moduls korrekt identifizieren (im Video bei :15).
Installieren Sie die IRremote-Bibliothek
Starte die Arduino IDE.Arduino.cckostenlos) Klicken Sie auf das Bibliotheksymbol links und suchen Sie nachIRremoteund klicken Sie auf "Installieren", um es zu installieren.
#include <IRremote.h>Code-Beispiele und Schritt-für-Schritt-Anleitung
int RECV_PIN = 11;
const char type ='W'; // W for white, B for black
const boolean PCB = 0; // 1 for PCB, 0 for bare module
IRrecv irrecv(RECV_PIN);In diesem Auszug definieren wir die Pin-Nummer für den IR-Empfänger mitRECV_PINauf 11 eingestellt. Wir geben auch den Typ der verwendeten Fernbedienung an mit dertypeVariable, wobei 'W' eine weiße Fernbedienung und 'B' eine schwarze Fernbedienung anzeigt. DiePCBVariable unterscheidet zwischen der Verwendung einer PCB-Version des Empfängers oder eines nackten Moduls.
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}Imsetup()Wir initialisieren die serielle Kommunikation mit 9600 Baud und starten den IR-Empfänger. Dies ist entscheidend, um die Ausgabe im seriellen Monitor zu überwachen, sodass wir sehen können, welche Taste gedrückt wurde.
void loop() {
if (irrecv.decode(&results)) {
robojaxValidateCode(results.value); // Validate the received code
irrecv.resume(); // Receive the next value
}
delay(100);
}Die Haupt-loop()prüft, ob der IR-Empfänger ein Signal decodiert hat. Wenn ja, ruft er dierobojaxValidateCodeFunktion zur Verarbeitung des empfangenen Wertes und setzt dann das Warten auf das nächste Signal fort. Dasdelay(100)sorgt dafür, dass die Schleife nicht zu schnell läuft, was bei der Signalverarbeitung helfen kann.
Demonstration / Was zu erwarten ist
Sobald alles eingerichtet und der Code hochgeladen ist, öffnen Sie den seriellen Monitor, um die Ausgabe zu sehen. Wenn Sie eine Taste auf der Fernbedienung drücken, sollte der entsprechende Tastenname im Monitor angezeigt werden. Wenn die Taste nicht erkannt wird, wird "Taste unbekannt" angezeigt. Achten Sie darauf, die Tasten fest zu drücken, da lose Verbindungen falsche Werte verursachen können (im Video bei 05:40).
Wenn Sie eine Taste kontinuierlich drücken, kann die Ausgabe wiederholte Werte oder hexadezimale Codes anzeigen. Dieses Verhalten ist normal, und Sie können den Code anpassen, um diese kontinuierlichen Signale nach Bedarf herauszufiltern. Zusätzlich können Sie den Code so anpassen, dass er Aktionen basierend auf bestimmten Tasteneingaben ausführt, wie zum Beispiel Lichter einzuschalten oder andere Geräte zu steuern.
Videountertitel
- 00:00 Start
- 00:56 Hardware wird erklärt
- 04:26 Verdrahtung Erklärt
- 05:20 Der Code wird erklärt
- 12:27 Demonstration der Code-Dekodierung
Dinge, die Sie vielleicht brauchen
-
Amazon
-
eBay
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Keine Dateien verfügbar.