Partie Electronique

Plusieurs montages circulent sur Internet. Le plus simple est sans doute de prendre un module récepteur infrarouge et de le connecter tel quel sur le port série, en plaçant uniquement une résistance entre RX et la masse. Même si ce schéma est rarement proposé, c’est de loin le plus facile à réaliser et pour mon cas, il marche très bien :

GND(5) o------------------+
                          |    +-------------------------+
                          |    |      SIEMENS 444        |
                          +----+ -    SFH 506-36         |
                               |      _____________      |
RTS(4) o-----------------------+ +                      |
             |                 |                    )    |
            | |                |      _____________/     |
            | | R2 (10K)  +----+ 
Nota : J'ai utilisé un récepteur de récupération, sensiblement différent du SIEMENS proposé.

Les broches indiquées entre parenthèses sont le numéro des broches pour des connecteurs SUB-D à 9 broches.

Nom          SUB-D25        SUB-D9      Utilisé pour

RTS            4               7        Source de courant
GND            7               5        Masse
DCD            8               1        Signal

Alternatives souvent proposées :

Celle avec régulateur marche souvent dans la plupart des cas. Je la conseille si la première méthode n’a pas marché.

C (10uF)
GND(5) o-------------+---------+---+
                     |         |   |    +-------------------------+
                 ---GND---   ----- |    |      SIEMENS 444        |
        1N4148 +-+IN  OUT+-+ ----- +----+ -    SFH 506-36         |
         | |  |  78L05 / |   |        |      ______________     |
RTS(4) o-| >|--+  -------  +------------+ +                      |
         |/ |  |                        |                     )   |
              | |                       |      ______________/    |
              | | R2 (10K)         +----+
GND o-----------------------+------+
                            |      |    +-------------------------+
                 C (10uF) -----    |    |      SIEMENS 444        |
 e.g. 1N4148  R1 (5K)     -----    +----+ -    SFH 506-36         |
      | |      _____    +  |           |      ______________     |
RTS o-| >|-----|_____|------------------+ +                      |
      |/ |  |                           |                     )   |
           | |                          |      ______________/    |
           | | R2 (10K)            +----+ 

Note : Le brochage d’un régulateur 78L05 est :

   1 2 3
  _______
 /             Pin1 = OUT
(  o o o  )     Pin2 = GND
        /      Pin3 = IN
   -___-

Partie Informatique

Ce n’est pas tout de pouvoir récupérer le signal, il faut encore pouvoir le décoder. Le module fait déjà la majeure partie, en démodulant le signal envoyé par la télécommande.

La principale difficulté réside dans le fait qu’il existe beaucoup de protocoles différents : RC5, RCA, …
Voici quelques adresses qui peuvent vous être utiles :

J’ai fait la synthèse des principales informations contenues dans ces pages en ce qui concerne le décodage de ces protocoles dans ce fichier texte.

Voici un exemple de codes : TV Philips.

Configuration Windows

Sous Windows, un excellent programme qui s’occupe de cela est WinLIRC. Ce programme s’occupe de décoder les données arrivant sur le port série, en fonction d’un fichier de configuration décrivant la télécommande, et de mettre à disposition sur un port TCP/IP un identificateur simple de la touche appuyée. Ce programme est basé sur LIRC, dont nous parlerons plus tard.

La configuration se fait très simplement, soit en indiquant directement le fichier de configuration et le numéro de port, soit en enregistrant le fichier de configuration soi-même en appuyant successivement sur tous les boutons de la télécommande et en donnant leur signification. A noter que cette dernière procédure ne marche pas pour l’instant pour toutes les télécommandes.

Une fois lancé, WinLIRC se place dans la TrayBar et envoie les données sur un port TCP/IP. Le bouton est jaune lors de la configuration, vert si le décodage a été effectué avec succès, rouge si une touche n’a pas été conprise.
Vous pouvez trouver une version de WinLIRC ici. La version sur le site de WinLIRC sera évidemment plus récente.

