Christophe Nowicki

January 31, 2010

Gestion de la lumière d’ambiance avec le protocole DMX sous Debian GNU/Linux

La technologie des lumières à LEDs offre la possibilité de placer une source de lumière n’importe où (aquarium, meubles, faux plafonds, derrière un écran, etc…).

Par contre, les LEDs disposent de plus de fonctionnalités que les ampoules classiques.
En effet, en plus d’un bouton d’allumage, vous avez la possibilité de changer la couleur de la lumière, la faire varier dans le temps, modifier son intensité, jouer une séquence, etc…

Avec un nombre de possibilités plus grand, les interfaces de contrôle classique (X10, PLCBUS, etc…) ne suffisent pas.

Il est donc nécessaire de placer un peu plus d’intelligence dans le réseau d’illumination à l’aide du protocole DMX.

Ce protocole est utilisé dans le monde des concerts, des plateaux de télévision et des spectacles.
Néanmoins, il est tout à fait possible de le détourner pour un usage domotique.

Dans ce billet, je vais décrire l’utilisation d’un contrôleur LED RGB DMX et de l’interface OpenDMX de chez ENTTEC, à l’aide du projet OLA sous Debian GNU/Linux.

Principe de fonctionnement

Voici le schéma du montage:
dmx_led_overview

  • le PC communique à l’aide du port USB avec un contrôleur DMX ;
  • les contrôleurs LEDs mis en série convertissent les ordres en instructions RGB ;

Et voici ce que cela donne :

OpenDMX RGB LED

Matériel

Voici le matériel nécessaire pour un bandeau à LED, le tout fonctionne bien sûr sous Debian GNU/Linux est FOSS Friendly ;-)

Produit Prix
OPEN DMX USB Hardware Interface $52.00 – $60.00
RGB LED DMX Controller 2 $48.00 – $76.80
RJ45 Connetor to XLR Female Connector $11.20 – $14.25
RJ45 to XLR Male DMX Cable Adapter 3ft $10.99 – $14.00
DMX/XLR converter connector $10.50 – $12.00
LED Controller Power Supply, USA/EU $23.10 – $36.96
DMX 512 Terminator, 3 Pole Male Connector $7.94
Mini Bandeau Rigide RGB 12 Led 20cm 150° 12v DC 6 € – 12,95 €
Raccord intermédiaire pour Bandeau lumineux à Led Longueur 5cm 1.5 €

Pour le câblage, entre le bandeau lumineux et le contrôleur à LED, Il faut couper une extrémité du cable de raccord et la dénuder pour brancher sur le bornier à quatre vis de sortie RGB.

Installation du matériel

Une fois que vous avez branché l’OpenDMX au PC, vous devez voir un convertisseur USB-Serial (UART) à l’aide de lsusb :

$ lsusb
Bus 002 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

Pour faire fonctionner l’OpenDMX, vous avez besoin du module noyau dmx-usb et d’un environnement de compilation pour les modules. (paquet linux-headers*, etc…).

# cd /usr/src
# git-clone http://www.erwinrol.com/git/dmx_usb_module/
# cd dmx_usb_module
# make
# cp ./dmx_usb.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial
# depmod -a

Comme, l’OpenDMX est un convertisseur USB-Serial, le noyau par défaut le présente comme une interface /dev/ttyUSB.
Il est donc nécessaire de blacklister les modules usbserial dans le fichier /etc/modprobe.d/blacklist, en ajoutant les lignes suivantes :

blacklist usbserial
blacklist usb-serial
blacklist ftdi_sio

Ensuite, ajouter le module dmx_usb dans le fichier /etc/modules et rebooter la machine.
Au reboot, vous devez avoir une interface /dev/dmx0, qu’il faut rendre accessible pour tous les utilisateurs :

# ls -l /dev/dmx0
crw-rw---- 1 root root 180, 192 2010-01-30 00:37 /dev/dmx0
# chmod a+rw /dev/dmx0

Installation du logiciel pour la gestion de la lumière : Open Lighting Architecture (OLA)

Comme, il n’y a pas de paquets Debian disponibles pour ce programme, je vais décrire une procédure d’installation à partir des sources. Ces instructions ont été valider à l’aide de la version 0.7.3 de OLA :

Dépendances

Vous allez avoir besoin des dépendances suivantes pour la compilation :

# apt-get install build-essential uuid-dev libcppunit-dev libgcrypt-dev uuid-dev

Compilation de Protocol Buffers de Google

Vous avez besoin de protobuf, pour la gestion de l’échange de données :

# cd /usr/src
# wget http://protobuf.googlecode.com/files/protobuf-2.3.0.tar.bz2
# tar xjf protobuf-2.3.0.tar.bz2
# cd protobuf-2.3.0
# ./configure ; make ; make install

