Infrarotsensor mit Arduino verwenden
Was ist ein Infrarotsensor (auch bekannt als IR)?
Ein IR-Sensor ist ein elektronisches Instrument, das IR-Signale in bestimmten durch Standards definierten Frequenzbereichen abtastet und sie an seinem Ausgangsstift (typischerweise als Signalstift bezeichnet) in elektrische Signale umwandelt. Die IR-Signale werden hauptsächlich zum Übertragen von Befehlen über Funk auf kurzen Entfernungen (normalerweise wenige Meter) verwendet, wie Sie es bereits mit TV-Fernbedienungen oder ähnlichen elektronischen Geräten getan haben.
IR-Kommunikationsprotokoll
Jedes Signal repräsentiert einen bestimmten Code. Elektrische Signale können wieder in die tatsächlichen Daten / Codes umgewandelt werden, die der Absender gesendet hat. Wenn Sie eine Taste auf Ihrer TV-Fernbedienung drücken, wird ein Signal generiert, das dem Tastencode entspricht (z. B. Ein / Aus, Lauter usw.), und an einen Empfänger (in diesem Fall Ihr TV) gesendet. Sowohl Absender als auch Empfänger haben sich auf eine Reihe von Codes geeinigt, damit der Empfänger anhand der einzelnen Codes weiß, was zu tun ist. Die Art und Weise, wie ein Code als Signal moduliert (modelliert) werden sollte, ist in verschiedenen Standards definiert, und jeder Sensorhersteller versucht normalerweise, ein mit ihnen kompatibles Produkt herzustellen, damit es in verschiedenen Geräten verwendet werden kann. Eines der bekanntesten Standardprotokolle stammt von NEC. Eine kurze Geschichte der IR-Protokolle finden Sie auf Wikipedia unter dem Titel Consumer IR.
Schritt 1: Wie sieht ein IR-Sensor aus?



IR-Sensoren sind in verschiedenen Paketen erhältlich. Hier sehen Sie einige typische Verpackungen für einen IR-Empfänger.
Schritt 2: IR Sensor Breakout Board / Modul




Sie können sie auch als IR-Modul / Breakout-Board bei eBay, Aliexpress oder Amazon kaufen. Solche Module enthalten normalerweise einen der oben genannten Sensoren mit einem schönen Steckbrett-freundlichen Paket zusammen mit einer LED, die blinken würde, wenn der Sensor ein Signal erkennt. Auf diese Weise würden Sie feststellen, ob Daten übertragen werden. Ich empfehle dringend, mit einem dieser Module zu beginnen.
Hinweis: Wenn Sie einen rohen IR-Sensor haben, würde sich nichts ändern, außer dass Sie das Datenblatt des Sensors überprüfen sollten, um sicherzustellen, dass Sie ihn korrekt verdrahten, da Sie sonst möglicherweise einen schönen blauen Rauch mit einem Geruch haben, der für eine Dauer anhält Stunde. Du weißt was ich meine ;)
Schritt 3: Erforderliche Teile und Komponenten