L’utilisation de ces données décodées se fait ensuite programme par programme. Un plugin a été développé pour WinAmp, pour permettre de commander la lecture de ses fichiers audio par infra-rouge. Vous pouvez trouver ce plugin sur la page de WinLIRC, ou encore ici.
La configuration en est fort simple :

  • Assurez vous que WinLIRC fonctionne correctement.
  • Copiez le gen_ir.dll dans le répertoire plugin de winamp.
  • Configurez ce plugin (onglet General Purpose), en faisant correspondre le nom de la touche donné par WinLIRC (par exemple POWER) à une action de WinAmp.
  • Activez le plugin

Il faut donc un plugin spécifique à chaque programme. Girder est un excellent freeware qui se chargera d’effectuer de multiple tâches, bouger la souris, envoyer des touches à des applications,… un must !

Je suis actuellement en train de développer d’une part, un programme permettant de décoder une de mes télécommandes non reconnues par WinLIRC, et d’autre part un programme basé sur LIRC, mais capable d’envoyer n’importe quel touche, ou encore n’importe quel message à des applications. Ce programme n’est pour l’instant pas très avancé et je risque de ne pas avoir beaucoup de temps pour le développer dans les prochaines semaines.

Configuration Linux

Sous Linux, vous avez la possibilité de faire à peu près n’importe quoi avec votre télécommande, du pilotage d’applications à l’émulation de souris. Tout ceci est possible gràce à un logiciel : LIRC (Linux Infra Red Control). Une version est disponible ici.

Ce programme installe un module qui permet de décoder les signaux de la télécommande et de les mettre à disposition dans un device (/dev/lirc). LIRC comprend :

  • lircd : le démon, qui s’occupe de convertir les signaux de la télécommande.
  • irexec : un programme capable de lancer n’importe quelle commande lorsqu’une touche est pressée.
  • irrecord : pour enregistrer les codes de votre télécommande.
  • irw : pour voir les touches enfoncées.

Configuration de lircd

  • Vous devez premièrement compiler LIRC, ce qui se fait simplement en tapant ./configure et en sélectionnant le port du récepteur, puis make et make install (en root).
  • Vous devrez ensuite installer le module si le chargement n’est pas automatique : modprobe lirc_serial.
  • Il faut ensuite créer un fichier de configuration à l’aide de irrecord, sauf si vous en trouvez un tout fait sur la page de LIRC.
  • Lancez ensuite le démon lircd
  • Vérifiez votre configuration en exécutant irw et en pressant une touche. Vous devriez voir apparaître le nom de la touche pressée. Si ce n’est pas le cas, vérifiez le fichier de log /var/log/lircd.

Configuration de irexec

Vous pouvez maintenant passer à l’étape suivante, celle de de la configuration de irexec, c’est à dire celui qui va faire quelque chose, concrêtement.

Plutôt que de vous faire de longs discours scabreux, je vais uniquement vous recommander d’aller lire la documentation dans le répertoire doc de lirc, pour créer le fichier lircrc. Vous pouvez aussi vous inspirer de mon fichier de configuration.

Configuration de Xmms

Quoi de plus agréable que de pouvoir piloter winamp. Les développeurs ont pensé à tout, et un plugin pour xmms est sorti. Vous pouvez trouver le dernier sur la page software de LIRC ou une version ici.

Reste ensuite à le compiler et à l’installer. L’installation pose parfois quelques problèmes, dûs à des librairies qu’il cherche au mauvais endroit. Une solution est de recopier cette librairie : cp /usr/local/lib/liblirc_client.so.0.0.0 /usr/lib/liblirc_client.so.0.0.0
Ceci effectué lancez xmms à partir d’un terminal pour pouvoir vérifier qu’il n’y a pas de problèmes lors du chargement du plugin et activez le.

Comme vous avez pu le constater dans mon fichier de configuration et dans la documentation de lirc-xmms-plugin, la commande de xmms se fait au travers de irexec, et du fichier lircrc. Les fonctionnalités essentielles sont reprises dans mon fichier de configuration.