Un ‘notificateur’ en USB

Alors qu’il fouillait « L’Armoire à Goodies » à la recherche de cadeaux pour les Auditeurs, Yann de Futuradios a exhumé une espèce de boite en forme d’enveloppe connectable en USB qui s’allume pour notifier de la présence de messages (mail, réseaux réseaux sociaux)…

Yann a donné le gadget en question à mon fils Yvan pour voir s’il y a moyen de l’utiliser à la radio, par exemple pour afficher en studio l’arrivée d’une dédicace.

Bien que le gadget ci-dessous soit à la base de cet article les concepts sont utilisables avec la LED située sur la carte du Raspberry ou avec un autre gadget.

La « chose » est fournie avec un mini cdrom contenant un logiciel dédié fonctionnant sous Windows, je ne l’ai pas installé puisqu’il s’agit de l’utiliser sur un des Raspberry Pi installés dans le studio…

Je m’attendais à ce que la « chose » soit reconnue comme un HID (Human Interface Device) et j’avais commencé à me documenter sur le sujet… C’est donc en m’attendant au pire que j’ai branché le connecteur USB. La commande ‘dmesg’ renvoie ceci:

On voit la séquence classique de connexion d’un équipement USB et « Ô Surprise » on voit également que le driver ‘hid-led’ a reconnu notre appareil… Le code du driver est disponible sur github hid-led.c

Dans /sys/class/leds on retrouve les 2 LED présentes sur le Raspberry et 3 LED ‘riso_kagaku0’, une pour chaque couleur RGB, chacun de ces liens pointant vers un répertoire. Notez au passage la numérotation des LED.

Dans le répertoire correspondants aux LED deux fichiers sont intéressants, il s’agit de ‘brightness’ et ‘max_brightness’, qui vont permettre de positionner la luminosité et de connaître la valeur maximale de la luminosité.

Dans le cas de notre gadget la luminosité maximale est de 1, il est possible de positionner et de relire la luminosité. Les LED sur la carte du Raspberry ont un max_brightness à 255.

Nous avons allumé la LED verte (‘green’), visiblement il y a un petit soucis (et pas uniquement lié à mon daltonisme)… Le bleu et le vert sont inversés:

En fait le problème de ces gadgets est qu’il existe de nombreuses contrefaçons, pardon, de nombreux modèles ressemblants. D’ailleurs dans le code du driver, on trouve les lignes suivantes qui sont intéressantes:

Ce paramètre est visible par la commande ‘modinfo’:

Nous pouvons consulter et modifier la valeur de ce paramètre pour vérifier que notre gadget affiche la bonne couleur.

Le problème c’est qu’à chaque redémarrage du Rasperry les couleurs vont être inversées, ‘hid_led’ étant un module kernel comme un autre il est possible de fixer ses paramètres de la même manière:

Un petit ‘goodie’ au passage, une commande pour afficher la valeur courante des 3 couleurs:

Vous avez certainement remarqué un fichier appelé ‘trigger’ dans le répertoire de chacune des LED, il permet de faire gérer la LED automatiquement par le système en fonction d’un déclencheur. Les divers déclencheurs sont listés ci-dessous. Celui entre crochets est le déclencheur actif (ici ‘none’ c’est à dire aucun):

Les déclencheurs sont les suivants

  • rc-feedback: l’état du récepteur de télécommande infrarouge si le Raspberry en est équipé (cas des media-centers par exemple)
  • kbd: l’état du clavier
  • timer: faire clignoter la LED
  • oneshot: allumer la LED un temps donné
  • heartbeat: faire clignoter la LED comme un battement de coeurs
  • cpu: activité des CPU
  • panic: en cas de kernel panic
  • mmc0: activité de la carte mémoire du Raspberry Pi
  • rfkill-any: mode avion

La sélection d’un déclencheur peut faire apparaître de nouveaux fichiers dans le répertoire de la LED concernée, c’est le cas du déclencheur ‘timer’ par exemple, deux nouveaux fichiers ‘delay_off’ et ‘delay_on’ permettent de spécifier les temps d’allumage et d’extinction en millisecondes:

Dans le cas du déclencheur ‘heartbeat’ il est possible d’inverser le battement de coeur (deux extinctions rapides au lieu de deux allumages rapides):

Vous pouvez expérimenter le déclencheur ‘oneshot’:

Il existe de nombreux autres gadgets similaires… A vous de vous amuser avec.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.