[ Bidouilles autour de l'infrarouge ]
Voici quelques astuces pour faciliter les bidouillages avec des télécommandes infrarouges. Astuces qui permettent aussi bien de simuler une télécommande, que d'analyser les trames, ou encore de programmer des codes infrarouges à d'autres fins, comme par exemple lors de l'intégration d'un code dans la programmation d'un microcontrôleur, etc.
Pour y arriver, nul besoin d'oscilloscope à mémoire. Nous utiliserons quelques outils logiciels, et notamment le logiciel open source LIRC et son pendant WinLirc, ainsi que le logiciel de visualisation des trames IR protocol analyzer.
LIRC et WinLIRC
LIRC (L.I.R.C. pour "Linux Infrared remote control") est un logiciel open source de reconnaissance de codes infrarouges qui permet de contrôler un ordinateur à partir d'une télécommande. Une version dédiée à Windows existe : WinLIRC. Il peut aussi servir à piloter le lecteur multimédia Winamp (voir ici : Jukebox MP3)
Ce logiciel fonctionne à partir de nombreux récepteurs infrarouge compatibles. Il en existe de plusieurs types qui s'interfacent sur un port RS-232, USB, ou pour les plus simples via l'entrée audio d'une carte son. Nous allons voir plus loin comment en fabriquer.
L'autre intérêt de ce logiciel est qu'il est capable de simuler une télécommande infrarouge en émettant des codes préprogrammés (ou précédemment acquis). On peut tirer avantage de cette fonction pour d'autres usages, à savoir :
- simuler une télécommande perdue ou cassée pour programmer une télécommande multifonction.
- se servir des listes de codes pour programmer logiciellement le code infrarouge pour d'autres applications, notamment la programmation pour microcontrôleurs (PIC, ATMEL, Arduino, etc...)
Le site de LIRC répertorie un nombre incalculable de télécommandes déjà programmées. Si vous ne trouvez pas votre bonheur, il ne faut pas hésiter à chercher d'autres références chez le même constructeur et essayer toutes les touches. Certaines marchent, même si l'affectation des fonctions est erronée.
Les codes sont facilement éditables via un éditeur de texte quelconque, pour modifier l'ordre des touches ou le nom des fonctions.
Hardware : Récepteurs simples
Parmi les nombreuses interfaces réceptrices utilisables, il en est des faciles à réaliser qui se câblent sur un port sériel RS-232 ou bien sur une entrée audio de carte son.
Photodiode ou phototransistor sur entrée micro
L'interface la plus simple : une bête photodiode (ou un phototransistor) câblée sur la prise entrée micro. La résistance de polarisation de 4,7kΩ reprenant l'alimentation normalement prévue pour un microphone à électret n'est pas forcément utile selon le câblage interne de votre carte son.
Pour les réglages, ouvrez le mixeur audio de votre système d'exploitation (double clic ou clic droit sur l'icône "haut-parleur").
* Options / Propriétés -> Lecture -> Sur l'entrée "micro" de la console, ajustez le volume à moitié pour démarrer. Si le mixeur le permet, désélectionnez les "boost" et autres amplis ou effets. Testez avec une télécommande. Un son très particulier doit se faire entendre si tout va bien. Baissez complètement le fader de l'entrée pour éviter d'entendre ce son désagréable par la suite !
* Options / Propriétés -> Enregistrement -> Sélectionnez l'entrée "micro" et ajustez le volume pour avoir un signal correct. Aidez-vous d'un éditeur audio comme Audacity qui donne une visualisation du canal en enregistrement sur un vu-mètre.
La carte son filtre la fréquence porteuse, donc vous ne verrez que les créneaux du code infrarouge.
Récepteur infrarouge sur entrée audio
Un récepteur infrarouge à démodulateur intégré assure cette fois-ci la mise en forme des signaux infrarouge. Deux possibilités s'offrent alors à vous selon que vous vouliez utiliser la prise micro ou la prise ligne. Bien que nécessitant quelques composants supplémentaires et une alimentation de 5V, cette solution offre la meilleure sensibilité et de meilleurs résultats de décodage.
L'alimentation 5V pourra être avantageusement fournie par un bloc externe, ou bien sera ponctionnée directement dans le PC (par l'USB par exemple).
Dans les propriétés d'enregistrement, sélectionnez l'entrée (micro ou ligne) et ajustez son volume.
Quelques remarques sur les récepteurs infrarouge :
- attention aux fréquences : de nombreux modèles existent pour différentes fréquences de porteuse (36kHz, 38kHz, 56kHz, etc.) Cependant, leurs filtres internes ne sont pas toujours discriminant et permettent la détection de fréquences proches.
- le brochage varie selon les modèles. Vérifiez bien le vôtre avant de le câbler. Quelques pinouts sont donnés en bas de page à titre d'exemple. Si vous en récupérez d'un appareil, observez bien son câblage !
- la sortie du récepteur est en général à niveau logique inversé. Mais la phase peut aussi être inversée par la carte son ou par le logiciel !
Récepteur sur port sériel
Le câblage donné sur le site de LIRC est très simple.
Cependant il est préférable de fournir l'alimentation par un bloc externe ou par ponction du 5V interne à l'ordi pour plus de fiabilité (et si le port est assez sensible).
Comme le montage ne respecte pas les normes sérielles, évitez les liaisons trop longues.
Simuler une télécommande
La deuxième fonction de LIRC est d'émettre le code infrarouge pour se substituer à la télécommande.
Ceci est intéressant sur plusieurs aspects :
- tester les codes infrarouges rentrés préalablement
- remplacer une télécommande pour certaines fonctions
- simuler une télécommande que l'on n'a pas, pour par exemple enregistrer le code dans une télécommande universelle
Hardware : Emetteur
Plusieurs solutions sont envisageables, mais toutes passent par le port série RS-232. Des exemples sont donnés ici : LIRC : Serial Port Transmitters.
L'émetteur le plus simple s'interface directement au port RS-232, sur lequel on vient connecter une diode infrarouge avec une résistance de limitation de 1kΩ et une diode quelconque.
Le seul souci de ce montage est sa très faible portée : quelques centimètres à quelques dizaines de centimètres !
Interpréter les codes infrarouge de LIRC
Voici une astuce plus ciblée, mais qui simplifiera la vie du programmeur de microcontrôleurs ou de tout autre langage. LIRC se sert de codes préalablement enregistrés dans des petits fichiers. Et ces fichiers présentent l'avantage d'être compréhensibles lorsqu'ils sont ouverts dans un éditeur de texte. Dans la plupart des cas, le code est bien décortiqué et on trouve les informations suivantes :

