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.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
Ce module peut recevoir des signaux infrarouges et les convertit en signaux numériques qui sont émis à la sortie. Lorsqu'un signal infrarouge est détecté, une LED intégrée sur le module clignote brièvement, offrant ainsi une confirmation visuelle de la réception du signal. Il est idéal pour les projets qui utilisent des télécommandes infrarouges ou d'autres signaux infrarouges. Grâce à sa simplicité d'utilisation et à la fiabilité de son traitement du signal, le module s'intègre facilement dans différents projets électroniques, par exemple pour réaliser des commandes à distance ou pour transmettre des données sans fil.
Données techniques | |
---|---|
Fréquence de la porteuse | 38kHz |
Affectation des broches
Arduino | Récepteur |
---|---|
Pin 2 | Signal |
5V | +V |
GND | GND |
Exemple de code
En utilisant les deux modules capteurs KY-005 et KY-022, il est possible de construire un système télécommande infrarouge + récepteur infrarouge. Pour ce faire, deux Arduinos sont nécessaires en plus des deux modules. Ceux-ci agissent alors comme un émetteur et comme un récepteur des signaux. Il est seulement important de savoir ce que le récepteur des signaux de la console série émet et ce que l'émetteur envoie, car cela doit correspondre.
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 charger l'exemple de code suivant sur votre Arduino, nous vous recommandons d'utiliser l'IDE Arduino. Dans l'IDE, vous pouvez choisir le port et la carte qui conviennent à votre appareil.Les bibliothèques suivantes sont également utilisées pour l'exemple de code :
IRremote par Ken Shirriff | publié sous la licence MIT.
Vous pouvez facilement ajouter ces bibliothèques via le gestionnaire de bibliothèques de l'IDE Arduino.
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 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 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é. Pour télécharger le code sur l'Arduino, il suffit de cliquer sur le bouton " Upload ".
/*
* SimpleReceiver.cpp
*
* Démonstration de la réception de codes IR de protocole NEC UNIQUEMENT avec IRremote.
* Si aucun protocole n'est défini, tous les protocoles (sauf Bang&Olufsen) sont actifs.
*
* Ce fichier fait partie de 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>
/*
* Indiquez quel(s) protocole(s) doit (doivent) être utilisé(s) pour le décodage.
* Si aucun protocole n'est défini, tous les protocoles (sauf Bang&Olufsen) sont actifs.
* Ceci doit être fait avant l'#include <IRremote.hpp>.
*/
//#define DECODE_DENON // Comprend Sharp
//#define DECODE_JVC
//#define DECODE_KASEIKYO
//#define DECODE_PANASONIC // Alias pour DECODE_KASEIKYO
//#define DECODE_LG
#define DECODE_NEC // Inclut Apple et Onkyo. Pour activer tous les protocoles, il suffit de commenter/désactiver cette ligne.
//#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 // Décodeur universel pour les protocoles de distance d'impulsion
//#define DECODE_HASH // décodeur spécial pour tous les protocoles
//#define DECODE_BEO // Ce protocole doit toujours être activé manuellement, c'est-à-dire qu'il n'est PAS activé si aucun protocole n'est défini. Il empêche le décodage de SONY !
//#define DEBUG // Activez ceci pour obtenir beaucoup de belles sorties de débogage de la part des décodeurs.
//#define RAW_BUFFER_LENGTH 750 // Pour les télécommandes de climatiseurs, il en faut 750. Le standard est de 200.
/*
* Cet include définit les numéros actuels des broches comme IR_RECEIVE_PIN, IR_SEND_PIN pour de nombreuses cartes et architectures différentes.
*/
#include "PinDefinitionsAndMore.h"
#include <IRremote.hpp> // Intégration de la bibliothèque
void setup() {
Serial.begin(115200);
while (!Serial)
; // Attendre que Serial soit disponible. En cours d'optimisation pour certains cœurs.
// Démarrage du récepteur et, si aucun 3e paramètre n'est indiqué, prise en compte de la broche LED_BUILTIN de la définition interne de la carte comme LED de feedback standard
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
Serial.println(F("KY-022 : Test de récepteur infrarouge"));
Serial.print(F("Prêt à recevoir les signaux IR des protocoles : "));
printActiveIRProtocols(&Serial);
Serial.println(F("sur le pin" STR(IR_RECEIVE_PIN)));
}
void loop() {
/*
* Vérifier si les données reçues sont disponibles et si oui, essayer de les décoder.
* Le résultat décodé se trouve dans la structure IrReceiver.decodedIRData.
*
* par ex. la commande se trouve dans IrReceiver.decodedIRData.command
* l'adresse est dans la commande est dans IrReceiver.decodedIRData.address
* et jusqu'à 32 bits de données brutes dans IrReceiver.decodedIRData.decodedRawData
*/
if (IrReceiver.decode()) {
/*
* Donne un résumé des données reçues
*/
if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
Serial.println(F("Bruit reçu ou protocole inconnu (ou pas encore activé)"));
// Nous avons ici un protocole inconnu, donnez des informations étendues
IrReceiver.printIRResultRawFormatted(&Serial, true);
IrReceiver.resume(); // Faites-le ici pour obtenir les données brutes pour la sortie avec printIRResultRawFormatted().
}
else {
IrReceiver.resume(); // Validation précoce de la réception de la prochaine trame IR
IrReceiver.printIRResultShort(&Serial);
}
}
}
Ce module peut recevoir des signaux infrarouges et les convertit en signaux numériques qui sont émis à la sortie. Lorsqu'un signal infrarouge est détecté, une LED intégrée sur le module clignote brièvement, offrant ainsi une confirmation visuelle de la réception du signal. Il est idéal pour les projets qui utilisent des télécommandes infrarouges ou d'autres signaux infrarouges. Grâce à sa simplicité d'utilisation et à la fiabilité de son traitement du signal, le module s'intègre facilement dans différents projets électroniques, par exemple pour réaliser des commandes à distance ou pour transmettre des données sans fil.
Données techniques | |
---|---|
Fréquence de la porteuse | 38kHz |
Affectation des broches
Raspberry Pi | Récepteur |
---|---|
GPIO15 [Pin 10] | Signal |
3,3 V [Pin 17] | +V |
GND [Pin 25] | GND |
Exemple de code
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
Ce module peut recevoir des signaux infrarouges et les convertit en signaux numériques qui sont émis à la sortie. Lorsqu'un signal infrarouge est détecté, une LED intégrée sur le module clignote brièvement, offrant ainsi une confirmation visuelle de la réception du signal. Il est idéal pour les projets qui utilisent des télécommandes infrarouges ou d'autres signaux infrarouges. Grâce à sa simplicité d'utilisation et à la fiabilité de son traitement du signal, le module s'intègre facilement dans différents projets électroniques, par exemple pour réaliser des commandes à distance ou pour transmettre des données sans fil.
Données techniques | |
---|---|
Fréquence de la porteuse | 38kHz |
Affectation des broches
Micro:Bit | Récepteur |
---|---|
Pin 1 | Signal |
3V | +V |
GND | GND |
Exemple de code
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.
makerbit.onIrDatagram(function () {
if (true) {
basic.showIcon(IconNames.SmallHeart)
} else {
basic.showIcon(IconNames.Heart)
}
})
makerbit.connectIrReceiver(DigitalPin.P1, IrProtocol.NEC)
Téléchargement d'un exemple de programme
Ce module peut recevoir des signaux infrarouges et les convertit en signaux numériques qui sont émis à la sortie. Lorsqu'un signal infrarouge est détecté, une LED intégrée sur le module clignote brièvement, offrant ainsi une confirmation visuelle de la réception du signal. Il est idéal pour les projets qui utilisent des télécommandes infrarouges ou d'autres signaux infrarouges. Grâce à sa simplicité d'utilisation et à la fiabilité de son traitement du signal, le module s'intègre facilement dans différents projets électroniques, par exemple pour réaliser des commandes à distance ou pour transmettre des données sans fil.
Données techniques | |
---|---|
Fréquence de la porteuse | 38kHz |
Affectation des broches
Raspberry Pi Pico | Récepteur |
---|---|
GPIO16 | Signal |
3.3V | +V |
GND | GND |
Exemple de code
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 charger l'exemple de code suivant sur votre Pico, nous vous recommandons d'utiliser l'IDE Thonny. Il vous suffit de commencer par sélectionner ***Run > Configure interpreter ... > Interpreter > Which kind of interpreter should Thonny use for running your code? > MicroPython (Raspberry Pi Pico) ***.
La bibliothèque suivante est utilisée pour l'exemple de code :
micropython-ir par Peter Hinch | publié sous la licence MIT.
Pour utiliser cette bibliothèque, vous devez télécharger le dossier ir_rx de la bibliothèque ci-dessus et le charger sur le Pico dans un dossier appelé lib (vous devez le créer si nécessaire).
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
Ensuite, vous pouvez maintenant copier le code ci-dessous dans votre IDE et cliquer sur Run.
# Importer des bibliothèques
import time
from machine import Pin
from ir_rx.nec import NEC_16 # NEC remote, 16 bit addresses
# Méthode de traitement des données reçues
def callback(data, addr, ctrl):
# valider si les données peuvent être traitées
if data < 0:
print('')
else:
# éditer les données reçues
print("Recevoir: \t Adresse:", hex(addr), "\tDonnées:", hex(data))
print("KY-022 Test de récepteur infrarouge")
# Initialiser le récepteur IR
ir = NEC_16(Pin(16, Pin.IN), callback)