KY-022 Infrarot-Receiver
Dieses Modul kann Infrarotsignale empfangen und gibt diese am Signalausgang als digitale Abfolge aus.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
Dieses Modul kann Infrarotsignale empfangen und wandelt diese in digitale Signale um, die am Ausgang ausgegeben werden. Wenn ein Infrarotsignal erkannt wird, blinkt eine integrierte LED auf dem Modul kurz auf, was eine visuelle Bestätigung des Signalempfangs bietet. Es ist ideal für Projekte, bei denen Infrarotfernbedienungen oder andere Infrarotsignale verwendet werden. Dank seiner einfachen Handhabung und zuverlässigen Signalverarbeitung lässt sich das Modul leicht in verschiedene Elektronikprojekte integrieren, um beispielsweise Fernsteuerungen zu realisieren oder Daten drahtlos zu übertragen.
Technische Daten | |
---|---|
Betriebsspannung | 3,3 V - 5 V |
Betriebsstrom | 0,4 - 1,5 mA |
Empfangsreichweite | 18 m |
Empfangswinkel | ± 45 ° |
Trägerfrequenz | 38 kHz |
Anschlussbelegung
Arduino | Empfänger |
---|---|
Pin 2 | Signal |
5 V | +V |
GND | GND |
Code-Beispiel
Mit Hilfe der beiden Sensormodule KY-005 und KY-022 lässt sich ein System mit Infrarot-Fernbedienung und Infrarot-Empfänger aufbauen. Hierzu werden neben den beiden Modulen auch zwei Arduinos benötigt. Diese fungieren hierbei dann jeweils als Sender und als Empfänger der Signale.
Mithilfe des Sensormodules KY-022 lässt sich ein Infrarot-Receiver aufbauen. Hierzu werden nur das Infrarot Receiver Modul und ein einzelner Arduino benötigt. Dieser fungiert hierbei dann als Empfänger und gibt die Signale dann in der seriellen Konsole aus.
Um das folgende Codebeispiel auf Ihren Arduino zu laden, empfehlen wir die Verwendung der Arduino IDE. In der IDE können Sie den passenden Port und das richtige Board für Ihr Gerät auswählen. Für das folgende Codebeispiel wird eine zusätzliche Library benötigt:
IRremote von Ken Shirriff | veröffentlicht unter der MIT Lizenz
Diese Bibliotheken können Sie bequem über den Bibliotheken-Manager der Arduino IDE hinzufügen.
Bei Infrarot-Sende- und Empfängersystemen, gibt es verschiedene Protokolle, in denen die Daten versendet und empfangen werden können. In dem folgenden Beispiel wird für das Empfangen das modifizierte SimpleReceiver Beispiel verwendet - die verwendete Library IRremote kümmert sich eigenständig um die Konvertierung in die richtige Datenfolge. Es gibt innerhalb der Library jedoch auch andere Protokolle/Kodierungen - diese sind in der Dokumentation/dem Code der Library gekennzeichnet. Dokumentation
Bitte beachten Sie: Für die Ausführung des Codebeispiels ist eine zusätzliche Datei notwendig. Diese öffnet sich automatisch, sobald Sie den Beispielcode aus der IRremote-Bibliothek öffnen. Öffnen Sie daher zunächst den Beispielcode über den folgenden Weg: Datei > Beispiele > IRremote > SimpleReceiver.
Nun können Sie den Beispielcode durch unser modifiziertes Beispiel ersetzen. Um den Code auf Ihren Arduino hochzuladen, klicken Sie einfach auf den Upload-Button.
/*
* SimpleReceiver.cpp
*
* Demonstriert den Empfang von NUR NEC-Protokoll-IR-Codes mit IRremote.
* Wenn kein Protokoll definiert ist, sind alle Protokolle (außer Bang&Olufsen) aktiv.
*
* Diese Datei ist Teil von Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.
*
************************************************************************************
* MIT License
*
* Copyright (c) 2020-2023 Armin Joachimsmeyer
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is furnished
* to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
************************************************************************************
*/
#include <Arduino.h>
/*
* Geben Sie an, welche(s) Protokoll(e) für die Dekodierung verwendet werden soll(en).
* Wenn kein Protokoll definiert ist, sind alle Protokolle (außer Bang&Olufsen) aktiv.
* Dies muss vor dem #include <IRremote.hpp> erfolgen.
*/
//#define DECODE_DENON // Beinhaltet Sharp
//#define DECODE_JVC
//#define DECODE_KASEIKYO
//#define DECODE_PANASONIC // Alias für DECODE_KASEIKYO
//#define DECODE_LG
#define DECODE_NEC // Beinhaltet Apple und Onkyo. Um alle Protokolle zu aktivieren, kommentieren/deaktivieren Sie einfach diese Zeile.
//#define DECODE_SAMSUNG
//#define DECODE_SONY
//#define DECODE_RC5
//#define DECODE_RC6
//#define DECODE_BOSEWAVE
//#define DECODE_LEGO_PF
//#define DECODE_MAGIQUEST
//#define DECODE_WHYNTER
//#define DECODE_FAST
//#define DECODE_DISTANCE_WIDTH // Universaldecoder für Impulsabstandsprotokolle
//#define DECODE_HASH // spezieller Decoder für alle Protokolle
//#define DECODE_BEO // Dieses Protokoll muss immer manuell aktiviert werden, d.h. es ist NICHT aktiviert, wenn kein Protokoll definiert ist. Es verhindert die Dekodierung von SONY!
//#define DEBUG // Aktivieren Sie dies, um viele schöne Debug-Ausgaben von den Decodern zu erhalten.
//#define RAW_BUFFER_LENGTH 750 // Für Fernbedienungen von Klimaanlagen sind 750 erforderlich. Standard ist 200.
/*
* Dieses Include definiert die aktuellen Pin-Nummern für Pins wie IR_RECEIVE_PIN, IR_SEND_PIN für viele verschiedene Boards und Architekturen
*/
#include "PinDefinitionsAndMore.h"
#include <IRremote.hpp> // Einbindung der Bibliothek
void setup() {
Serial.begin(115200);
while (!Serial)
; // Warten Sie darauf, dass Serial verfügbar wird. Wird für einige Kerne wegoptimiert.
// Starten des Empfängers und, falls kein 3. Parameter angegeben, Übernahme des LED_BUILTIN-Pins aus der internen Kartendefinition als Standard-Feedback-LED
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
Serial.println(F("KY-022: Infrarot Empfänger Test"));
Serial.print(F("Bereit zum Empfang von IR-Signalen von Protokollen: "));
printActiveIRProtocols(&Serial);
Serial.println(F("am Pin " STR(IR_RECEIVE_PIN)));
}
void loop() {
/*
* Prüfen, ob empfangene Daten verfügbar sind, und wenn ja, versuchen, sie zu dekodieren.
* Das dekodierte Ergebnis befindet sich in der Struktur IrReceiver.decodedIRData.
*
* z.B. Befehl steht in IrReceiver.decodedIRData.command
* Adresse steht in Befehl steht in IrReceiver.decodedIRData.address
* und bis zu 32 Bit Rohdaten in IrReceiver.decodedIRData.decodedRawData
*/
if (IrReceiver.decode()) {
/*
* Gibt eine Zusammenfassung der empfangenen Daten aus
*/
if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
Serial.println(F("Empfangenes Rauschen oder ein unbekanntes (oder noch nicht aktiviertes) Protokoll"));
// Wir haben hier ein unbekanntes Protokoll, geben Sie erweiterte Informationen aus
IrReceiver.printIRResultRawFormatted(&Serial, true);
IrReceiver.resume(); // Tun Sie es hier, um die Rohdaten für die Ausgabe mit printIRResultRawFormatted() zu erhalten.
}
else {
IrReceiver.resume(); // Frühzeitige Freigabe des Empfangs des nächsten IR-Frames
IrReceiver.printIRResultShort(&Serial);
}
}
}
Dieses Modul kann Infrarotsignale empfangen und wandelt diese in digitale Signale um, die am Ausgang ausgegeben werden. Wenn ein Infrarotsignal erkannt wird, blinkt eine integrierte LED auf dem Modul kurz auf, was eine visuelle Bestätigung des Signalempfangs bietet. Es ist ideal für Projekte, bei denen Infrarotfernbedienungen oder andere Infrarotsignale verwendet werden. Dank seiner einfachen Handhabung und zuverlässigen Signalverarbeitung lässt sich das Modul leicht in verschiedene Elektronikprojekte integrieren, um beispielsweise Fernsteuerungen zu realisieren oder Daten drahtlos zu übertragen.
Technische Daten | |
---|---|
Betriebsspannung | 3,3 V - 5 V |
Betriebsstrom | 0,4 - 1,5 mA |
Empfangsreichweite | 18 m |
Empfangswinkel | ± 45 ° |
Trägerfrequenz | 38 kHz |
Anschlussbelegung
Raspberry Pi | Empfänger |
---|---|
GPIO15 [Pin 10] | Signal |
3,3 V [Pin 1] | +V |
GND [Pin 6] | GND |
Code-Beispiel
Öffnen Sie für die Ersteinrichtung zunächst Ihre config.txt-Datei mit Hilfe des folgenden Befehls:
sudo nano /boot/config.txt
Fügen Sie hier die folgenden Konfigurationen an das Ende der Datei an:
dtoverlay=gpio-ir,gpio_pin=15
dtoverlay=gpio-ir-tx,gpio_pin=14
Mit der Tastenkombination [STRG+O] können Sie die Datei speichern. Bestätigen Sie dies mit [Enter] und verlassen Sie den Editor mit der Kombination [STRG+X]. Starten Sie Ihren Raspberry Pi nun mit dem folgenden Befehl neu:
sudo reboot
Installieren Sie nun das ir-keytable Modul:
sudo apt-get install ir-keytable -y
Mit dem folgenden Befehl können Sie die Geräte-Identifikation ermitteln. Dies ist notwendig, um den Empfänger im weiteren Verlauf ansprechen zu können:
sudo ir-keytable
Die erste Zeile der Ausgabe sollte etwa so aussehen:
Found /sys/class/rc/rc0/ (/dev/input/event0) with:
Hier kann abgelesen werden, dass wir unseren Empfänger über die Identifikation rc0 ansprechen können. Daher starten wir den Empfang nun über den folgenden Befehl:
ir-keytable -t -s rc0
Dieses Modul kann Infrarotsignale empfangen und wandelt diese in digitale Signale um, die am Ausgang ausgegeben werden. Wenn ein Infrarotsignal erkannt wird, blinkt eine integrierte LED auf dem Modul kurz auf, was eine visuelle Bestätigung des Signalempfangs bietet. Es ist ideal für Projekte, bei denen Infrarotfernbedienungen oder andere Infrarotsignale verwendet werden. Dank seiner einfachen Handhabung und zuverlässigen Signalverarbeitung lässt sich das Modul leicht in verschiedene Elektronikprojekte integrieren, um beispielsweise Fernsteuerungen zu realisieren oder Daten drahtlos zu übertragen.
Technische Daten | |
---|---|
Betriebsspannung | 3,3 V - 5 V |
Betriebsstrom | 0,4 - 1,5 mA |
Empfangsreichweite | 18 m |
Empfangswinkel | ± 45 ° |
Trägerfrequenz | 38 kHz |
Anschlussbelegung
Micro:Bit | Empfänger |
---|---|
Pin 1 | Signal |
3V | +V |
GND | GND |
Code-Beispiel
Für das folgende Codebeispiel wird eine zusätzliche Library benötigt:
pxt-makerbit-ir-receiver von 1010Technologies | veröffentlicht unter der MIT License
Diese Library müssen Sie vor der Benutzung des Codes zu Ihrer IDE hinzufügen.
Fügen Sie die Library zu Ihrer IDE hinzu, indem Sie auf "Erweiterungen" klicken und die folgende URL in das Suchfeld eingeben: https://github.com/1010Technologies/pxt-makerbit-ir-receiver.git. Bestätigen Sie die Suche mit Enter.
makerbit.onIrDatagram(function () {
if (true) {
basic.showIcon(IconNames.SmallHeart)
} else {
basic.showIcon(IconNames.Heart)
}
})
makerbit.connectIrReceiver(DigitalPin.P1, IrProtocol.NEC)
Beispielprogramm Download
Dieses Modul kann Infrarotsignale empfangen und wandelt diese in digitale Signale um, die am Ausgang ausgegeben werden. Wenn ein Infrarotsignal erkannt wird, blinkt eine integrierte LED auf dem Modul kurz auf, was eine visuelle Bestätigung des Signalempfangs bietet. Es ist ideal für Projekte, bei denen Infrarotfernbedienungen oder andere Infrarotsignale verwendet werden. Dank seiner einfachen Handhabung und zuverlässigen Signalverarbeitung lässt sich das Modul leicht in verschiedene Elektronikprojekte integrieren, um beispielsweise Fernsteuerungen zu realisieren oder Daten drahtlos zu übertragen.
Technische Daten | |
---|---|
Betriebsspannung | 3,3 V - 5 V |
Betriebsstrom | 0,4 - 1,5 mA |
Empfangsreichweite | 18 m |
Empfangswinkel | ± 45 ° |
Trägerfrequenz | 38 kHz |
Anschlussbelegung
Raspberry Pi Pico | Empfänger |
---|---|
GPIO16 | Signal |
3.3V | +V |
GND | GND |
Code-Beispiel
Mit Hilfe der beiden Sensormodule KY-005 und KY-022 lässt sich ein System mit Infrarot-Fernbedienung und Infrarot-Empfänger aufbauen. Hier werden wir aber nur den Empfänger mit einem Pico verwenden. Dieser fungiert hierbei dann als Sender der Signale.
Um das folgende Codebeispiel auf Ihren Pico zu laden, empfehlen wir die Verwendung von der Thonny IDE. Sie müssen nur zunächst unter Run > Configure interpreter … > Interpreter > Which kind of interpreter should Thonny use for running your code? > MicroPython (Raspberry Pi Pico) auswählen.
Es wird für das Codebeispiel die folgende Bibliothek verwendet:
micropython-ir von Peter Hinch | veröffentlicht unter der MIT Lizenz
Um diese Bibliothek zu verwenden, müssen Sie sich aus der obigen Bibliothek den Ordner ir_rx herunterladen und auf den Pico in einem Ordner namens lib (Sie müssen diesen ggf. erstellen) laden.
Bei Infrarot-Sendesystemen gibt es verschiedene Protokolle, in denen die Daten versendet werden können. In dem folgenden Beispiel werden für das Versenden verschiedene Protokolle verwendet. Dokumentation
Danach können Sie den untenstehenden Code nun in Ihre IDE kopieren und klicken Sie auf Run.
# Bibliotheken importieren
import time
from machine import Pin
from ir_rx.nec import NEC_16 # NEC remote, 16 bit addresses
# Methode um empfangene Daten zu verarbeiten
def callback(data, addr, ctrl):
# validieren ob die Daten verarbeitet werden können
if data < 0:
print('')
else:
# empfangene Daten ausgeben
print("Empfangen: \t Adresse:", hex(addr), "\tDaten:", hex(data))
print("KY-022 Infrarot Empfänger Test")
# IR Empfänger initialisieren
ir = NEC_16(Pin(16, Pin.IN), callback)