KY-022 Module récepteur infrarouge

De SensorKit X40 Wiki

Aller à : navigation, rechercher

Photo

ky-022.jpg

Données techniques / Description sommaire

Module récepteur IR pouvant être utilisé avec l'émetteur KY-005 par exemple.
Fréquence porteuse: 38kHz 
Les signaux infrarouges reçus sont présents en sortie sous forme de séquence numérique.
En outre la LED intégrée clignote rapidement lorsqu'un signal infrarouge a été détecté.

Brochage

3 S V G.png

Exemple de code pour Arduino

Il est possible de réaliser un système de télécommande infrarouge à l'aide des modules émetteur KY-005 et récepteur KY-022. Pour le réaliser, il faut également prévoir 2 cartes Arduino. La première agit comme émetteur et la seconde reçoit le signal et l'envoie à la console.

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

- [Arduino-IRremote] de Ken Shirriff | publiée sous LGPL


Il existe différents protocoles pour l'envoi des données pour les systèmes de transmission infrarouge. Le protocole RC5 est utilisé pour l'exemple suivant. D'autres protocoles sont inclus dans la librairie. Ils se trouvent dans le dossier Documentation/Code.


Code pour le récepteur

// La librairie Arduino-IRremoteest ajoutée
#include <IRremote.h>

// Déclaration de la broche d'entrée correspondante pour le signal de sortie du KY-022
int RECV_PIN = 11;

// Initialisation de la livrairie Arduino-IRremote
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Démarrage du récepteur IR
}

// Boucle de programme principale
void loop() {
  
  // On vérifie si un signal est reçu sur le récepteur
  if (irrecv.decode(&results)) {
    //Si un signal eszt reçu, il est décodé et envoyé dans la console série
    Serial.println(results.value, HEX);
    irrecv.resume(); 
  }
}


Code pour l'émetteur:

//La librairie Arduino-IRremote est ajoutée
#include <IRremote.h>

//...et initialisée
IRsend irsend;

// Les réglages de la sortie sont pris en charge par la librairie
// Les sorties correspondantes sont différentes selon la carte Arduino utilisée
// Arduino UNO:  Sortie = D3
// Arduino MEGA: Sortie = D9
// EUne liste complète des sorties correspondantes est visible à la page:
// http://z3t0.github.io/Arduino-IRremote/
void setup()
{
}

// Boucle de programme principale
void loop() {
        // L'émetteur envoie le signal A90 (en hexadécimal) codé en RC5
        // Cette opération est répétée trois fois, avant une pause de 5 secondes
	for (int i = 0; i < 3; i++) {
		irsend.sendRC5(0xA90, 12); // signal à envoyer [0xA90] | LOngueur du signal envoyé 12 Bits (hex A90=1010 1001 0000)
		delay(40);
	}
	delay(5000); //Pause de 5 secondes entre les impulsions d'émission
}

Exemple de programme à télécharger:

KY-022.zip


Affectation des broches Arduino 1 [récepteur]:

KY-022

Signal = [Pin 11]
+V = [Pin 5V]
GND = [Pin GND]

Affectation des broches Arduino 2 [émetteur]:

KY-005

Signal = [Pin 3 (Arduino Uno) | Pin 9 (Arduino Mega)]
GND+résistance = [Pin GND*]
GND = [Pin GND]
  • *Seulement quand une résistance en série est déjà soudée sur le module et n'est pas raccordée au module avant.

Exemple de code pour Raspberry Pi

Le Raspberry Pi, de par l'architecture avancée de son processeur, a l'avantage de pouvoir faire fonctionner un système d'exploitation Linux. Avec un récepteur infrarouge, non seulement les données simples peuvent être remontées et utilisées, mais des logiciels complets tels que le médiacenter OpenELEC peuvent être commandés via une télécommande infra-rouge.

Un système de contrôle infrarouge peut être mis en place sous Linux avec le logiciel "LIRC" (www.lirc.org | publié sour licence LGPL).

Ci-dessous, nous montrons comment installer le logiciel LIRC et commander un Raspberry Pi avec une télécommande infrarouge.

A cet effet, un module KY-005 peut être utilisé comme émetteur et un module KY-022 comme récepteur.


Affectation des broches GPIO du Raspberry Pi:

KY-005

Signal = GPIO17 [Pin 11]
GND+Widerstand = GND* [Pin 9]
GND = GND [Pin 6]
  • *Seulement quand une résistance en série est déjà soudée sur le module et n'est pas raccordée au module avant.


KY-022

Signal = GPI18 [Pin 12]
+V = 3,3V [Pin 17]
GND = GND [Pin 25]

Installation du logiciel LIRC

Tout d'abord, il faut ouvrir un terminal sur le bureau ou se connecter via SSH avec le Raspberry Pi. On entre ensuite la commande suivante pour installer lirc sur le Raspberry Pi:

sudo apt-get install lirc -y

[La carte Raspberry Pi doit être raccordée à internet]

Pour que le module lirc soit directement disponible pour le démarrage du système d'exploitation, il faut ajouter la ligne ci-dessous à la fin du fichier "/boot/config.txt"

    dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17,gpio_in_pull=up

Cette commande définit "gpio_in_pin = 18" à la broche d'entrée du récepteur IR et "gpio_out_pin = 17" à la broche de sortie de l'émetteur IR.


Le fichier peut être modifié avec la commande suivante:

sudo nano /boot/config.txt

