KY-022 Module récepteur infrarouge
Peut recevoir des signaux infrarouges et les sortir à la sortie du signal sous forme de séquence numérique.

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