Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Arduino
  3. Projet 2
Extrait - Arduino S'exercer au prototypage électronique (11 projets créatifs) (2e édition)
Extraits du livre
Arduino S'exercer au prototypage électronique (11 projets créatifs) (2e édition)
1 avis
Revenir à la page d'achat du livre

Projet 2 - Télécommande infrarouge

Présentation

Dans le projet 1 - Décodeur de message infrarouge, nous avons appris à récupérer les informations transmises par une télécommande IR, de TV par exemple. Il ne nous reste plus qu’à utiliser ces informations dans un montage Arduino qui fera office de télécommande et pouvoir ainsi piloter la TV à notre convenance : l’éteindre ou l’allumer à des heures précises, simuler une présence, etc. Toutes sortes de scénarios sont imaginables. Et bien sûr, cela est possible avec tous les appareils disposant d’une télécommande IR.

1. Principe de fonctionnement

Le projet terminé, il suffira de le pointer vers l’appareil à piloter et d’appuyer sur les boutons prévus qui déclencheront des actions sur l’appareil (TV, volet, chauffage, etc.).

Les actions à déclencher auront préalablement été décodées et enregistrées grâce au projet 1. Si l’objectif est, par exemple, d’allumer et d’éteindre votre TV, il vous faudra récupérer les deux instructions nécessaires au programme Arduino pour effectuer ces deux opérations.

2. Notions abordées

Par l’intermédiaire de ce second projet seront rappelées quelques lois mathématiques indispensables...

Matériel nécessaire

Le montage s’articule autour de plusieurs éléments :

  • une plaque de prototypage (ou breadboard) ;

  • une LED IR émettrice ;

  • deux LED classiques, jaunes, vertes ou rouges ;

  • deux résistances de 4,7 kOhms, deux résistances de 220 Ohms, une résistance de 150 Ohms ;

  • deux boutons-poussoirs ;

  • des fils « Dupont ».

Pour la partie programmation, nous utilisons une carte Arduino Uno afin de capter les appuis sur les différents boutons du montage et d’exécuter les envois de signaux IR associés.

Schéma et montage

Le projet précédent a permis de s’initier aux protocoles d’échange d’informations par infrarouge, sous l’angle du récepteur. Ici, nous allons approfondir ces notions par le biais de l’émetteur.

1. L’émission de message IR

Le chapitre précédent nous a présenté l’histoire de la LED IR et son utilisation dans les télécommandes, l’objectif étant de pouvoir échanger des informations à distance entre émetteur et récepteur IR. Mais comment concrètement peut-on échanger des informations simplement par des clignotements lumineux (car il s’agit bien de ça, même s’ils sont invisibles à l’œil nu) ? C’est là qu’intervient la notion de protocole. Chaque fabricant a développé son protocole, il en existe aujourd’hui une multitude mais certains sont devenus des standards : RC5, SIRCS, RECS80, etc.

a. Les protocoles IR

La première télécommande est apparue dans les années 50, elle n’était pas à infrarouge mais à ultrason.

Rapidement sont apparues dans les années 1970 les télécommandes IR sans fil, moins chères à fabriquer et plus efficaces. Elles devaient cependant fonctionner parfaitement dans des environnements a priori hostiles à leur technologie.

En effet, les ondes IR sont par nature sensibles au rayonnement du soleil, aux sources de chaleur ainsi qu’aux différents éclairages (néons, ampoules…) car ils émettent eux-mêmes des ondes IR (celles-ci faisant partie du spectre lumineux naturel). Les fabricants ont trouvé la parade en modulant le signal à une fréquence comprise en 30 et 40 kHz (36 kHz le plus souvent mais cela peut varier selon les marques).

Mais penchons-nous sur le RC5, un des protocoles les plus utilisés, pour comprendre les principes généraux des échanges entre systèmes.

Dans un contexte électronique ou numérique, échanger une information, revient à échanger une succession de valeurs binaires. Il serait facile d’imaginer un protocole ou la valeur binaire 1 correspond à la LED IR allumée...

Programmation de l’Arduino

Comme pour tout programme Arduino, nous allons devoir coder la fonction setup(), et la fonction loop(). Mais commençons par les déclarations préliminaires des librairies utilisées, des constantes, et des variables globales.

1. Déclarations préliminaires

Comme pour le projet 1, nous allons faire appel à la librairie IRremote :

#include <IRremote.h> 

Définissons ensuite, grâce à des constantes, les différentes pins de l’Uno utilisées. Sur le schéma de montage, nous avons utilisé la pin 2 pour la LED IR, les pins 5 et 8 pour les LED de couleur, et les pins 6 et 7 pour les boutons :

#define PIN_IR 2 
#define PIN_LED1 5 
#define PIN_BOUTON1 6 
#define PIN_BOUTON2 7 
#define PIN_LED2 8 

Passons à la fonction de Setup.

2. Fonction setup()

Dans chacun de vos programmes, commencez toujours par initialiser l’utilisation du moniteur série afin d’y afficher des messages et pour déboguer votre code :

  Serial.begin(115200); 

Ensuite viennent des instructions classiques pour chacun de vos programmes Arduino ; commençons par initialiser les pins de la carte Arduino :

  pinMode(PIN_IR, OUTPUT); 
  pinMode(PIN_LED1, OUTPUT); 
  pinMode(PIN_LED2, OUTPUT); 
  pinMode(PIN_BOUTON1, INPUT); 
  pinMode(PIN_BOUTON2, INPUT); 

L’allumage/extinction des LED est commandé par l’Arduino, les pins doivent donc être initialisées en OUTPUT afin d’envoyer la commande. En revanche, les boutons sont des éléments qui vont déclencher une action de la part de l’Arduino, les pins correspondantes sont donc initialisées en INPUT afin de recevoir l’information.

Il nous reste à initialiser les fonctions d’émission IR de la librairie IRremote :

  IrSender.begin(PIN_IR, DISABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN); 

Cette fonction d’initialisation prend les paramètres suivants :

  • Le numéro de pin sur laquelle est connectée la LED IR.

  • Une constante indiquant si un feedback (retour visuel) doit avoir lieu. Le paramètre peut prendre...

Améliorations possibles

Il est possible de faire évoluer ce montage de multiples manières, notamment en multipliant les boutons, permettant ainsi d’envoyer d’autres commandes IR à votre appareil. Mais voyons d’autres améliorations possibles, de l’ordre des astuces Arduino qui facilitent et simplifient les montages.

1. Utiliser les résistances de pull-up internes

Nous avons utilisé ici deux résistances de pull-up de 4,7 kOhms mais les cartes Arduino (et c’est en général le cas aussi sur d’autres types de cartes telles celles à base de ESP32, ou ESP8266) sont pourvues de résistances de pull-up internes sur les pins digitales. La valeur de ces résistances internes est en général de 20 kOhms.

Attention, les pins analogiques ne disposent pas de résistance interne de pull-up.

Cela signifie que le schéma précédent peut être simplifié en supprimant les deux résistances de 4,7 kOhms.

images/04LF11N.png

Schéma modifié

Afin d’activer les résistances internes de pull-up, le code source de la fonction de Setup doit être adapté en modifiant légèrement la configuration des pins 6 et 7 :

  pinMode(PIN_BOUTON1, INPUT_PULLUP); 
  pinMode(PIN_BOUTON2, INPUT_PULLUP); 

Il est très rare de trouver des résistances...