Hier finden Sie die Liste der Komponenten, die Sie zum Ausfüllen dieses Tutorials benötigen würden:
eBay-Links:
- 1 x Arduino Uno: //rover.ebay.com/rover/1/711-53200-19255-0/1 ...
- 1 x IR-Sensormodul mit Fernbedienung: //rover.ebay.com/rover/1/711 ....
- 4 x 220 Ohm Widerstände: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
- 4 x LED: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
- 8 x Dupont-Kabel: //rover.ebay.com/rover/1/711-53200-3=4&too ...
- 1 x Lötfreies Steckbrett: //rover.ebay.com/rover/1/711-53200 -...
- 1 x Mini-Steckbrett (optional): //rover.ebay.com/rover/1/711-532 ...
Amazon.com-Links:
- 1 x Arduino Uno: //amzn.to/2uJfKy1
- 1 x IR-Sensormodul mit Fernbedienung: //amzn.to/2uMS1eT
- 1 x Lötfreies Steckbrett: //amzn.to/2uMC6gl
- 4 x 220 Ohm Widerstände: //amzn.to/2hbGiDs
- 4 x LED: //amzn.to/2uMEtjy
- 8 x Dupont-Kabel: //amzn.to/2eXCvbT
- 1 x Mini-Steckbrett (optional): //amzn.to/2vUelmC
Amazon.de Links:
- 1 x Arduino Uno: //amzn.to/2u8DXKD
- 1 x IR-Sensormodul mit Fernbedienung: //amzn.to/2wagB8Y
- 4 x 220 Ohm Widerstände: //amzn.to/2uJCsGs
- 4 x LED: //amzn.to/2u8nNRo
- 8 x Dupont-Kabel: //amzn.to/2vaLDQN
- 1 x Lötfreies Steckbrett: //amzn.to/2u8nkP2
- 1 x Mini-Steckbrett (optional): //amzn.to/2vaKtoc
Schritt 4: Anschließen des IR-Sensors an Arduino



Das Einrichten der IR-Sensorverbindung zu Arduino ist sehr einfach. Neben dem VCC- und GND-Pin verfügt der Sensor nur über einen Ausgangspin, der mit einem der digitalen Pins des Arduino verbunden werden sollte. In diesem Fall ist es an Pin 13 angeschlossen.
Ich habe versucht, sowohl das IR-Sensormodul als auch das Roh-IR-Sensor-Setup zu demonstrieren. Wie auf den Bildern zu sehen ist, ist die Position der VCC- und GND-Pins am Sensormodul das Gegenteil des Rohsensors. Dies ist jedoch möglicherweise nicht der Fall für Ihren Sensor. Überprüfen Sie daher, wie im vorherigen Schritt erwähnt, bei Verwendung des Rohsensors zuerst das Datenblatt.
Schritt 5: Suchen Sie den Code, der jedem Schlüssel auf der Fernbedienung entspricht



Um Arduino so zu programmieren, dass es etwas tut, wenn Sie eine Taste auf der Fernbedienung drücken, sollten Sie zuerst den Code haben, der dieser Taste entspricht. Der Schlüsselcode ist eine Zahl, die normalerweise hexadezimal dargestellt wird. Jede Fernbedienung verfügt über einen eigenen Satz von Schlüsselcodes, während zwei Steuerungen möglicherweise denselben Code für unterschiedliche Zwecke verwenden. Durch unterschiedliche Tastencodes und die Verwendung unterschiedlicher Frequenzbereiche wird sichergestellt, dass zwei Fernbedienungen unterschiedlicher Geräte keine Interferenzen verursachen. Deshalb reagiert Ihr DVD-Player beim Wechseln Ihres TV-Kanals überhaupt nicht.
Um die Codes für Ihre IR-Fernbedienung zu erkennen, müssen Sie zunächst eine einfache Skizze ausführen, die versucht, den Code vom Sensor zu lesen, wenn Sie eine Taste drücken, und diese über die serielle Schnittstelle an Ihren Computer sendet, auf den Sie mit den Serial Monitor-Tools von zugreifen können Arduino IDE. Dies bewirkt die diesem Abschnitt beigefügte Skizze. Es ist besser, jede Taste zu drücken, um den Code anzuzeigen und die Liste der Codes irgendwo aufzuschreiben, damit Sie diesen Code in Zukunft nicht erneut ausführen müssen. Die Liste der Schlüsselcodes, die Sie als Tabelle auf dem Bild sehen, sind tatsächlich Codes, die ich beim Drücken von Tasten auf meiner billigen IR-Fernbedienung erhalten habe.
Sie können auch auf den tatsächlichen Quellcode zugreifen, der in meinem Arduino-Webeditor unter ir-key-code-logger freigegeben ist.
Hinweis : Haben Sie keine Angst, wenn Sie irgendwo dazwischen einen Code wie FFFFFF sehen. Dies bedeutet, dass Sie eine Taste eine Weile gedrückt gehalten haben. Wir werden später darauf zurückkommen. Ignoriere sie jetzt einfach und konzentriere dich auf andere Codes.
Anhänge
ir-code-logger.ino Herunterladen
Schritt 6: Steuern Sie eine Reihe von LEDs mit der IR-Fernbedienung



