Peut recevoir des signaux infrarouges et les sortir à la sortie du signal sous forme de séquence numérique.

En outre, la LED intégrée au module clignote brièvement lorsqu'un signal infrarouge a été détecté.

Données techniques

Fréquence de la porteuse 38kHz

Affectation des broches

Exemple de code Arduino

Affectation des broches Arduino

Arduino Récepteur
Pin 2 Signal
5V +V
Masse GND

Avec l'aide du module capteur KY-022, un récepteur infrarouge peut être construit. Pour cela, seuls le module récepteur infrarouge et un seul Arduino sont nécessaires. Celui-ci agit alors comme un récepteur des signaux et les émet sur la console série.

Pour l'exemple de code suivant, une bibliothèque supplémentaire est nécessaire :

Arduino-IRremote par Ken Shirriff | publié sous la licence MIT.

L'exemple ci-dessous utilise cette bibliothèque - nous vous recommandons de la télécharger depuis Github, de la décompresser et de la copier dans le dossier des bibliothèques Arduino, qui se trouve par défaut dans (C:\User[nom d'utilisateur]\Documents\Arduino\libraries), afin qu'elle soit disponible pour cet exemple de code et les projets suivants. Alternativement, ceci est également inclus dans le paquet de téléchargement ci-dessous.

Pour les systèmes d'émission et de réception infrarouge, il existe différents protocoles dans lesquels les données peuvent être envoyées et reçues. Dans l'exemple suivant, l'exemple SimpleReceiver modifié est utilisé pour la réception - la bibliothèque utilisée "Arduino-IRremote" se charge elle-même de la conversion en séquence de données correcte. Cependant, il existe d'autres protocoles/encodages au sein de la bibliothèque - ceux-ci sont identifiés dans la documentation/code de la bibliothèque. Documentation

Pour pouvoir utiliser le code suivant, il faut tenir compte de quelques éléments importants. Tout d'abord, vous devez ouvrir l'exemple déjà existant de la bibliothèque car il ouvre un fichier très important qui est nécessaire pour la réception. Pour ouvrir cet exemple, allez dans Fichier -> Exemples -> IRremote -> SimpleReceiver. Une fois que vous avez fait cela, il suffit de remplacer le code de l'exemple par le code ci-dessous pour le récepteur. Après cela, il vous suffit de sélectionner l'Arduino auquel vous avez connecté votre récepteur. Pour ce faire, allez dans Outils -> Port -> COM. Il est important que vous sélectionniez la COM à laquelle votre Arduino est connecté et qui servira plus tard de récepteur. Dans cet exemple, il est possible de modifier les lignes 88 à 93.

Code pour le récepteur

/*
 * 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");
        }
    }
}

Télécharger l'exemple de programme

KY022-Arduino.zip

Exemple de code Raspberry Pi

Affectation des broches du Raspberry Pi :

Raspberry Pi Récepteur
GPIO15 [Pin 8] Signal
3,3V [Pin 17] +V
Masse [Pin 25] GND

Grâce à son architecture de processeur avancée, le Raspberry Pi a l'avantage, par rapport à l'Arduino, de pouvoir exécuter un système d'exploitation Linux complet. À l'aide d'un récepteur infrarouge, il est possible non seulement d'échanger de simples signaux de données, mais aussi de commander à distance des logiciels complets, tels que le logiciel de centre multimédia OpenElec.

Pour mettre en place un système de contrôle infrarouge, nous allons procéder comme suit. LINK

Tout d'abord, vous allez éditer le fichier config.txt en entrant la commande...

sudo nano /boot/config.txt

...commande. Ensuite, mettez ce qui suit à la fin de ce fichier.

dtoverlay=gpio-ir,gpio_pin=14
dtoverlay=gpio-ir-tx,gpio_pin=15

Vous pouvez terminer l'édition en appuyant sur [CTRL+X] et enregistrer en appuyant sur [CTRL+Y].

Après avoir configuré le Raspberry Pi en utilisant...

sudo reboot

... vous allez maintenant exécuter les commandes suivantes...

lsmod | grep gpio
cat /proc/bus/input/devices

... Vous devriez voir ce qui suit.

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="gpio_ir_recv"
P: Phys=gpio_ir_recv/input0
S: Sysfs=/devices/platform/ir-receiver@e/rc/rc0/input0
U: Uniq=
H: Handlers=kbd event0 
B: PROP=0
B: EV=100013
B: KEY=fff 0 0 4200 108fc32e 2376051 0 0 0 7 158000 4192 4001 8e9680 0 0 10000000
B: MSC=10

La prochaine chose que vous devez faire est d'installer ir-keytable...

sudo apt-get install ir-keytable -y

... pour confirmer une installation réussie, vous devez...

ir-keytable

... et obtenir également le résultat suivant.

Found /sys/class/rc/rc0/ (/dev/input/event0) with:
	Name: gpio_ir_recv
	Driver: gpio_ir_recv, table: rc-rc6-mce
	LIRC device: /dev/lirc1
	Attached BPF protocols: Operation not permitted
	Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon 
	Enabled kernel protocols: lirc rc-6 
	bus: 25, vendor/product: 0001:0001, version: 0x0100
	Repeat delay = 500 ms, repeat period = 125 ms

Après cela, voici encore quelques étapes...

sudo ir-keytable -p all

... est utilisé pour montrer tous les protocoles possibles qui peuvent être utilisés.

Protocols changed to lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon 
sudo ir-keytable

Est maintenant entré pour voir quel périphérique est utilisé pour l'envoi (ici il y a la possibilité que soit rc0 ou rc1 est utilisé (vous pouvez le voir dans /sys/class/rc/rc0 ou rc1))...

Found /sys/class/rc/rc0/ (/dev/input/event0) with:
	Name: gpio_ir_recv
	Driver: gpio_ir_recv, table: rc-rc6-mce
	LIRC device: /dev/lirc1
	Attached BPF protocols: Operation not permitted
	Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon 
	Enabled kernel protocols: lirc rc-6 
	bus: 25, vendor/product: 0001:0001, version: 0x0100
	Repeat delay = 500 ms, repeat period = 125 ms

... En fonction de ce qui est le cas, la commande suivante est modifiée selon les besoins.

ir-keytable -t -s rc0

Ceci termine maintenant la configuration de notre récepteur.

Exemple de code Micro:Bit

Affectation des broches Micro:Bit :

Micro:Bit Récepteur
Pin 1 Signal
3V +V
Masse GND

Ceci est un exemple MakeCode pour Micro:Bit qui fait essentiellement la même chose que les exemples des deux autres variantes. Cependant, cet exemple est plus proche de celui du Raspberry Pi que de celui de l'Arduino.

Pour l'exemple de code suivant, une bibliothèque supplémentaire est nécessaire :

pxt-makerbit-ir-receiver by 1010Technologies | publié sous la licence MIT.

Vous devez ajouter cette bibliothèque à votre IDE avant d'utiliser le code.

Pour ce faire, allez dans Extensions dans votre IDE et, en utilisant l'URL suivante https://github.com/1010Technologies/pxt-makerbit-ir-receiver.git, recherchez la bibliothèque pour l'ajouter. Il convient de mentionner que, parfois, la bibliothèque n'apparaît qu'après avoir redémarré l'IDE.

Téléchargement d'un exemple de programme

microbit-KY-022.zip