KY-005 Module transmetteur infrarouge

De SensorKit X40 Wiki

Aller à : navigation, rechercher

Photo

ky-005.jpg

Données techniques / Description sommaire


Diode électroluminescente émettant en infrarouge permettant la réalisation d'une télécommande IR par exemple. En fonction de la tension d'entrée, des résistances en série sont nécessaires afin d'éviter un emballement thermique.


Vf= 1,1V


If= 20mA


longueur d'onde d'émission: 940nm (lumière invisible)


Résistance de limitation:

Rf (5V) = 220Ω 

[par exemple pour l'utilisation avec une carte basée sur un Atmel, telle qu'une Arduino]


Rf (3,3V) = 120Ω

[par exemple pour l'utilisation avec une carte Raspbverry Pi]


Exemple d'utilisation avec une carte Arduino et le programme ON-OFF (pour le fonctionnement en télécommande, le module doit être raccordé sur la broche D3):

KY-005-resistance.jpg

Brochage

KY-005-brochage2.png


  • *Possibilité de souder directement la résistance nécessaire sur le circuit imprimé (non conseillé: résistance CMS délicate à souder).

Exemple de code pour Arduino

Exemple de code ON/OFF

Cet exemple de code montre comment une LED est alternativement activée pendant quatre secondes et ensuite désactivée deux secondes.

int Led = 13;

void setup ()
{
  pinMode (Led, OUTPUT); // Déclaration de la broche de sortie LED
}

void loop () //Boucle de programme principale
{
  digitalWrite (Led, HIGH); // la LED est activée
  delay (4000); // Temporisation de 4 secondes
  digitalWrite (Led, LOW); // la LED est déactivée
  delay (2000); // Temporisation de 2 secondes
}

Exemple de programme à télécharger

KY-005.zip


Exemple de code en fonction télécommande


Vous pouvez réaliser une télécommande infrarouge à l'aide des modules KY-005 et KY-022 et de deux cartes Arduino. La première carte Arduino fonctionnera en émetteur IR et la seconde en récepteur IR.

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

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

Cette librairie est incluse et doit être copiée dans le dossier 'Libraries' avant de lancer l'IDE Arduino.

Pour les systèmes de transmission infrarouge, il existe différents protocoles de transmission des données. Dans l'exemple suivant, le protocole RC5 est utilisé pour la transmission des données - la bibliothèque utilisée "Arduino irRemote" effectuera la conversion selon le code RC5. Il existe également d'autres protocoles, ils sont reprise dans la bibliothèque Documentation / Code.


Code pour le récepteur:

// Ajout de la librairie Arduino-IRremote
#include 

// La broche d'entrée correspondante peut être déclarée pour le signal de sortie du KY-022
int RECV_PIN = 11;

// La livrairie Arduino-IRremote est initialisée
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Le récepteur infrarouge démarre
}

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


Code pour l'émetteur:

//Ajout de la librairie Arduino-IRremote...
#include 

//...et initialisation de cette librairie
IRsend irsend;

// Les réglages de la sortie à prendre 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
// Une 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) en codage 'RC5'.
        // Cette opération est répétée trois fois.Ensuite, une pause de 5 secondes est mise en place.
	for (int i = 0; i < 3; i++) {
		irsend.sendRC5(0xA90, 12); // Signal à envoyer: [0xA90] | Signal de 12 Bits envoyé (hex A90=1010 1001 0000)
		delay(40);
	}
	delay(5000); //Pause de 5 secondes entre les impulsions de transmission.
}

Exemple de programme à télécharger

KY-005.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 soudée sur le module .

Exemple de code pour Raspberry Pi


On présente ici deux exemples d'application de ce module.

Le premier consiste à alimenter la diode avec un signal constitué de courtes impulsions, c'est une utilisations courant pour les télécommandes infrarouges basiques.  

Exemple de code ON/OFF

Exemple de programmation en Python

#!/usr/bin/python
# coding=utf-8

# Les modules nécessaires sont importés et mis en place
import RPi.GPIO as GPIO
import time
  
GPIO.setmode(GPIO.BCM)
  
# La broche d'entrée du capteur est déclarée. En outre la résistance de Pull-up est activée.
LED_PIN = 24
GPIO.setup(LED_PIN, GPIO.OUT, initial= GPIO.LOW)
  
print "LED-Test [Appuyez sur Ctrl + C pour terminer le test]"
 
# Boucle de programme principale
try:
        while True:
                print("LED 4 secondes ON")
                GPIO.output(LED_PIN,GPIO.HIGH) #la LED est allumée
                time.sleep(4) #Temporisation de 4 secondes
                print("LED 2 secondes OFF") 
                GPIO.output(LED_PIN,GPIO.LOW) #La LED est éteinte
                time.sleep(2) #Temporisation de 2 secondes
  
# remise en place de tous les GPIO en entrées
except KeyboardInterrupt:
        GPIO.cleanup()

Brochage Raspberry Pi:

Sensor Signal = GPIO24 [Pin 18]
GND+Widerstand = GND* [Pin 9]
Sensor GND = Masse [Pin 6]
  • *Seulement quand une résistance en série est soudée sur le module.

Exemple de programme à télécharger

LedTest_RPi_4On_2Off.zip

Commande pour lancer le programme:

sudo python LedTest_RPi_4On_2Off.py

Exemple de code en fonction télécommande

La Raspberry Pi a l'avantage sur l'Arduino de pouvoir fonctionner sous Linux. A l'aide d'un récepteur infrarouge, il est possible de transmettre des signaux simples mais il est également possible d'utiliser des logiciels tel que par exemple OpenElec.

Pour créer un système de télécommande IR facilement, on utilise le logiciel Lirc (publié sous licence LGPL - Website). Nous montrons ci-dessous comment Lirc facilite l'apprentissage d'un code et comment l'envoyer par infrarouge (par exemple, à partir du Raspberry Pi, réaliser une télécommande IR pilotable par logiciel).

Pour ce faire, le module KY-005 peut être utilisé comme un émetteur infrarouge et le KY-022 comme récepteur infrarouge.


Affectation des broches Raspberry Pi:

KY-005

Signal = GPIO17 [Pin 11]
GND+Résistance = GND* [Pin 9]
GND = GND [Pin 6]
  • *Seulement quand une résistance en série est soudée sur le module .


KY-022

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

Installation de 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é'.