Projet 1 - Décodeur de message infrarouge
Présentation
La télécommande infrarouge (IR) fait partie de notre quotidien depuis le milieu des années 1970. Une multitude d’appareils sont pilotables à distance grâce à cette technologie : téléviseur, porte de garage, voiture, box internet, casque audio, etc.
Après la réalisation de ce premier projet, nous serons capables de vérifier le bon fonctionnement d’une télécommande IR, de déchiffrer les signaux qu’elle envoie, et de les enregistrer afin de les utiliser dans le second projet et de pouvoir ainsi piloter n’importe quel appareil IR à partir d’une Arduino.
1. Principe de fonctionnement
Après avoir terminé le montage, il sera possible de pointer une télécommande dans sa direction. L’appui sur les boutons de celle-ci déclenchera le décodage et l’affichage des trames d’informations IR dans le moniteur série de l’IDE Arduino.
2. Notions abordées
Ce premier projet permettra d’évoquer l’utilisation du moniteur série de l’Arduino, de faire appel aux librairies, de différencier les entrées analogiques et numériques de l’Arduino, et de s’initier aux protocoles d’échanges de données en électronique.
Matériel nécessaire
Le montage est construit autour d’un composant principal, le récepteur IR VS1838B.
Récepteur IR VS1838B
Le VS1838B est d’un rapport qualité/prix assez intéressant puisqu’il est possible de le trouver pour moins d’un euro. Il capte les ondes IR au travers de sa photodiode, le signal est amplifié pour être ensuite filtré, et finalement traité de manière logique afin d’en extraire des trames d’impulsions. Ces impulsions sont alors disponibles sur sa broche de signal S.
Pour réaliser ce montage, nous utilisons également une carte Arduino Uno afin de réaliser toute la partie « intelligente » de décodage et d’affichage des signaux.
Carte Arduino Uno
Comme pour tous les montages présentés dans ce livre, toute autre carte Arduino « classique » (Mega, Nano, Due…) peut également faire l’affaire moyennant quelques adaptations simples du montage et/ou du programme. C’est une bonne manière pour le lecteur de s’approprier le projet.
Schéma et montage
Comme dans tout protocole d’échange d’informations, il y a un émetteur (ici, la télécommande IR), et un récepteur (l’appareil à piloter).
Nous décrirons brièvement le fonctionnement de l’émetteur pour nous attarder ensuite sur la raison d’être de ce premier projet : le récepteur IR.
1. La télécommande IR
Il existe plusieurs technologies de télécommande (infrarouge, radio, ultrason, etc.). Celle qui nous intéresse ici permet d’envoyer des signaux vers un récepteur IR grâce à un composant électronique bien connu et largement utilisé : la LED (Light Emitting Diode, ou DEL en français, diode électroluminescente). Les LED peuvent émettre dans toutes les couleurs mais la première à avoir vu le jour, en 1962, fut la LED IR qui émet donc dans la lumière non visible.
Il est possible, malgré tout, de voir la LED d’une télécommande IR fonctionner en l’observant à travers un appareil photo numérique comme celui d’un smartphone.
Comment reconnaît-on une télécommande IR ? S’il est nécessaire de pointer la télécommande vers l’appareil à piloter pour que cela fonctionne, c’est qu’elle est infrarouge....
Programmation de l’Arduino
La structure d’un programme (ou sketch, nom fréquemment rencontré sur les sites web destinés à l’Arduino) est composée de plusieurs blocs :
-
l’initialisation (ou setup) ;
-
la boucle d’exécution (ou loop).
Mais avant cela, il est nécessaire de déclarer l’ensemble des librairies, des constantes et des variables globales utilisées dans nos deux fonctions setup() et loop().
1. Les déclarations préliminaires
La majorité des programmes Arduino nécessitent l’utilisation d’une ou plusieurs librairies. Une librairie (ou bibliothèque) est un ensemble de déclarations et de fonctions destinées à un usage particulier. Le nombre de bibliothèques disponibles est impressionnant, et il existe pratiquement une bibliothèque pour chaque usage. L’étape de recherche de librairie fait donc partie de la démarche classique dans un projet Arduino. La multitude de sites web ou de chaînes YouTube traitant de l’Arduino est une source inépuisable d’informations, mais qu’il faut parfois traiter avec un peu de recul et un œil aguerri. Le plus simple reste sans doute d’ouvrir le gestionnaire de bibliothèque de l’IDE Arduino en cliquant sur Outils - Gérer les bibliothèques afin d’afficher la fenêtre suivante, et d’avoir un aperçu et une brève description de toutes les librairies disponibles :
Fenêtre de gestion des bibliothèques
N’hésitez pas à naviguer dans ce menu pour vous faire une idée de toutes les possibilités offertes.
Pour ce premier projet, nous incluons la librairie IRremote qui nous dispense de programmer toute la partie liée à la réception des trames d’impulsions sur la pin 7 de l’Arduino, leur décodage, la reconnaissance des protocoles, et bien d’autres choses :
#include <IRremote.h>
#define PIN_SIG 7
La seconde ligne définit la constante PIN_SIG à une valeur de 7, cette constante nous servira dans la suite du programme pour faire référence à la pin de l’Arduino sur laquelle est connectée la pin de signal du VS1838B.
Pourquoi utiliser une constante de type...
Améliorations possibles
Ce montage est déjà très utile pour vérifier le bon fonctionnement d’une télécommande, capter ses trames et les enregistrer. Mais quelques petites améliorations peuvent encore le perfectionner.
Pour aller plus loin dans l’utilisation de la bibliothèque IRremote, consultez cette page web :https://github.com/Arduino-IRremote/Arduino-IRremote
1. Réagir aux messages d’une télécommande
Le programme précédent peut être complété afin de déclencher des opérations particulières selon l’appui sur tel ou tel bouton de votre télécommande. Pour illustrer cette amélioration, il est nécessaire d’ajouter une LED (rouge, verte, etc. peu importe la couleur) ainsi qu’une résistance comprise entre 170 et 220 Ohms, selon le schéma suivant.
Amélioration possible du projet 1
Une LED colorée n’est pas fondamentalement différente d’une LED IR, elle dispose d’une coque rouge, ou verte, ou jaune, etc. et de deux pattes. La plus longue (l’anode) doit être reliée côté + du circuit, la plus courte (la cathode) doit être reliée côté - du circuit.
Connectons d’abord la résistance à la pin numérique 8 de l’Arduino d’un côté...
Ressources supplémentaires
Documentation de la libraire IRremote :
https://github.com/Arduino-IRremote/Arduino-IRremote
L’histoire de la télécommande :
http://nosanneesjeunesses.eklablog.fr/la-telecommande-infrarouge-a118728688
http://www.la-telecommande.com/actualite/histoire-de-la-telecommande/
Différences entre signal analogique et numérique :
https://www.multipower.fr/ressources/blog-2/signaux-analogiques-numeriques/
https://culturesciencesphysique.ens-lyon.fr/ressource/principe-numerisation.xml