- le nombre de bits transmis
- les durées des niveaux haut/bas du bit de start (Header)
- les durées des niveaux haut/bas pour un "1" logique
- les durées des niveaux haut/bas pour un "0" logique
- la durée du bit de stop
- l'espace entre les transmissions de chaque trame
- les bits transmis en hexadécimal pour chaque touche
- etc...
Prenons une télécommande bidon pour tester :
begin remote name REMOTE_TEST_PANA bits 24 flags SPACE_ENC eps 30 aeps 100 header 3503 1681 one 449 1255 zero 449 381 ptrail 450 gap 74158 toggle_bit 0 begin codes Power 0x00BCBD Vol+ 0x000405 Vol- 0x008485 Mute 0x004C4D Prog+ 0x002C2D Prog- 0x00ACAD end codes end remoteDonc dans cet exemple, on a :
- Le bit de "start" (Header) : Niveau haut 3503µs + Niveau bas 1681µs
- "0" -> Niveau haut 449µs + niveau bas 381µs
- "1" -> Niveau haut 449µs + Niveau bas 1255µs
- Bit de STOP : Niveau haut 450µs
- Les valeurs pour les touches.
Par contre tous les codes ne sont pas facilement exploitables car certains sont en données brutes et ne sont pas vraiment intéressants sous cette forme de fichier. Mais ça reste utilisable pour émettre et capturer dans un soft d'analyse de trame si besoin (oui, c'est un peu tordu, mais à causes désespérées...)
Description des paramètres des codes LIRC
Les significations des différents paramètres employés dans les fichiers des télécommandes sont détaillées ici : WinLIRC : Configuration File Format
Répétition
Certaines télécommandes gèrent l'appui long sur une touche de manière particulière, à savoir qu'au lieu de répéter le code à intervalles réguliers, elles génèrent un code simplifié qui n'envoie que l'information "répétition du dernier code" sans préciser quelle touche est effectivement pressée.
Pour se rendre compte du phénomène, il suffit de masquer la diode d'émission IR, d'appuyer sur une touche en la maintenant, puis de libérer la diode toujours en appuyant. Si l'appareil réagit à la touche, alors le code complet de la touche est envoyé sans cesse. Si l'appareil ne réagit pas, alors la télécommande n'envoie qu'un code de répétition commun à toutes les touches.
D'autres télécommandes mélangent parfois les deux modes de fonctionnement, selon la fonction des touches, comme par exemple pour le volume afin de faire réagir mieux et plus rapidement lors d'appuis prolongés.
Emission - Modulation
Si vous créez ou programmez un émetteur infrarouge, n'oubliez pas de générer la modulation des niveaux hauts (porteuse à 36 ou 38kHz selon les fabricants)
Logiciels d'analyse des trames IR
L'analyse des trames générées par une télécommande infrarouge est relativement facile à faire même sans oscilloscope. Un ordinateur muni d'une carte son auquel on adjoint un des adaptateurs audio vus précédemment suffit.
Une remarque : les récepteurs intégrés inversent la trame, mais la phase peut aussi être inversée par la carte son.
Les créneaux peuvent aussi présenter des petites sur-oscillations, ou être centrés autour de l'axe "zéro", ou bien avoir des plateaux (niveaux hauts) qui baissent. Ceci est dû à la conception même des cartes son, et de leurs condensateurs de liaison qui filtrent les composantes continues.
Editeur audio
Un simple logiciel d'édition audio, tel qu'Audacity par exemple, suffit à analyser les trames du moment qu'il offre une vue de la forme d'onde. C'est un peu laborieux pour analyser les trames et les différents temps, mais ça dépanne !
IR protocol analyser
Des petits utilitaires qui facilitent l'analyse des trames existent. Parmi ceux-ci, un en particulier est intéressant : IR protocol analyzer
Il utilise toujours une entrée audio avec un des montages vus ci-dessus et analyse les trames en indiquant les temps entre les changements de niveaux. Trop facile !!
Brochages
Infos / Liens
LIRC
Liste des protocoles de télécommandes IR par marques
WinLIRC (Version testée : 0.9.0.e)
Audacity : logiciel d'édition audio
IR protocol analyzer (Version testée : 1.1)
IR Remote Control Theory [ Eng. ]
EEVblog #506 - IR Remote Control Arduino Protocol Tutorial : vidéo de Dave Jones (EEVblog) [ Youtube Eng. ]
Autres articles PafGadget ± en rapport :