Arduino : Dupliquer sa télécommande IR

Re, j’espère que vous allez toujours bien. Aujourd’hui je vais aussi vous montrer à l’aide d’un Arduino/Gemino comment dupliquer le signal d’une télécommande infrarouge (IR) que l’on a tous chez nous pour piloter notre TV, notre lecteur de DVD, etc…

Alors oui, c’est peut-être anodin, mais pouvoir dupliquer une télécommande est utile. Prenons un exemple, vous allez vous coucher et si vous avez une télé dans la chambre vous l’allumez pour vous endormir devant… Allez on ne ment pas on est beaucoup comme cela… Moi le premier… Le vendeur ne met qu’une télécommande dans le carton et vous vous endormez dessus… Et bien votre femme qui elle n’aime pas le bruit de la télé pour s’endormir va devoir batailler pour l’éteindre soit en se relevant pour appuyer sur le bouton de ladite TV soit en retrouvant la télécommande originale… Pas très commode… 😅

Et les petits malins qui pensaient que confier la télécommande originale à sa femme avant de s’endormir pour qu’elle éteigne la TV à votre place marche, je vous conseille, de repenser votre stratégie à long terme… Vous êtes des hommes, pas des garçons que maman bichonne… Enfin moi ce que j’en dis ! 😈

Exemple plus pratique et moins sujet à controverse, si vous avez un ampli, un lecteur de DVD, une TV dans votre salon, etc… Il peut être agaçant de devoir les allumer un à un au lieu d’appuyer sur un seul bouton… Alors, pourquoi ne pas fabriquer une télécommande universelle??? 😊

Bon il va falloir s’attaquer à un peu de théorie maintenant, rien de méchant je vous assure je vais rester très généraliste voir trop diront certains et ils n’ont pas tort… Mais le sujet est très vaste et complexe. L’infrarouge est une lumière dont la longueur d’onde ce situe au-delà de 850nm. Nous ne sommes donc pas capables de voir si la LED est allumé ou non… Qui plus est, étant donné les temps d’allumages qui sont de l’ordre de la milliseconde il faut avoir des yeux bioniques pour voir la LED clignoter. Pour faciliter la compréhension de tout cela, je dois faire de gros raccourcis et mon but n’est pas de vous perdre dans des explications sans fin… 😜

Comme il peut vite devenir complexe de rentrer dans les détails du fonctionnement de l’IR à cause de plusieurs protocoles pour transmettre les données, et que le but de cet article est quand même d’arriver à faire quelque chose, j’ai trouvé un schéma bien pratique qui résume assez bien la transmission des données :

schema_signal_rf
Source : http://www.oumnad.123.fr/Telecommande-IR/telecommande-IR.htm

Vous remarquerez que le signal est identique, mais qu’il est inversé… C’est vrai, il faut traiter le signal pour le renverser… Quand je vous disais que cela pouvait vite devenir complexe avec l’IR… Je ne vous parlerai donc pas de modulation de fréquence ou de modulation d’amplitude c’est long et terriblement complexe a expliqué de façon claire par écrit… Mais sachez que si vous voulez aller plus loin il ne faut pas hésiter car c’est vraiment passionnant… 👌

Alors oui les électroniciens purs s’arracheront les cheveux à la lecture de ces lignes, car la brièveté et la simplicité de mes explications sont impardonnables… 😰 Mais comprenez bien que le but et de montrer que c’est assez simple de cloner une télécommande IR commune avec bien peu de choses… Effectivement pour émettre et recevoir des signaux IR il suffit de quelques composants électroniques qui ne valent pas très cher (diodes et résistances…) Vous trouverez facilement les références et le schéma sur internet…

Pour simplifier tout cela, personnellement, je vous conseille d’utiliser :

Comme cela pour une somme modique (15 euros grand maximum frais de ports compris) vous aurez tout ce qu’il faut… Et croyez moi les possibilités sont assez énormes… Mais vous comprendrez cela bien assez vite et je vous montrerai très bientôt pourquoi… Mais revenons à nos moutons…

À part cela il nous faut juste un Arduino Uno, son câble USB, quelques câbles, une breadboard et bien entendu un appareil piloté par une LED IR… Comme une TV par exemple. Ensuite, il vous faut la librairie IR de Shirriff :

Après l’avoir récupérée et l’installée dans l’Arduino IDE. On s’attaque à la partie clonage de la télécommande. Réaliser le montage suivant :

signal_rf_groveIl vous faudra alors envoyer le sketch IRrecord sur votre Arduino Uno. Eh oui, le pin 12 est bien relié à la masse. Cela permet de simuler un bouton pressoir. Si le signal est à la masse, l’Arduino lit les codes IR reçue sur le port 3. Si le câble flotte en l’air, l’Arduino envoie le dernier code IR qu’il a pu décoder grâce au port 11.

Il ne vous reste plus qu’à ouvrir le moniteur série de l’Arduino IDE pour voir si vous recevez le code IR ou si vous l’envoyez :

serial_ir_recvJ’ai testé sur les rubans de LED que j’ai décrit ici : http://anderson69s.com/2015/01/25/ruban-led/

