Ap Decoder Trame IR
Ap Decoder Trame IR
Objectif de l’activité
L’objectif de cette activité est d’acquérir et décoder des trames de données envoyées par
une télécommande IR selon le protocole NEC et d’obtenir sont décodage en Hexadécimale dans
un terminal série Arduino.
Les télécommandes IR sont partout, facilement récupérables sur de nombreux objets du quotidien
et à défaut, leur coût d’acquisition est dérisoire.
Pour transmettre des informations à un équipement (un téléviseur par exemple), il est nécessaire
que la TV et la télécommande utilise le même protocole. Cela signifie que n’importe
télécommande ne peut pas commander n’importe quel équipement !
Par contre, il est possible de détourner l’utilisation d’une télécommande en la réutilisant pour
commander tout autre équipement comme des leds, des moteurs, etc.
Il existe de nombreux protocoles de transmissions (NEC, Sony SIRC, Philips RC5, Philips RC6,
données brutes...) et plusieurs manières de coder les informations. Heureusement une librairie
pour Arduino, « Irremote.h », gère tout ça pour nous facilement.
➢ Principe de fonctionnement
Une diode émet des pulses en infra-rouge pour transmettre un signal de télécommande codé, vers
à un récepteur infra-rouge placé dans un appareil que l'on commande à distance. Dans notre cas,
on récupérera le code dans une carte Arduino.
La portée est de plusieurs mètres, en ligne droite sans obstacles, le signal est invisible à l'œil
humain.
ApDecoderTrameIR.odt Page 1
Les signaux IR sont modulés à 38 kHz pour éviter les interférences avec la lumière ambiante. Le
récepteur 38 kHz gère cette modulation directement.
Matériels nécessaires
Figure 1
En cliquant sur l’image vous accéderez à la simulation TinkerCad (qui ne fonctionnement pas
d’ailleurs) où vous y trouverez le code à téléverser ou directement en téléchargeant le dossier
« detectionProtocole ».
➢ Téléverser le programme dans la carte Arduino, lancer le terminal serie et appuyer sur
n’importe quelle touche de la télécommande la dirigeant vers le récepteur infrarouge.
➢ Identifier le protocole utilisé.
ApDecoderTrameIR.odt Page 2
Analyse d’une trame
➢ Prendre connaissance de l’annexe relatif au protocole NEC (il est indispensable de bien le
comprendre pour réaliser la suite).
Pour rappel, le code hexadécimal interprété par la carte Arduino pour la touche 1 est FD08F7.
ApDecoderTrameIR.odt Page 3
ANNEXE PROTOCOLE NEC
Le protocole NEC a été développé par l’entreprise japonaise NEC (aujourd’hui Renesas) et a été
adopté par les principaux fabricants japonais d’électronique grand public
Dans le protocole NEC, chaque fabricant se voit attribuer un code unique qui est contenu dans la
commande transmise, ce qui évite la possibilité de faux déclenchements par d’autres combinés
distants.
➢ Caractéristiques
➢ Adresse de 8 bits (mode étendu disponible, doublant la taille de l’adresse)
➢ Commande de 8 bits
➢ L’adresse et la commande sont transmises deux fois pour plus de fiabilité.
➢ Fréquence porteuse de 38 kHz.
➢ Temps de bit de 1,125 ms ou 2,25 ms.
➢ Modulation
Le protocole NEC utilise le codage par distance d’impulsions (Pulse Distance Encoding).
Chaque impulsion est une salve de porteuse de 38 kHz d’une longueur de 560 µs (soit environ 21
cycles).
➢ Un « 1 » logique prend 2,25 ms pour être transmis,
➢ Un « 0 » logique n’en représente que la moitié, soit 1,125 ms.
➢ Démodulation
Le récepteur infrarouge va capter ce signal modulé à 38kHz et va le démoduler de la manière
suivante (traits épais) convertissant les salves de modulation en signaux hauts de largeur 562 μ s
Très important : Prendre soin de noter la manière dont le 0 logique et le 1 logique sont codés.
ApDecoderTrameIR.odt Page 4
➢ Protocole
L’image ci-dessous montre un train d’impulsions typique du protocole NEC :
Les octets sont transmis en mode LSB First : bit de poids faible en premier.
Chaque octet (l’adresse et la commande) est transmis deux fois (on parle de redondance) : une
fois « normalement », et une fois avec tous les bits inversés (cette technique permet d’augmenter
la fiabilité de la transmission) ;
ApDecoderTrameIR.odt Page 5
➢ Répétition NEC
Une commande n’est transmise qu’une seule fois, même si la touche de la télécommande reste
enfoncée.
Toutes les 110 ms, un code de répétition est transmis tant que la touche reste enfoncée. Ce code
de répétition est simplement une impulsion de 9 ms suivie d’un espace de 2,25 ms et d’une
nouvelle impulsion de 560 µs.
ApDecoderTrameIR.odt Page 6