L’électronique programmée ludo-éducative libre pour apprendre, s’amuser et progresser...
Adresse du document KTEL1L : https://docs.google.com/document/d/1asnhuVVqV31wxn4FVLxHjZ0au2fSsdJP-0md_fxjKLg/pub
Ouvrir KTEL1L comme un document - Demande de renseignements : staff@duinoedu.com
KTEL1L VERIFIE
1 erreur corrigée le 09/05/2014
Référence : KTEL1L : KIT Télécommande infra-rouges standard 20 touches (codage NEC-1)
KTEL1L = TEL1 + DRIRL
Acheter les produits de ce kit :
Voir des vidéos liées :
|
Utilité et fonctionnement
Utilité : Permet de recevoir des informations d’une télécommande compatible (38kHz)
Puces : Arduino, DuinoEDU…
Résultat attendu :
Utilisation courante :
Réglages :
Principe de fonctionnement :
Remarque : 38kHz (38000 hz) est une fréquence. Elle représente le nombre de flashs nécessaire par seconde pour transmettre un niveau logique haut (= 5 volts = 1 binaire). Le niveau logique bas étant souvent exprimé par une absence totale d’émission lumineuse.
Si pour transmettre un niveau logique haut il suffisait de laisser la LED émettrice allumée pendant un certain temps, toute source d’infrarouge serait susceptible de transmettre ce niveau. Même celles qui n’ont rien à voir avec votre montage.
Pour éviter que les sources infrarouges annexes viennent perturber le récepteur, la télécommande et le récepteur “savent” tous les 2 que seuls les flashs dont la fréquence est de 38kHz sont à prendre en compte. C’est pourquoi le récepteur dispose d’un filtre dont le rôle est justement de se “débarrasser” de tous les signaux parasites = tous les signaux dont la fréquence est trop différente de 38kHz.
Codes des touches :
Touche | Image | Code (en décimal) |
On/Off | 16753245 | |
MENU | 16769565 | |
TEST | 16720605 | |
+ | 16712445 | |
Annuler | 16761405 | |
Retour rapide | 16769055 | |
Lecture | 16754775 | |
Avance rapide | 16748655 | |
0 | 16738455 | |
Moins | 16750695 | |
C | 16756815 | |
1 | 16724175 | |
2 | 16718055 | |
3 | 16743045 | |
4 | 16716015 | |
5 | 16726215 | |
6 | 16734885 | |
7 | 16728765 | |
8 | 16730805 | |
9 | 16732845 |
Branchement
Le branchement se fait au moyen de 3 fils
Une fois le branchement réalisé, il vous faut un programme. Ce programme doit être écrit dans le logiciel gratuit nommé Arduino.
Si vous n’avez pas encore le logiciel Arduino (=c’est le logiciel pour programmer), vous pouvez le télécharger gratuitement ici : http://duinoedu.com/store/index.php?id_product=19&controller=product. Cliquez ensuite sur “Lien de téléchargement” correspondant à votre situation.
DuinoEDU vous conseille d’utiliser le version d’Arduino disponible à cette adresse plutôt que sa version française qui semble ne pas être à jour (pour l’instant).
Exemple de programme en langage Arduino
Voici le programme exemple que je vous propose. Il permet simplement :
Ce programme peut être copié/collé directement dans la zone de travail du logiciel Arduino comme représenté ci-dessous :
Côté ÉMETTEUR
Il n’y a pas de programme à rédiger. Tout est déjà géré au niveau de la télécommande
Côté RÉCEPTEUR
Voici le programme à copier/coller dans le logiciel Arduino
//************************************************************************// // -- EXEMPLE : PILOTAGE PAR TÉLÉCOMMANDE -- // // >> Partie RÉCEPTEUR << // // // // David Souder pour www.duinoedu.com // // Version 0.1 // // Programme libre de droit // //************************************************************************// /* UTILITE DU PROGRAMME : Permet d’allumer une LED si la touche “+” de la télécommande TEL1 est appuyée. Permet d’éteindre la même LED en appuyant sur la touche “-” de la même télécommande. Ce programme est une amorce pour réaliser des montages plus complexes. */ /* LIBRAIRIE UTILISEE : IRremote( Nous en parlerons plus tard. Ne téléchargez rien pour l’instant). */ /* BRANCHEMENT -------------------------------------------------------------- 1-BRANCHEMENT LED > POINTE LONGUE > TROU13 > POINTE COURTE > TROU GND > 2-BRANCHEMENT RECEPTEUR > POINTE GAUCHE > TROU3 > POINTE MILIEU > TROU GND > POINTE DROITE > TROU 5V */ /* MODULES : Nous allons utiliser le récepteur pour télécommande disponible ici : http://duinoedu.com/store/index.php?id_product=119&controller=product Nous allons utiliser la télécommande infrarouge TEL1 disponible ici : http://duinoedu.com/store/index.php?id_product=109&controller=product */ //--- Pour éviter de manipuler des nombres, nous allons leur donner des noms #define TOUCHE_PLUS 16712445 // Pas de “;” car c’est une directive ! #define TOUCHE_MOINS 16750695 // Pas de “;” car c’est une directive ! //--- Ne fait que contenir le n° du trou utilisé par le récepteur int brocheRecepteur = 3; //--- Ne fait que contenir le n° du trou utilisé par la LED int brocheLED = 13; //A-- Vérifiez ensuite que vous avez bien la librairie “IRremote”. Pour cela, dans votre logiciel Arduino, faites : “Croquis” puis “Importer bibliothèque”. Si dans la liste vous trouvez “IRremote”, alors vous pouvez passer l’étape de téléchargement et aller directement au “B”. Si au contraire vous n’avez pas ce fichier, faites ce qui suit de T1 à T4 puis passez au “B” : /* T1 : cliquez sur ce lien de téléchargement : > http://www.pjrc.com/teensy/arduino_libraries/IRremote.zip T2 : sauvegardez le fichier sur votre bureau par exemple T2 : Dans Arduino, cliquez sur : > “Croquis” puis “Importer bibliothèque” puis “Add library” T3 : allez chercher le fichier xxx.zip précédent (a priori sur votre bureau) T4 : votre librairie est maintenant connue d’Arduino. */ //B-- Nous allons ajouter la bibliothèque à notre programme #include <IRremote.h> //C-- Nous allons ensuite créer un “objet” représentant virtuellement le récepteur que nous venons de brancher. Ainsi, il nous sera possible de le manipuler. Cet objet est bien sûr lié au trou sur lequel est branché le récepteur. IRrecv monRecepteur(brocheRecepteur); //D-- Appuyer sur une simple touche génère déjà une “série d’impulsions” ne pouvant pas se réduire à un simple nombre. Malgré tout, il faut la stocker dans un “conteneur” spécial de “type” decode_results sous peine de perdre immédiatement toute information. Nous allons donc créer cette “boîte spéciale” et lui donner le nom de “serieImpulsions” comme ceci : decode_results serieImpulsions; // Cette boîte est remplie automatiquement //E-- La boîte spéciale contient de nombreuses informations et toutes ne nous sont pas utiles pour l’instant. Nous allons donc prévoir une autre boîte (variable) pour contenir ce code (= ce nombre) unsigned long codeTouche = 0; // Unsigned = qui ne sera jamais négatif
//----- On va créer ou utiliser une partie dite d’initialisation = setup ! { //--- Nous allons configurer les entrées/sorties utilisées //--Le récepteur “donne” des informations => Il faut donc une ENTREE pinMode(brocheRecepteur, INPUT); //--La LED doit être “pilotée” => Il faut donc une SORTIE pinMode(brocheLED, OUTPUT); //--- Nous allons ensuite activer la réception monRecepteur.enableIRIn(); //--- Nous allons activer le port série Serial.begin(9600); //--- Tout est enfin initialisé. Passons au corps de programme
}
//--- Le conteneur (= objet) serieImpulsions se “remplit” tout seul. Pour savoir si quelque chose a été reçu, il suffit d’essayer de “décoder” cette “série d’impulsions” en utilisant la méthode “.decode”. Si le décodage s’est bien déroulé (donc si une série d’impulsions a bien été enregistrée dans le buffer), alors on peut extraire le code de la touche. En cas contraire, il est inutile de chercher à extraire un code de touche. Voici le test :
if ( monRecepteur.decode( &serieImpulsions ) ) { //-- A ce stade, on sait qu’il y a une série d'impulsions valide //-Nous allons donc récupérer le code de touche // Notez que value ici n’est qu’1 valeur contenue dans serieImpulsions codeTouche = serieImpulsions.value ; // codeTouche contient 1 nombre
//-- La valeur de la touche étant récupérée, nous préparons la prochaine monRecepteur.resume(); } //--- Nous pouvons maintenant piloter la LED en comparant le code de la touche récupéré avec les valeurs des 2 touches qui nous intéressent if ( codeTouche == TOUCHE_PLUS ) { //-- On allume alors la LED digitalWrite( brocheLED, HIGH ); } if ( codeTouche == TOUCHE_MOINS ) { //-- On éteint alors la LED digitalWrite( brocheLED, LOW ); }
//----- N’oubliez pas de fermer les “crochets” “{......} // Comme c’est une boucle, le programme va revenir tout seul au début // Mais attention ! le setup() n’est exécuté qu’une seule fois
} // Cet exemple n’est pas clair ? Contactez-nous : staff@duinoedu.com |
Données techniques
Acheter ces produits sur DuinoEDU.com
Télécommande TEL1 :
http://duinoedu.com/store/index.php?id_product=109&controller=product
Récepteur infrarouge pour télécommande DRIRL: http://duinoedu.com/store/index.php?id_product=119&controller=product
htp://duinoedu.com - Informations légales - Mail : staff@duinoedu.com
/