Maintenant que vous connaissez le protocole de votre télécommande et le signal d’allumage par exemple. Dans mon cas, le protocole est celui de NEC et le code d’allumage est 0x00FF02FD. Il va maintenant falloir générer un petit code pour vérifier que votre appareil s’allume et s’éteint. Comme la librairie est très bien faite, il vous suffit d’ouvrir l’exemple IRsendDemo. Celui-ci permet par défaut, d’envoyer un signal IR d’arrêt/d’allumage des TV Sony via le port 3 de l’Arduino si un caractère est reçu dans le Serial. Pour mon exemple, il a fallu que je le modifie en :

/*
 * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
 * An IR LED must be connected to Arduino PWM pin 3.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

IRsend irsend;

void setup()
{
  Serial.begin(9600);
}

void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendNEC(0x00FF02FD, 32); // Sony TV power code
      delay(1000);
    }
  }
}

La seule modification étant :

irsend.sendSony(0xa90, 12); // Sony TV power code
delay(40);

qui ce transforme en :

irsend.sendNEC(0x00FF02FD, 32); // NEC power code
delay(1000);
Explications :

J’ai tout d’abord augmenté le délai, car 40 millisecondes c’est « un peu court ». Ensuite dans le fichier IRremote.h on peut trouver vers la ligne 95 :

class IRsend
{
public:
 IRsend() {}
 void sendNEC(unsigned long data, int nbits);

Après une rapide recherche sur Google, on découvre que le protocole NEC fonctionne sur 32 bits expliquant le passage de 12 à 32 dans le code. Une fois mon exemple uploadé sur l’Arduino j’envoie une lettre dans le moniteur série et magie : le ruban LED s’allume et s’éteint trois fois!!! 🎉🎉

Il ne reste plus qu’à rédiger le code qui correspond à vos attentes en fonction de ce que vous voulez faire… 😏

@bientôt Anders

8 réponses sur “Arduino : Dupliquer sa télécommande IR”

  1. Bonjour,

    je suis un élève de terminale STID option SIN à Joué les Tours dans le lycée Saint Gatien.

    Je réalise un projet de 70 heures pour le Bac, avec un groupe de 3 personne au total, qui consiste à modifier une télécommande, pour téléviseur, avec le strict minimum de touches pour des personnes ayant des handicapes.
    Avec un système de bloqueur de chaines inadaptés et un système de commande vocale. On utilise un carte arduino leonardo.

    Je vous dit cela car je pense vraiment que vous pourriez nous aider à avancer dans les recherches.

    Je vous remercie par avance de nous donnez tout ce que vous pourrez comme informations à propos de notre projet.

    Vous pouvez me contacter par mail voir par téléphone: 06 99 04 36 84

    Votre plus grande aide sera le mieux pour nous.
    Merci

    Bran

  2. Bonsoir,

    Post intéressant.

    Pour ma part, je ne cherche pas à cloner un signal IR, mais plutôt « shunter » un récepteur IR pour allumer ou éteindre l’appareil .

    Je m’explique:

    J’ai à la maison des pompes à chaleur avec plusieurs split (unité intérieure). Toutes fonctionnent avec des télécommande.
    Ce que je souhaite faire, c’est piloter la marche et l’arrêt de chaque split, mais directement depuis le split, à l’air d’un « relais ». Bon ok, je pense qu’il y a un petit montage avec quelques composant électronique pour réussir à réaliser cela.

    En clair, comment lire la « consigne » d’un récepteur IR et comment la dupliquer avec un p’tit montage en CI?

    1. Bonjour Anthony, j’espère que vous allez bien.

      Pourriez-vous reformuler votre besoin? J’ai un peu de mal à comprendre ce que vous voulez accomplir à l’aide de l’Arduino. Afin que je vous aiguille sur la bonne voie.

      @Bientôt Anders

  3. Bonjour,
    Je trouve votre post super intéressant.
    Je possède un véhicule oldtimer de 1991. J ai une cle avec télécommande infrarouge.
    Je cherche a avoir une deuxième cle avec télécommande et cela semble impossible a trouver. J ai bien fait faire une deuxième clé, mais je cherche soit une deuxième cle avec telecommande IR, soit une télécommande porte clés que je pourrais utiliser ? Est ce possible ? Quelle télécommande pourrait le faire ?
    J ai regardé sur plusieurs sites mais n ai pas encore trouvé de réponse .
    Pouvez vous m’aider ? Si pas’ me renvoyer vers un autre site ?
    Grand merci,
    Guy

    1. Bonjour Guy, j’espère que vous allez bien.

      Si vous ne trouvez pas de clé IR, dans le commerce qui répond à vos attentes, vous pouvez essayer de lire le code IR grâce à un Arduino et fabriquer un petit montage qui vous permettra d’ouvrir votre voiture.

      @Bientôt Anderson69s

  4. Pour les voitures, c’est fini.
    Trop facile. Il suffisait de capter le code du propriétaire quand il ouvrait sa caisse.

    1. Bonjour guy, j’espère que vous allez bien.

      Pour être honnête, je n’ai pas ré-éssayer depuis quelques années. Je suppose que depuis, les constructeurs font mieux. Cependant pour les anciens modèles rien ne sera fait…

      Si je pouvais mettre la main sur une clé de voiture récente, je pourrai essayer de voir comment cela fonctionne et faire du reverse afin d’en savoir plus sur la sécurité de nos jours…

      @Bientôt Anders

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Traduction :