Compilation de google-ctemplate

Vous avez besoin du système ctemplate :

# cd /usr/src
# wget http://google-ctemplate.googlecode.com/files/ctemplate-0.96.tar.gz
# tar xzf ctemplate-0.96.tar.gz
# cd ctemplate-0.96
# ./configure; make ; make install

Compilation de microhttpd (optionnel)

Vous avez besoin de la libmicrohttpd version > à 0.4 (non disponible dans Debian) pour l’interface web de gestion :

# cd /usr/src
# wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.4.5.tar.gz
# tar xzf libmicrohttpd-0.4.5.tar.gz
# cd libmicrohttpd-0.4.5
# ./configure; make ; make install

Compilation de OLA

Le projet OLA se découpe en deux parties : un serveur et des clients, dont voici la procédure de compilation. Vous devez remplacer x.y.z, par la version stable la plus récente du programme. (0.7.3 dans mon cas)
Pour le serveur :

# cd /usr/src
# wget http://linux-lighting.googlecode.com/files/ola-x.y.z.tar.gz
# tar xzf ola-x.y.z.tar.gz
# cd ola-x.y.z
# ./configure; make ; make install

Pour le client en C++ :

# cd /usr/src
# wget http://linux-lighting.googlecode.com/files/ola-examples-x.y.x.tar.gz
# tar xzf ola-examples-x.y.z.tar.gz
# cd ola-examples-x.y.z
# ./configure; make ; make install

Lancement d’OLAd

Vous pouvez lancer olad, avec un utilisateur qui dispose des droits de lecture / écriture du /dev/dmx0 :

$ olad -l 3
...

Vous pouvez ensuite vérifier si l’OpenDMX a bien été détecté par le serveur à l’aide du client ola_dev_info :

$ ola_dev_info
...
Device 3: OpenDmx USB Device
port 0, OUT Open Dmx at /dev/dmx0
...

Et si vouz avez compilé libmicrohttpd, vous devez pouvoir accèder à l’interface web du daemon, sur le port 9090 :

DMX OLA web console

Test et validation du bon fonctionnement

Avant de pouvoir manipuler les LEDs, il est nécessaire d’attribuer ununivers au contrôleur OpenDMX à l’aide de la commande ola_patch :

$ ola_patch -d 3 -p 0 -u 0

Ensuite vous pouvez lancer dans deux terminaux les commandes ola_dmxmonitor et ola_dmxconsole.
La première permet de suivre le statut des diffèrents composants et la seconde permet de les controler à l’aide d’un interface graphique en curses.

L’identifiant du contrôleur LED RGB sur le réseau DMX, est fonction de la valeur prise par le petit switch qui se situe sur celui-ci.
Et se découpe de la manière suivante :

  • Rouge = valeur du switch ;
  • Vert = valeur du switch + 1 ;
  • Bleu = valeur du switch + 2.

Vous pouvez faire varier les trois valeurs pour obtenir les diffèrentes couleurs possibles.

Allez plus loin avec l’Open Lighting Architecture (OLA)

OLA supporte de nombreux contrôleurs USB et Ethernet.
Il dispose d’une API Client C++ et Python, ce qui rend son intégration possible et facile dans d’autres projets et offre de nombreuses possiblités.

La diffusion d’informations à l’aide de la lumière d’ambiance et ses possiblités

L’idée de pouvoir contrôler l’intensité et la couleur d’un bandeau à LED qui se situe dans n’importe quel endroit de la maison, offre des possiblités interessantes en matière de diffusion d’informations.

En effet, la lumière permet de diffuser l’information de manière non intrusive.
Voici quelques exemples des possibilités offertes :

  • comme la lampe DAL de Violet, se connecter à l’Internet pour exploiter des ressources ;
  • Pour ceux qui disposent de l’option Tempo d’EDF, il est possible de diffuser la couleur du jour ;
  • Modifier l’Intensité lumineuse en fonction de nombreux paramètres : tempèrature, l’ensoleillement, nombre de personnes présentes dans la pièces, activation d’une alarme, réveil du bébé, etc…

Ce sont quelques exemples des possiblités offertes. Pour le reste vous pouvez faire marcher votre imagination pour créer des nouvelles manières d’inter-agir avec les machines et cette Intelligence ambiante.

Réferences

Voici mes réferences :

Conclusion

Le protocole DMX est ancien et souffre de nombreux défaults, mais il présente encore de nombreux avantages tels que :

Il faut noter qu’il existe une alternative plus récente au protocole DMX : Digital Addressable Lighting Interface (DALI).

Il est aussi possible de remplacer le contôleur OpenDMX par une carte Arduino, comme décrit ici.

Filed under: Debian,Home automation — Tags:, , , , , — cscm @ 11:39

Powered by WordPress