Page suivante - Page précédente - Table des matières

13. Contrôle à distance via infrarouge

13.1 Ressources

La prise de contrôle à distance par infrarouge n'est pas le but du projet Linux/IrDA mais est incluse dans ce HowTo pour couvrir de manière exhaustive "Linux et l'infrarouge". J'ai trouvé trois projets qui oeuvraient dans cette direction. Vous pouvez trouver des liens vers des informations plus récentes à http:// www.snafu.de/~wehe/index_li.html.

  • LIRC LInux Remote Control

    LIRC est un paquetage qui supporte la réception et l'émission de signaux infrarouges des protocoles de contrôle à distance IR les plus courants. Il contient un pilote pour les périphériques connectés aux ports séries, un démon qui décode et encode les signaux IR en utilisant ce pilote, un démon de souris qui traduit les signaux IR en mouvements de souris et quelques programmes utilisateurs qui vous permettent de contrôler votre ordinateur avec une télécommande. Takahide Higuchi a écrit à propos de LIRC : "C'est génial, et j'ai l'impression que c'est un projet très complet, mais j'ai aussi l'impression que quasiment aucun des périphériques du marché n'est supporté (vous aurez besoin d'un fer à souder et de circuits spéciaux... un peu dur pour le néophyte). Je suppose que LIRC deviendra plus populaire si le support infrarouge est implémenté dans les pilotes FastIR et qu'une API commune (par exemple un IrSocket brut et des ioctls communs) est disponible !". Vous trouverez LIRC à http://www.thp.uni-koeln.de/~rjkm/lirc/.

  • Télécommande infrarouge série

    Voici un périphérique simple et bon marché qui peut être connecté à tout port série pour contrôler presque tous les appareils qui possèdent une télécommande IR. Il a été conçu et fabriqué sur une carte d'extension à sertir et est à présent disponible sous forme d'une carte ISA. Vous trouverez de plus amples informations à http://www.armory.com/~spcecdt/remote/remote.html.

  • Outils infrarouges pour le COREL Netwinder PC

    Ryan Shillington a écrit quelques outils pour contrôler le COREL NetWinder par infrarouge, par exemple :

    Serveur pour l'administration Corel Palm. Il nécessite simplement d'avoir le port infrarouge installé et en état de marche. Avec lui, vous pouvez changer l'adresse IP, l'adresse de la passerelle, configurer eth1, etc. Vous pouvez aussi lancer quelques commandes simples ET vérifier la température, mémoire, charge de la machine.

    Client pour l'administration Corel Palm. Vous pouvez aussi lancer quelques commandes simples ET vérifier la température, mémoire, charge de la machine.

    Un pilote IR très simple. Il ne supporte pas IrDA (seulement des transferts non fiables). Il ne cherche que des signaux venant de télécommandes (et claviers, etc.). Il bloque et passe les données d'une façon très différente.

    Vous trouverez tout ceci à http://www.netwinder.org/~ryansh/

13.2 Commande a distance IR - IrDA

Deux des projets décrits plus haut utilisent une sorte de dongle fait à la main pour la commande à distance. Il y a aussi une description sur comment construire un dongle IrDA vous même dans l'ELEKTOR allemand de mai 1997 p28. Peut être que quelqu'un pourrait transformer ces dongles en un seul.

Pour une discussion sur les relations entre les télécommandes IR et IrDA, j'ai fait une compilation de la liste Linux/IrDA (raccourcie et modifiée par wh) :

Ryan Shillington a écrit : "Les télécommandes IR et ASK-IR sont très différentes de FIR, MIR ou SIR.

Les télécommandes IR et ASK-IR ont des vitesses très basses et des fréquences très basses (mais de longues portées). Elles opèrent à environ 2400bps.

SIR opère à des vitesses supérieures, et est voué à des transmissions longues portées où vous avez besoin que plus d'un ou deux caractères passent dans la liaison (pas comme les télécommandes).

MIR est légèrement plus rapide (mais a moins de portée), mais sa vitesse peut monter jusqu'à 1.15Mbps et FIR (ou les périphériques doivent presque se toucher) a un débit de 4Mbps. La portée est inversement proportionelle à la vitesse de transmission.

Je travaille sur des pilotes pour les télécommandes infrarouges, mais vous devriez déjà le savoir si votre matériel IR le supporte. Cherchez des protocoles tels NEC, RC-5 ou RC-0 (ce sont les plus communs).

Vous pouvez utiliser SIR pour recevoir des signaux de télécommandes. Réglez bien votre débit au plus bas et les données commenceront à affluer. MAIS d'après mon expérience, ce ne sont pas les BONNES données. Ce n'est pas analysé de la bonne façon, et par conséquent, vous ne pouvez ni calculer la somme de contrôle ni la vérifier avec son complément.

J'ai réussi à récupérer des données (en utilisant SIR) avec des télécommandes. On m'a dit que SIR lisait les données venant d'une télécommande différemment en fonction de la température (malgré tout, je n'en ai jamais fait l'expérience)."

Lichen Wang <lwang1@ix.netcom.com> a écrit en réponse : "Le truc que l'on appelle ASKIR dans tant de portables n'est pas fait pour les télécommandes infrarouges. ASKIR est fait pour le Sharp Wizard, les PDA Zauaus et quelques portables Sharp. Sharp avait créé cela bien avant l'arrivée d'IrDA et le supporte toujours pour maintenir une compatibilité. Le Newton d'Apple avait aussi cette capacité là à un moment.

Brièvement, ASKIR utilise un format de transmission asynchrone à 9.6 Kbps (19.2 et 38.4 Kbps sont aussi possibles) avec 8 bits de données, 1 bit d'arrêt et une parité impaire. Le bit de démarrage ainsi que tous les bits 0 sont transmis comme une onde carrée de 500 KHz (sous porteuse DASK). Le bit "arrêt" ainsi que tous les bits 1 sont représentés par l'absence de transmission.

Comme vous pouvez le constater, c'est totalement incompatible avec les télécommandes IR.

[..]

Vrai. Non seulement il est possible d'utiliser le matériel SIR pour recevoir, mais vous pouvez aussi transmettre. Bien entendu, il y a quelques limitations.

La majorité des télécommandes utilisent une sous porteuse à 38KHz. 3 fois 38 ça fait 114, très proche de 115.2. Il est donc possible de régler l'UART pour opérer à 115.2 Kbps, 7 bits de données, 1 bit d'arrêt et pas de parité - soit 9 bits. Tous les 3 cycles de la sous porteuse à 38 KHz peuvent être reçus ou émis en tant qu'un octet Ox5B.

Il y a quelques limitations physiques en plus du fait que la sous porteuse doive être de 38KHz. Le récepteur SIR n'est pas aussi sensible au 38KHz que la télécommande. Le transmetteur SIR a un cycle d'utilisation beaucoup plus faible, et par conséquent, ne peut émettre une trop forte sous porteuse.

La télécommande encode le signal de contrôle en ajoutant un patron spécifique à la sous porteuse. Maintenant que vous pouvez émettre et recevoir la sous porteuse, tout ce qu'il reste à faire, c'est de tout synchroniser.

Pour émettre, il est nécessaire de savoir combien d'octets de 0x5B consécutifs il sera nécessaire d'envoyer pour chaque coup de sous porteuse, et combien de temps rester silencieux pendant les émissions.

Pour recevoir, il sera nécessaire de savoir combien d'octets 0x5B vous recevez consécutivement, et quelle est la durée entre les trous d'octets consécutifs.

[..]

Mon expérience avec les distances de transmissions IrDA de SIR, MIR et FIR sont légèrement différentes de ce que Ryan a dit.

[..]

SIR, MIR et FIR devraient toujours marcher de 0 à 100 cm, mais dans la pratique :

(a) Certains périphériques ont des problèmes avec les LONGUES distances.

Lorsque cela est possible, placez les périphériques à moins de 50 cm l'un de l'autre. Les périphériques ayant peu de puissance, comme les pagers et les téléphones cellulaires, etc. auront peut être des distances encore plus petites bien qu'ils utilisent SIR à la place de MIR ou FIR.

(b) Certains périphériques ont des problèmes avec les COURTES distances.

Placez les deux périphériques à au moins quelques centimètres l'un de l'autre. Les mettre plus près peut causer des problèmes.

Il est un peu intuitif de rapprocher les deux périphériques lorsque la connexion n'est pas bien stable. Mais cela va à l'encontre de toute intuition que trop près n'est pas bon non plus. La raison est que l'intensité lumineuse à 1 cm est 10 000 fois plus forte qu'à 100 cm. A 0.5 cm, 40 000 fois, etc. Les constructeurs de récepteur IR ont du mal à gérer cette distance dynamique. Nous avons tous du mal à lire avec une lampe de 10 W, imaginez comment ça serait avec une lampe de 100 000 W !

[..]

La couche physique IrDA est totalement incompatible avec la modulation DASK utilisée dans les télécommandes IR. Par conséquent, il n'est pas possible d'utiliser la même fonction de contrôle avec FIR et les télécommandes. Toutefois, presque tous les contrôleurs FIR incluent des fonctions additionnelles pour supporter les télécommandes IR. National, SMC, et Winbond (pour ne citer que ceux là) ont tous de telles puces.

Les transmetteurs IR pour FIR et les télécommandes sont très semblables. J'ai essayé avec un transmetteur FIR standard. Il est capable d'atteindre 10 mètres dans un but de télécommande. Par conséquent, il est aussi performant que les transmetteurs inclus dans les télécommandes.

Les récepteurs IR pour FIR et les télécommandes sont par contre assez différents. Un récepteur FIR peut recevoir un signal de télécommande, mais ceci seulement à 1 mètre alors que les récepteurs intégrés dans les télécommandes atteignent 10 mètres.

J'ai un adaptateur ISA avec une puce National qui supporte aussi bien FIR que les télécommandes. J'ai aussi des dongles IR qui incluent les deux types de récepteurs (ainsi qu'un transmetteur pour les deux modes). Je n'ai pour l'instant trouvé aucun logiciel supportant les fonctions de télécommandes. J'ai fait mes propres expériences sous DOS (je ne peux pas encore installer Linux). Quelqu'un est intéressé ? "

Benny Amorsen a écrit : "J'ai un portable qui est supposé supporter ASKIR. Le mode du port infrarouge peut être changé en ASKIR dans le BIOS. Avoir à rebooter pour changer le mode dans le BIOS le rend inutile, donc, quelqu'un pourrait essayer de trouver un moyen de le changer à la volée. "

Dag Brattli a écrit : "Il devrait être possible d'utiliser IrControl (auparavant IrBus) pour utiliser les télécommandes compatibles IrDA. Je ne connais aucune télécommande utilisant le standard IrControl, mais il devrait en exister quelques unes (quelqu'un en sait plus ?). Vous devriez aller jeter un coup d'oeil au site IrDA ( http://www.irda.org) et récupérer le standard de la couche physique (qui inclue IrControl je pense).

IrDA "Normal" (en utilisant IrLAP) n'est pas une bonne chose pour l'utilisation avec les télécommandes à cause de la trop grande différence de nature (et il ne supporte que le 9600 bps pour les travaux hors connexions). La raison de cette limite de portée est la protection des yeux qu'ils disent (mais je ne sais pas pourquoi CIR marche mieux en utilisant la même puissance). J'ai par ailleurs vu des portables connectés avec 4 à 5 mètres entre eux (mais je ne pense pas qu'une grande vitesse de connexion soit possible).

La majorité des chipset IrDA marchent en mode CIR, et il est assez facile de modifier les pilotes pour qu'ils parlent CIR. Takahide Higuchi a commencé à regarder IrSockets et il serait assez bien si il était possible d'ouvrir une socket Ir(DA) brute qui permettrait d'envoyer et de recevoir des paquets CIR. Ensuite, toutes les applications CIR pourraient rester dans l'espace utilisateur.

Je sais que CIR intéresse Corel dans le but de contrôler le NetWinder (et ils ont en ce moment du code qui marche). Allez jeter un coup d'oeil à http://www.slashdot.org/articles/98/12/05/0916216.shtml ou http://www.netwinder.org/~ryansh.


Page suivante - Page précédente - Table des matières