• Arduino
  • Raspberry Pi
  • Raspberry Pi Pico
  • Micro:Bit

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
GND 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.

Dans 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 "Arduino-IRremote" utilisée s'occupe elle-même de la conversion dans la séquence de données correcte. Il existe cependant d'autres protocoles/codifications au sein de la bibliothèque - ceux-ci sont indiqués dans la documentation/le code de la bibliothèque. Documentation

Veuillez noter: Un fichier supplémentaire est nécessaire pour l'exécution de l'exemple de code. Celui-ci s'ouvre automatiquement dès que vous ouvrez le code d'exemple de la bibliothèque Arduino-IRremote. Ouvrez donc d'abord le code d'exemple de la manière suivante : Fichier -> Exemples -> IRremote -> SimpleReceiver. Vous pouvez maintenant remplacer le code d'exemple par notre exemple modifié.

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

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 Raspberry Pi

Affectation des ports du Raspberry Pi :

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

Pour la configuration initiale, ouvrez d'abord votre fichier config.txt en utilisant la commande suivante :

sudo nano /boot/config.txt

Ajoutez les configurations suivantes à la fin du fichier ici :

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

Avec la combinaison de touches [CTRL+O], vous pouvez enregistrer le fichier. Confirmez avec [Enter] et quittez l'éditeur avec la combinaison [CTRL+X]. Redémarrez maintenant votre Raspberry Pi avec la commande suivante :

sudo reboot

Installez maintenant le module ir-keytable :

sudo apt-get install ir-keytable -y

La commande suivante permet de déterminer l'identification de l'appareil. Ceci est nécessaire pour pouvoir s'adresser au récepteur dans la suite du processus :

ir-keytable

Die erste Zeile der Ausgabe sollte etwa so aussehen:

Found /sys/class/rc/rc0/ (/dev/input/event0) with:

Hier ist zu lesen, dass wir unseren Empfänger über die Kennung rc0 ansprechen können. Daher starten wir nun den Empfang über den folgenden Befehl:

ir-keytable -t -s rc0

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 Micro:Bit

Affectation des broches Micro:Bit :

Micro:Bit Récepteur
Pin 1 Signal
3V +V
GND 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

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 Raspberry Pi Pico

Affectation des broches Raspberry Pi Pico

Raspberry Pi Pico Récepteur
GPIO16 Signal
3.3V +V
GND GND

A l'aide des deux modules capteurs KY-005 et KY-022 on peut construire un système avec télécommande infrarouge et récepteur infrarouge. Mais ici nous n'utiliserons que l'émetteur avec un pico.

Pour l'exemple de code suivant, 4 bibliothèques supplémentaires sont nécessaires :

micropython-ir par Peter Hinch | publié sous la licence MIT.

micropython-stubs par Jos Verlinde | publié sous la Licence MIT.

smbus2 par Karl-Petter Lindegaard | publié sous la licence MIT.

micropython-async par Peter Hinch | publié sous la licence MIT.

Dans les systèmes de transmission infrarouge, il existe différents protocoles dans lesquels les données peuvent être envoyées. Dans l'exemple suivant, différents protocoles sont utilisés pour l'envoi. documentation

Code pour le récepteur

# Exécutez cette opération pour caractériser une télécommande.
# Chargement des bibliothèques
from sys import platform
import time
import gc
from machine import Pin, freq
from ir_rx.print_error import print_error  # Impression facultative des codes d'erreur

# Importation de toutes les classes implémentées
from ir_rx.nec import NEC_8, NEC_16, SAMSUNG
from ir_rx.sony import SONY_12, SONY_15, SONY_20
from ir_rx.philips import RC5_IR, RC6_M0
from ir_rx.mce import MCE

# Définir la broche qui recevra les données
p = Pin(16, Pin.IN)

# **** DISPLAY GREETING ****
s = """Test for IR receiver.
CheckIRData() for NEC 8 bit protocol,
CheckIRData(1) for NEC 16 bit,
CheckIRData(2) for Sony SIRC 12 bit,
CheckIRData(3) for Sony SIRC 15 bit,
CheckIRData(4) for Sony SIRC 20 bit,
CheckIRData(5) for Philips RC-5 protocol,
CheckIRData(6) for RC6 mode 0.
CheckIRData(7) for Microsoft Vista MCE.
CheckIRData(8) for Samsung.

Hit ctrl-c to stop, then disconnect and reconnect your Pico board. Press Stop/Restart afterwards."""

# Rappel de l'utilisateur (fonction d'impression des données reçues)
def cb(data, addr, ctrl):
    if data < 0:  # Pour les cas où les données reçues sont du protocole NEC.
        print("Répéter le code.")
    else:
        print(f"Data 0x{data:02x} Addr 0x{addr:04x} Ctrl 0x{ctrl:02x}")
        
    # Les données reçues peuvent être utilisées ici pour décider ce qui doit être imprimé, par exemple
    if data == 0x16:
        print("Le bouton 0 a été actionné")
    elif data == 0x0c:
        print("Le bouton 1 a été actionné")
    elif data == 0x18:
        print("Le bouton 2 a été actionné")
    elif data == 0x5e:
        print("Le bouton 3 a été actionné")
    elif data == 0x08:
        print("Le bouton 4 a été actionné")
    elif data == 0x1c:
        print("Le bouton 5 a été actionné")
    elif data == 0x5a:
        print("Le bouton 6 a été actionné")
    elif data == 0x42:
        print("Le bouton 7 a été actionné")
    elif data == 0x52:
        print("Le bouton 8 a été actionné")
    elif data == 0x4a:
        print("Le bouton 9 a été actionné")
        
def CheckIRData(proto=0):
    # Liste de tous les protocoles possibles
    classes = (NEC_8, NEC_16, SONY_12, SONY_15, SONY_20, RC5_IR, RC6_M0, MCE, SAMSUNG)
    ir = classes[proto](p, cb) # Instanciation du récepteur
    ir.error_function(print_error) # Afficher les informations de débogage
    # ir.verbose = True
    try:
        while True:
            print("running")
            time.sleep(5)
            gc.collect()
    except KeyboardInterrupt:
        ir.close()

print(s)

# Boucle continue pour un fonctionnement continu
while True:
    CheckIRData()

Exemple de téléchargement de programme

KY022-Pico.zip