Jetzt, da wir für jede Schaltfläche einen Code haben, ist es Zeit, uns darauf zu konzentrieren, wie wir sie verwenden können. Normalerweise verwenden Sie die IR-Fernbedienung, um Befehle an Arduino zu senden, um beispielsweise eine Lampe ein- oder auszuschalten, einen Roboter in eine bestimmte Richtung zu bewegen, etwas auf einem LCD / OLED-Bildschirm anzuzeigen usw. Hier versuchen wir, den Vorgang mit einem einfachen Beispiel zu demonstrieren Schaltung bestehend aus 4 LEDs in verschiedenen Farben. Wir möchten jeden von ihnen über eine spezielle Taste der IR-Fernbedienung ein- oder ausschalten. Wie Sie auf dem Schaltplan sehen können, müssen Sie den Arduino folgendermaßen an LEDs und Sensor anschließen:
Arduino GND -> IR-Sensor GND.
Arduino VCC -> IR-Sensor VCC.
Arduino 13 -> IR-Sensorsignalausgang.
Arduino 2 -> Anode der blauen LED (kürzerer Pin der blauen LED)
Arduino 3 -> Anode der grünen LED (kürzerer Pin der grünen LED)
Arduino 4 -> Anode der gelben LED (kürzerer Pin der gelben LED)
Arduino 5 -> Anode der roten LED (kürzerer Pin der roten LED)
Arduino GND -> Kathode aller LEDs über einen 220 Ohm Widerstand (längerer Pin der LEDs)
Den Code für diese Schaltung finden Sie in der angehängten Datei oder in meinem Arduino-Webeditor unter ir-led-control.
Anhänge
ir-led-control.ino Herunterladen
Schritt 7: Fehlerbehebung
Während Sie Ihr Projekt einrichten und die Schritte ausführen, können viele seltsame Situationen auftreten. Hier ist die Liste einiger häufiger Fehler, die bei der Arbeit mit dem IR-Sensor auftreten können.
Erhalten von FFFFFF beim Drücken einer Taste
Wenn Sie eine Taste drücken, stellen Sie möglicherweise fest, dass meistens ein Code wie FFFFFF gemeldet wird. Dies geschieht, wenn Sie eine Taste drücken und auch für kurze Zeit eine Weile gedrückt halten. Das Szenario besteht darin, dass die IR-Fernbedienung beim ersten Drücken der Taste den Tastencode sendet. Solange Sie die Taste gedrückt halten, wird das Senden von FFFFFF wiederholt, was bedeutet, dass der Benutzer die kürzlich gemeldete Taste immer noch drückt. Das wäre in Ordnung. Sie können sie einfach weglassen. Der eigentliche Code ist der, den Sie direkt vor FFFFFF auf dem seriellen Monitor erhalten haben.
Der IR-Sensor reagiert überhaupt nicht und scheint warm zu werden!
Strom abschalten !!! Wenn Sie sicher sind, dass die Skizze des Schlüsselcode-Loggers korrekt ist, liegt das Problem möglicherweise an der falschen Einrichtung Ihrer Kabel. Das Szenario, das mir passiert ist, war, dass ich für mein IR-Modul (das an die Platine angeschlossene) VCC und GND auf die entgegengesetzte Weise angeschlossen habe (weil ich für meine Anschlussdrähte keine richtigen Farben verwendet habe). Auf diese Weise brannte die Sensorkomponente und es entstand ein schöner blauer Rauch. Ich habe eine Packung roher IR-Sensoren gekauft und versucht, sie zu ersetzen, und jetzt funktioniert es wie ein Zauber :). Leider habe ich den gleichen Fehler gemacht, als ich mit dem rohen IR-Sensor getestet habe, und diesmal ist nichts passiert, außer dass der Sensor warm wurde. Überprüfen Sie daher immer den Stromkreis, bevor Sie das Gerät einschalten!
Manchmal erkennt der Sensor einen Code, den ich noch nie gesehen habe
Dies ist eines der häufigsten Probleme. Dies ist höchstwahrscheinlich auf einen der folgenden Gründe zurückzuführen:
- Sie richten Ihre IR-Fernbedienung nicht direkt auf den Sensor
Dies führt dazu, dass Sie einige neue Codes (meistens längere Codes) haben, die Sie noch nie zuvor erhalten haben und die normalerweise nicht mit der Länge der Codes übereinstimmen, die Sie bereits haben. Denken Sie also daran, die Fernbedienung immer auf Ihren Sensor zu richten.
- Sie verwenden eine billige IR-Fernbedienung (wie die, die ich in diesem Tutorial verwendet habe).
Anstatt billige unvorhersehbare Fernbedienungen zu verwenden, können Sie dasselbe Szenario mit Ihrer TV- oder DVD-Player-Fernbedienung oder einer IR-Fernbedienung eines beliebigen Geräts ausprobieren. Sie haben normalerweise eine gute Signal- / Hardwarequalität (und sind natürlich teurer) und funktionieren meiner Erfahrung nach normalerweise gut, auch wenn Sie Ihre Fernbedienung nicht direkt auf den Sensor richten.
Woher weiß ich, ob ein protokollierter Code kein Müll ist?
Die Codes werden normalerweise im Hexadezimalformat dargestellt. Wenn Sie sie in den entsprechenden Binärwert konvertieren, werden Sie feststellen, dass die binäre Darstellung des letzten Bytes die Negation des Bytes ist, die davor steht. Wenn Sie dies wissen, können Sie dies in Ihrem Code überprüfen, um sicherzustellen, dass der Code, den Sie erhalten haben, tatsächlich gültig ist oder nicht. Wenn Sie beispielsweise FF7A85 haben, lautet die binäre Darstellung wie folgt:
1111 1111 0111 1010 1000 0101
Von links nach rechts repräsentiert jeder 4-stellige Stapel ein Zeichen in der ursprünglichen Hexadezimalzahl. Wie Sie sehen können, ist die Charge, die 7 entspricht, 0111 und die Charge, die 8 entspricht, ist 1000, was die genaue Negation davon ist. Mit Negation meine ich, dass alle Nullen Einsen sind und alle Einsen durch Nullen ersetzt werden. Gleiches gilt für den nächsten, A (1010) und 5 (0101).
Schritt 8: Was ist als nächstes zu tun?
Jetzt bist du dran. Es liegt ganz in Ihrer Fantasie zu sehen, was Sie mit diesem kleinen einfachen Sensor in Ihrer Hand tun können. Hier sind zunächst einige Ideen:
- Verwenden Sie die IR-Fernbedienung eines der Geräte, die Sie zu Hause haben (Fernseher, Stereo usw.), und versuchen Sie, sie in Ihrem Arduino-Projekt zu verwenden
- Versuchen Sie, alle LEDs gleichzeitig durch Drücken einer Taste einzuschalten und dann mit einer anderen Taste auszuschalten
- Verwenden Sie die Auf- / Ab-Taste der Fernbedienung, um die LEDs einzeln ein- und auszuschalten, bis alle ein- und ausgeschaltet sind
- Erstellen Sie eine Ampel mit LEDs und steuern Sie sie mit Ihrer Fernbedienung
- Wenn Sie einen kleinen Gleichstrommotor zur Hand haben, versuchen Sie, die Drehrichtung über die IR-Fernbedienung zu starten / stoppen oder zu ändern
- Sie können Ihre TV-Fernbedienung verwenden, um Ihren Roboter zu steuern oder einige Sensoren / Aktoren darauf zu aktivieren / deaktivieren
Lassen Sie mich bei Kommentaren wissen, was Sie mit der IR-Fernbedienung tun würden (oder bereits getan haben).