Dieses Modul kann Infrarotsignale empfangen und gibt diese am Signalausgang als digitale Abfolge aus.

Zusätzlich blinkt die auf dem Modul integrierte LED kurz auf, wenn ein Infrarot-Signal detektiert wurde.

Technische Daten

Betriebsspannung 3,3 V - 5 V
Betriebsstrom 0,4 - 1,5 mA
Empfangsreichweite 18 m
Empfangswinkel ± 45 °
Trägerfrequenz 38 kHz

Pin Belegung

Codebeispiel Arduino

Anschlussbelegung Arduino

Arduino Empfänger
Pin 2 Signal
5 V +V
Masse GND

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.

Für das folgende Codebeispiel wird eine zusätzliche Library benötigt:

Arduino-IRremote von Ken Shirriff | veröffentlicht unter der MIT Lizenz

Laden Sie die Library herunter und entpacken Sie diese in Ihren Arduino-Library-Ordner. Dieser befindet sich standardmäßig unter: C:\Benutzer\[Benutzername]\Dokumente\Arduino\libraries. Alternativ ist diese auch im unten stehenden Download-Paket enthalten.

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 "Arduino-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 Arduino-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. Nun muss der Arduino ausgewählt werden, an dem Sie Ihren Sender angeschlossen haben: Werkzeuge -> Port -> COM.

Code für den Empfänger

/*
 * SimpleReceiver.cpp
 *
 * Demonstrates receiving NEC IR codes with IRrecv
 *
 *  Copyright (C) 2020-2021  Armin Joachimsmeyer
 *  armin.joachimsmeyer@gmail.com
 *
 *  This file is part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.
 *
 *  MIT License
 */

/*
 * Specify which protocol(s) should be used for decoding.
 * If no protocol is defined, all protocols are active.
 */
//#define DECODE_DENON        // Includes Sharp
//#define DECODE_JVC
//#define DECODE_KASEIKYO
//#define DECODE_PANASONIC    // the same as DECODE_KASEIKYO
//#define DECODE_LG
#define DECODE_NEC          // Includes Apple and Onkyo
//#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_DISTANCE     // universal decoder for pulse width or pulse distance protocols
//#define DECODE_HASH         // special decoder for all protocols

#include <Arduino.h>

/*
 * Define macros for input and output pin etc.
 */
#include "PinDefinitionsAndMore.h"

#include <IRremote.h>

void setup() {
    Serial.begin(115200);
    // Just to know which program is running on my Arduino
    Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_IRREMOTE));

    /*
     * Start the receiver, enable feedback LED and take LED feedback pin from the internal boards definition
     */
    IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN);

    Serial.print(F("Ready to receive IR signals at pin "));
    Serial.println(IR_RECEIVE_PIN);
}

void loop() {
    /*
     * Check if received data is available and if yes, try to decode it.
     * Decoded result is in the IrReceiver.decodedIRData structure.
     *
     * E.g. command is in IrReceiver.decodedIRData.command
     * address is in command is in IrReceiver.decodedIRData.address
     * and up to 32 bit raw data in IrReceiver.decodedIRData.decodedRawData
     */
    if (IrReceiver.decode()) {

        // Print a short summary of received data
        IrReceiver.printIRResultShort(&Serial);
        if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
            // We have an unknown protocol here, print more info
            IrReceiver.printIRResultRawFormatted(&Serial, true);
        }
        Serial.println();

        /*
         * !!!Important!!! Enable receiving of the next value,
         * since receiving has stopped after the end of the current received data packet.
         */
        IrReceiver.resume(); // Enable receiving of the next value

        /*
         * Finally, check the received data and perform actions according to the received command
         */
        if (IrReceiver.decodedIRData.command == 0x34) {
            Serial.println("Signal received");
        } else if (IrReceiver.decodedIRData.command == 0x36) {
            Serial.println("Signal received and it is a different one this time around");
        } else {
            Serial.println("Signal received but sadly not the correct one");
        }
    }
}

Beispielprogramm Download

KY022-Arduino.zip

Codebeispiel Raspberry Pi

Anschlussbelegung Raspberry Pi:

Raspberry Pi Empfänger
GPIO15 [Pin 8] Signal
3,3 V [Pin 1] +V
Masse [Pin 6] GND

Ö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=14
dtoverlay=gpio-ir-tx,gpio_pin=15

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

Codebeispiel Micro:Bit

Anschlussbelegung Micro:Bit:

Micro:Bit Empfänger
Pin 1 Signal
3V +V
Masse GND

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.

Beispielprogramm Download

microbit-KY-022-Remote.zip