28 octobre 2007

Télécommande Infrarouge

Tags : ,

posté dans Electronique |

Il y a quelque temps déjà, j'avais écrit un article dans GLMF à propos du projet Lirc permettant d'utiliser n'importe quelle télécommande infrarouge pour contrôler des applications sous GNU/Linux. Le montage principal proposé par le projet est fort simple : un récepteur TSOP1736 connecté via quelques composants sur un port série. Malheureusement, le montage utilise directement la ligne DCD du port série via un module kernel. Ceci rend la chose impossible à utiliser via un convertisseur USB/série ou un système ne disposant pas de la ligne en question. De plus, l'utilisation d'un module rend difficile le portage sur un autre système. En cherchant un peu, je suis tombé sur le projet avrlirc de Paul Fox. Un pur bonheur...

Comme son nom l'indique la solution proposée par Paul utilise un microcontrôleur Atmel AVR. Un Attiny2313 pour être précis (mon préféré).

Côté hardware, le montage est simpliste. L'AVR est tout simplement utilisé avec un quartz de 14.7475 Mhz afin de pouvoir communiquer sans erreur avec un port série en 115200bps (voir page 140 du datasheet Attiny2313) . D'autres configuration, même sans quartz sont possibles. Le récepteur TSOP1736, le même que pour le montage série Lirc, est directement connecté à la broche 11 du microcontrôleur. La led connectée sur 9 est optionnelle, elle permet de visualiser une réception IR. Le reste relève de la mise en oeuvre classique de l'Attiny2313.

Attention toutefois, il ne faut en aucun cas connecter directement RX/TX sur le port série d'un PC, les tensions sont totalement incompatibles et cela risque de fumer et sentir mauvais très rapidement. Il existe plusieurs solutions pour ajuster les niveaux de tensions. La mise en oeuvre d'un MAX232 en est une. Pour ma part, j'ai tout simplement utilisé le montage permettant d'accéder à la console de la Fonera. Mon propre montage d'interface TTL/RS232.

Côté software nous avons deux éléments. D'une part le firmware pour l'AVR. Ecrit en C et compilable avec GCC. Il ne nécessite qu'une petite modification concernant la vitesse du port série (macro FOSC). On compile et on charge dans l'AVR via AVRdude (n'oubliez pas de configurer les fuses pour l'utilisation du quartz).

Enfin, nous avons un sympathique code, avrlirc2udp. C'est la partie cliente écoutant le port série et envoyant les données au démon lircd.

Une fois tout cela joyeusement assemblé on installe, avec Debian, le paquet lirc. Pour enregistrer une télécommande on utilisera :

% ./avrlirc2udp -H -t /dev/ttyUSB0 -h localhost

Puis :

% sudo irrecord --driver=udp mon_fichier

Il suffit ensuite de suivre les indications et on obtient un fichier contenant les associations bouton/code pour la télécommande en question. On copie simplement de fichier sous /etc/lirc/lircd.conf puis on configure /etc/lirc/hardware.conf en spécifiant :

LOAD_MODULES=false
DRIVER="udp"
DEVICE="none"

Et voilà. Il ne reste plus qu'à configurer son ~/.lircrc pour associer les boutons aux actions des applications supportant Lirc (xmms, mplayer, etc). Chose intéressante, comme tout se passe en UDP il est parfaitement possible de mettre le récepteur sur un machine différente de celle qui est pilotée. Mieux encore, comme l'utilisation du port série est devenu parfaitement normale (utilisation de RX et non de DCD) ceci devient utilisable sur, par exemple, une Fonera. C'est la prochaine étape pour moi : le portage d'avrlirc2udp sur la fonera et la configuration du port série, non plus pour une console mais comme un port standard pour la connexion du montage. Au final, ma Fonera sera donc en mesure de recevoir des codes IR/RC5 et, soit les utiliser, soit les forwarder à une autre machine en UDP via Wifi.

Article posté on Dimanche, 28 octobre 2007 à 12:56 dans Electronique. Vous pouvez suivre les commentaires sur cet article via un feed RSS 2.0. Commentaires et pings fermés.

Il y a actuellement 2 réponses pour “Télécommande Infrarouge”

  1. 1 Le 17 mai 2008, Exmakina à écrit :

    Très beau boulot !
    Par contre ou à tu trouvé les sources pour compiler openwrt pour fonera car j’arrive jamais a trouver le bon code … soit c’est pour le wrt54g et autres quand ça compile soit rien ne passe si tu peux m’eclairer a ce sujet ça serait super ;)

    Encore bravo pour ce hack !

  2. 2 Le 23 juillet 2008, octopuss83 à écrit :

    Je viens d’acheter une fonera 2200 , deception , il n’y a pas de GPIO , je tente d’eploiter des infos de la RS232 fonera sur une sorte de page web consultable a distance , permettant d’exploter mon RS232 fonera TX et RX a distance . Comme ton projet IR est un peu similaire , si tu as des infos je suis preneur . A ce jour , je code en C++ un programme pour l’exploitation de la RS232 sur la fonera pour la partie Web la je suis moins fort . J’ai vu sur le net qu’un gars avait reussi a piloter les GPIO par un script linux , personnellement je prefererais coder en C ou java un mini serveur sur la fonera.

    Si tu as des pistes n’hesite pas , quand a moi je te tiens au courant de mes avancées si tu veut.

    Bravo pour tes hacks

    OCTOPUSS