Après l'ajout de cette ligne, le fichier sera enregistré et fermée en appuyant sur les touches [Ctrl + X -> Y -> Entrée].
Le fichier "/etc/lirc/hardware.conf" doit également être modifié à l'aide de la commande suivante:

sudo nano /etc/lirc/hardware.conf

Il faut ensuite modifier les expressions suivantes (DRIVER="UNCONFIGURED" devient DRIVER="default", etc.): 

    DRIVER="UNCONFIGURED" 
    --->>  
    DRIVER="default"
    DEVICE=""
    --->>
    DEVICE="/dev/lirc0"
    MODULES=""
    --->>  
    MODULES="lirc_rpi"

Le fichier modifié doit ressembler à ceci:


# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""

Ensuite, il faut redémarrer la Raspberry Pi en utilisant la commande suivante:

sudo reboot

Test du récepteur IR

Pour tester le récepteur, il faut d'abord arrêter lirc avec la commande: 

sudo /etc/init.d/lirc stop

Ensuite, il faut tester ...

mode2 -d /dev/lirc0

... si la carte Raspberry peut recevoir des signaux. Pour ce faire, prenez une télécommande infrarouge et appuyez sur une touche. Vous devriez voir apparaître des lignes sous la forme suivante:

space 95253
pulse 9022
space 2210
pulse 604
space 95246
pulse 9019
space 2211
pulse 601
space 95252
pulse 9019
space 2210
pulse 603
space 95239
pulse 9020
space 2208
pulse 603
...

Avec la commande...

sudo /etc/init.d/lirc start

... le logiciel lirc peut être redémarré.


Apprentissage du code de la télécommande

Pour enregistrer une télécommande infrarouge dans le système lirc, il faut configurer le fichier "/etc/lirc/lircd.conf". Ce fichier contient les différentes commandes infrarouges. 

Afin de formater le fichier lircd.conf correctement, il faut utiliser l'assistance du logiciel lirc qui crée le fichier automatiquement. La procédure est la suivante:

Tout d'abord, il faut arrêter le service lirc

sudo /etc/init.d/lirc stop

On démarre l'assistant avec la commande suivante:

irrecord -d /dev/lirc0 ~/MeineFernbedienung.conf

Cet assistant procède à une première initialisation de la télécommande. Il faut appuyer sur les touches en alternance pour que le lirc puisse enregistrer le codage de la télécommande.

Bien suivre les instructions de l'assistant. Après l'initialisation, l'assistant vous demandera le nom du bouton, à enregistrer avec un nouveau code infrarouge. Vous pouvez le faire en sélectionnant l'affectation des touches à partir du fichier suivant:

FernbedienungsCodes.txt

Ceux-ci doivent alors être entrés dans l'assistant et validés par Entrée. On commence ensuite à enregistrer les codes infrarouges pour les touches sélectionnées.

Exemple: Entrez [KEY_0] -> validez par Entrée -> appuyez sur "0" de la télécommande -> attente jusqu'à ce que l'enregistrement par l'assistant soit confirmé.

On peut sortir de l'assistant en poussant sur Entrée, s'il n'y a plus de touches à configurer. Le fichier de configuration est créé, mais il faut encore affecter un nom à la télécommande. Pour cela, nous ouvrons le fichier dans l'éditeur:

sudo nano ~/MeineFernbedienung.conf

On peut changer la ligne 17 de

    name  /home/pi/MeineFernbedienung.conf

en

    name  MeineFernbedienung

Il faut veiller à ne pas inclure d'espace ou utiliser des caractères spéciaux dans le nom. En utilisant la séquence de touches [Ctrl + X -> Y -> Entrée], on enregistre et on ferme le fichier. 

Après avoir créé le fichier de configuration, vous pouvez effectuer un backup du fichier lircd.conf à l'aide de la commande suivante:

sudo mv /etc/lirc/lircd.conf /etc/lirc/lircd.conf.bak

et avec la commande...

sudo cp ~/MeineFernbedienung.conf /etc/lirc/lircd.conf

...le nouveau fichier de configuration est utilisé

On peut ensuite...

sudo /etc/init.d/lirc start

...redémarrer le système lirc.

A partir de maintenant, la nouvelle télécommande est enregistrée dans le système lirc et peut être utilisée avec des logiciels compatibles comme le Mediacenter OpenElec. Vous pouvez également tester le fonctionnement de la télécommande à l'aide de la commande:

irw

Pour utiliser la télécommande avec par exemple OpenElec, il faut encore activer lirc dans les options de OpenElec.


Envoyer des commandes avec l'émetteur infrarouge

Si vous voulez controler des dispositifs par infrarouge (par exemple un téléviseur) avec un Raspberry Pi, vous pouvez utiliser les commandes enregistrées précédemment. Ainsi il est possible, par exemple, d'imaginer un logiciel contrôlé par infrarouge ou des périphériques individuels connectés ou non sur le réseau Internet.

Tout d'abord, nous vérifions avec la commande suivante ...

irsend LIST MeineFernbedienung ""

...quelles commandes sont disponibles.


Nous pouvons envoyer maintenant, par exemple, la commande [KEY_0] en utilisant la commande suivante:

irsend SEND_ONCE MeineFernbedienung KEY_0

Le téléviseur ou le récepteur devrait réagir à la commande.  Pour l'appareil ci-dessus, la commande est répétitive.

irsend SEND_START MeineFernbedienung KEY_0

Le code [KEY_0] est répétitif ...

irsend SEND_STOP MeineFernbedienung KEY_0

...jusqu'à ce qui soit stoppé. Ceci est utile pour les fonctions 'volume' ou 'luminosité'.