Tutoriel Arduino telecommande IR
Tutoriel PDF Arduino telecommande IR
...
Pour utiliser une télécommande infrarouge au sein d’un programme Arduino, il est nécessaire d’utiliser une librairie qui n’est pas forcément installée sur votre ordinateur.
REMARQUE : les explications sont données en utilisant la version 1.6.9 du programme Arduino. Téléchargeable sur url ..
En premier lieu vérifier si cette librairie appelée « IRremote » est déjà installée :
- Lancer le logiciel Arduino,
- Cliquer sur « croquis »,
- Cliquer sur « inclure une bibliothèque »,
- Consulter la liste des librairies présentes.
Lors de l’installation de la version Arduino 1.6.9 il y a bien cette bibliothèque « Robot IR remote ». Celle-ci ne fonctionne pas avec le programme de test que je vous communique ci-dessous.
Pour avoir cette bibliothèque il suffit de cliquer en haut du menu « Gérer les bibliothèques »
Dans cette zone taper « irremote ». Vous devriez avoir alors cet écran
Cliquer sur « More info » puis sur « installer». Votre librairie sera installée au bon endroit. Une fois installée cliquer sur « fermer »
C’est une des solutions pour installer une librairie. Voici le lien pour avoir plus d’information sur l’installation d’une librairie : …
2- Tester sa télécommande Infra rouge
Avec un capteur infra rouge vous pouvez tester n’importe télécommande :
- vieux magnétoscope,
- ancien téléviseur.
Mais ce sont des télécommandes de tailles un peu trop grandes pour nos applications. Aussi il existe sur le net pas mal de petites télécommande de ce genre :
Pour cela dans votre moteur de recherche préféré vous n’avez qu’à entrer : « télécommande infrarouge arduino ».
Vous devriez avoir le kit pour essayer, c'est-à-dire la télécommande (repère 1) et le circuit électronique adapté à un Arduino et le capteur qui va bien (repère 2). Coût environ 5 €.
Maintenant avant de pouvoir utiliser ce kit il va falloir connaître le « code » que cette télécommande envoi à l’Arduino.
Vous allez donc tester la télécommande afin de relever les « codes » de chaque touche.
Pour cela vous allez faire le montage suivant :
Fil Bleu : 0V ou GND sur la carte Arduino.
Fil Rouge : +5V. Qui vient e l’alimentation e l’Arduino.
Fil Jaune : sortie du capteur Infrarouge.
Ensuite vous allez entrer ce programme : pour cela il suffit de copier l’intégralité de ce programme et de le mettre dans l’écran de programmation de l’Arduino.
Le programme commence par # et se termine par la dernière accolade }
#include <IRremote.h> // prend en compte la librairie nécessaire à la gestion télécommande infra rouge
int RECV_PIN = 11; // le récepteur infrarouge est câblé en broche 11
IRrecv irrecv(RECV_PIN); // réception de l'information donnée par la télécommande
decode_results results; // Met dans "results" le résultat de l'info donnée par la télécommande
void setup()
{
Serial.begin(9600); // ligne nécessaire pour voir le code sur le moniteur
irrecv.enableIRIn(); // Initialise le récepteur
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX); // affiche la valeur de la touche actionnée en hexadécimal
Serial.println(results.value, DEC); // affiche la valeur de la touche actionnée en décimal
irrecv.resume(); // Recoit la valeur suivante
}
}
La fin du programme est ci-dessus.
Voilà maintenant ce qu’il faut faire pour tester votre télécommande.
1- Raccordé votre Arduino à votre ordinateur. Si tout va bien votre ordinateur trouve la carte sur le bon port en vous le signalant par un petit son.
Pour moi c’est un Arduino Uno qui est reconnu sur le COM3. Mais le type de carte n’est pas bon puisqu’il m’indique deux cases plus haut : type de carte : « Ardunino Nano »
Bien choisir la carte que vous avez connectée à l’ordinateur ;
Pour moi c’est une UNO.
2- Mettre le programme dans l’Arduino : On dit « téléverser » le programme
3- Si tout s’est bien passé votre programme s’est compilé et est transféré dans la mémoire de l’Arduino.
4- Il faut maintenant visualiser ce que l’on appelle le moniteur « série » qui va afficher les codes des touches actionnées.
Suite à cette action vous allez constater qu’un nouvel écran s’ouvre ou rien ne s’affiche.
C’est normal car vous n’avez pas encore transmis d’information avec votre télécommande.
Lors de l’appui, par exemple la touche « 1 » de ma télécommande voici ce qui s’affiche sur cet écran :
FF90FF30CF : code de la touche 1 en hexadécimal
16724175 : code de la touche 1 en décimal (plus facile pour la programmation !)
FFFFFFFF : Appui trop long sur la touche !
4294967295 : en attente d’une autre action sur la télécommande.
En fonction de l’utilisation que vous voulez faire de cette télécommande, il va falloir mémoriser le code des touches que vous souhaitez.
Pour ma part j’ai fait un tableau avec tous les codes (document que j’ai enregistré bien sur), afin de pouvoir faire la programmation le plus facilement possible.
… … …
La télécommande de la photo envoie le code de la touche suivi par un code de répétition, toutes les 100 ms. Bon à savoir, mais on ne va pas en tenir compte.
Ce qui nous intéresse c'est de savoir l'espace entre les répétitions. Ici, on a pressé 0.5s et on voir qu'il faut réarmer un délai de 0.1s à chaque lecture du signal. On va donc mesurer 0.6s
Ici on a pressé 4 fois avec des durées de ~0.2, 0.3 1.2 et 0.3 secondes. Entre les pressions, il y a un délai de 0.5 à 1 seconde. Il faudra un délai de 1 à 2 secondes pour savoir que l'on a fini d'envoyer la séquence. Ici, on a une autre télécommande qui répète tout le code. Il y a 3 pressions rapides. Il faut 3 secondes pour transmettre cet ordre. Lent, mais simple.
Décodage
Pour mesurer les durées, on peut utiliser la fonction milli() d'Arduino. Quand le signal est actif, on lit le temps et on ajoute le délai de 0.2s ou 1s. Quand le signal est inactif, on lit le compteur de temps. Si le délai de 0.2s est dépassé, on ajoute 1 au nombre de pressions. Si le délai de 1s est dépassé, l'envoi de l'ordre est terminé. A peine plus compliqué s'il y a des impulsions courtes et longues !
Une solution plus efficace, en C portable et gérable par interruption si nécessaire, est d'échantillonner le signal toutes les 20ms et remettre un compteur à zéro si le signal est actif. On compte si le signal est inactif. Comme le montre la figure, si le compteur dépasse une valeur, on sait que l'envoi est terminé.
…
Le programme de test doit déclarer IrOn (#define IrOn !digitalRead(pinIRM) en entrée et permettre de vérifier que le décodage est correct. Avec un oscilloscope, c'est facile : on voit le signal et on peut activer un pin pour montrer l'effet. Voila notre programme de test qui active la pin Servo sur laquelle une sonde d'oscillo est branchée. Les paramètres ont été déterminés en remarquant que les impulsons sont assez espacées. En échantillonnant toutes les 20ms, on risque de ne pas remettre le compteur à zéro.