Commande à distance avec Arduino et la bibliothèque IRremote.

Commande à distance avec Arduino
Commande à distance avec Arduino

Qu’en dites vous de pouvoir utiliser une télécommande por allumer ou éteindre la lumière? Dans ce post nous allons nous servir d’une télécommande et d’un capteur infrarouge afin d’allumer ou éteindre une diode électroluminescente. Ce sont des éléments que vous pouvez appliquer dans des futurs projets avec votre Arduino.

Les capteurs infrarouges sont de petits microchips composés d’une cellule photoélectrique, conçus pour capter la lumière infrarouge. Ils sont généralement à la base des toutes les télécommandes pour TV ou HIFI.

Allumer une diode avec une télécommande.

Il est nécessaire:

  • Arduino Uno ou équivalent.
  • Breadboard.
  • Fils.
  • Capteur infrarouge.
  • Télécommande.
  • Led.
  • Résistance 220 Ohms.
Pins du capteur infrarouge
Pins du capteur infrarouge

Ce capteur possède un filtre interne pour détecter des fréquences infrarouges proches à 38 KHz, cela le fait compatible avec la plupart de commandes infrarouges. Il intègre trois pins de connexion.

Télécommande
Télécommande

Chaque fabricant de télécommandes développe son propre protocole de communication, c’est pour cela que les commandes ne sont pas toutes pareilles; cependant, toutes les commandes usent des signaux qui varient entre les fréquences à 36 et à 50 KHz, étant la plus utilisée celle à 38 KHz.

Connexion du récepteur infrarouge à la plaque d' Arduino.
Connexion du récepteur infrarouge à la plaque d’ Arduino

La première chose que l’on doit connaître est le code que notre télécommande envoie, afin de savoir si on est en train d’allumer ou éteindre la diode. Donc, nous allons identifier le code qui règle les boutons de la commande que nos voulons utiliser (dans ce cas les bouton 1 et 2).

#include <IRremote.h>
int RecepteurIR = 11;
IRrecv irrecv (RecepteurIR);
decode_results Valeur;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();  // Initialise le récepteur
}

void loop() {
  if(irrecv.decode(&Valeur)){
    // pour découvrir les valeurs des boutons 1 et 2
    Serial.print("0x");
    Serial.println(Valeur.value, HEX);  // Montrer sur moniteur
    delay(50);
    irrecv.resume(); // Se prépare pour recevoir la donnée suivante 
  }
}

On commence par ajouter la bibliothèque IRremote.h, chargée de codifier les données et de nous rendre la valeur en hexadécimal. Avec la fonction IRrecv irrecv() on indique que le pin 11 sera le port d’entrée des données. Ces données reçues seront enregistrées dans la variable valeur, avec l’instruction decode_results.

Dans le bloc setup() on initialise le port série et le récepteur avec l’instruction irrecv.enableIRIn().

Dans le bloc loop(), dès que la plaque reçoit un signal, il le montrera sur le moniteur série. De cette façon, si on appuie un bouton, le moniteur doit nous montrer le code correspondant à ce bouton précis.

On pourra tester que chaque bouton envoie un code différent. Nous garderons ceux des boutons 1 et 2. Une fois qu’on a identifié les codes des boutons, on passera à programmer pour allumer ou éteindre une diode selon le bouton pressé.

#include <IRremote.h>
int RecepteurIR = 11;
IRrecv irrecv (RecepteurIR);
decode_results Valeur;

void setup() {
  Serial.begin(9600);
  pinMode(6, OUTPUT);
  irrecv.enableIRIn();
}

void loop() {
  if(irrecv.decode(&Valeur)){
    switch(Valeur.value){
      case 0xB16A8E1F:        // bouton 1
      digitalWrite(6, HIGH);  // allumer
      break;
      case 0x2FD40BF:          // bouton 2
      digitalWrite(6, LOW);   // éteindre
      break;
    }
    irrecv.resume();
  }
}

Nous pouvons aussi, avec ce programme, ajouter autant de diodes comme de boutons a notre télécommande.

Articles similaires
Laisser un commentaire