Télécommande IR

L’objectif de cette activité est d’acquérir et décoder des trames de données envoyée par une télécommande IR.

 

Acquisition des trames

Câblage du récepteur IR

Le récepteur IR doit être alimenté en 5V, et sa broche de donnée doit être connectée à un port numérique de l’Arduino capable de générer une interruption.

Consulter l’article sur ce type de récepteur IR.

Télécharger la datasheet du récepteur VS1838B.

 

Réaliser le câblage du récepteur sur l’Arduino (puis le prendre en photo).

Pour l’Arduino UNO, nous choisissons le port numérique 2 (car il peut être utiliser pour gérer des interruptions).

 

Programme Arduino

Le programme permet d’acquérir le signal physique émit par la télécommande tel qu’il a été reçu par le récepteur.

Copier puis coller le programme ci-dessous dans l’éditeur de l’IDE Arduino
Code
const byte interruptPin = 2;
const byte lt = 200;
volatile byte state = 0;
volatile byte trame[lt];
volatile unsigned long ttime[lt];
volatile byte i = 0;
volatile unsigned long startt;
const unsigned long tlimite = 150000;
volatile unsigned long t;

void setup() {
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), front, CHANGE);
  Serial.begin(115200);
  reset();
}

void loop() {
}

void front() {
  t = micros();
  if (i == 0) {
    startt = t;
  }
  if (t-startt > tlimite) {
    afficher();
  }
  else {
    trame[i] = state;
    ttime[i] = t-startt;
    i++;
    state = 1-state;
    trame[i] = state;
    ttime[i] = ttime[i-1];
    i++;
    
    if (i >= lt) {
      afficher();
    }
  }
}


void afficher() {
  for (int j = 0; j<lt ; j++){
    if (trame[j] < 2) {
      Serial.print(ttime[j]);
      Serial.print("\t");
      Serial.println(trame[j]);
    }
  }
  reset();
}

void reset() {
  for (int j = 0; j<lt ; j++){
    trame[j] = 255;
    ttime[i] = 0;
  }
  state = 0;
  i = 0;
}

 

Procédure d’acquisition

Après avoir téléversé le programme dans le microcontrôleur :

  • Ouvrir le moniteur série de l’IDE Arduino,
  • Appuyer sur une touche de la télécommande (en face du récepteur),
  • Copier les données du moniteur série (Ctrl+A puis Ctrl+C),
  • Ouvrir un tableur (MS Excel, LibreOffice Calc, …),
  • Coller les données sur une feuille de calcul (Ctrl+V),
  • Insérer un graphique de type XY (exemple avec MS Excel : « Nuage de points avec lignes droites ») avec ces valeurs,
    Capture d'écran
  • Ôter les valeurs inutiles (surtout en fin d’acquisition),
  • Imprimer la courbe ou bien la copier dans un document numérique permettant de l’annoter.

 

Décodage

Consulter la documentation sur le protocole NEC.

 

 

Travail demandé

A l’aide des information données sur la datasheet du récepteur, donner la fréquence porteuse du signal IR.

 

Relever sur la courbe acquise avec l’Arduino la durée de la séquence de start. Comparer avec celle spécifiée dans la datasheet.

 

A l’aide de la documentation sur le protocole NEC., décoder la trame (annoter les valeurs logiques directement sur la courbe imprimée ou copiée).

 

En déduire l’adresse de la télécommande (au format hexadécimal)
×

 

Déterminer le code de la commande associée à la touche 5
×

 

 

 

Laisser un commentaire

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