<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Christophe Nowicki &#187; RGB</title>
	<atom:link href="http://www.csquad.org/tag/rgb/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.csquad.org</link>
	<description>Just for fun</description>
	<lastBuildDate>Thu, 29 Jul 2010 19:42:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Gestion de la lumière d&#8217;ambiance avec le protocole DMX sous Debian GNU/Linux</title>
		<link>http://www.csquad.org/2010/01/31/dmx-lumiere-ambiance-debian/</link>
		<comments>http://www.csquad.org/2010/01/31/dmx-lumiere-ambiance-debian/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 10:39:51 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Home automation]]></category>
		<category><![CDATA[Ambient intelligence]]></category>
		<category><![CDATA[DMX]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[OLA]]></category>
		<category><![CDATA[OpenDMX]]></category>
		<category><![CDATA[RGB]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=1057</guid>
		<description><![CDATA[La technologie des lumières à LEDs offre la possibilité de placer une source de lumière n&#8217;importe où (aquarium, meubles, faux plafonds, derrière un écran, etc&#8230;). 
Par contre, les LEDs disposent de plus de fonctionnalités que les ampoules classiques.
En effet, en plus d&#8217;un bouton d&#8217;allumage, vous avez la possibilité de changer la couleur de la lumière, [...]]]></description>
			<content:encoded><![CDATA[<p>La technologie des lumières à LEDs offre la possibilité de placer une source de lumière <strong>n&#8217;importe où</strong> (aquarium, meubles, faux plafonds, derrière un écran, etc&#8230;). </p>
<p>Par contre, les LEDs disposent de <strong>plus de fonctionnalités</strong> que les ampoules classiques.<br />
En effet, en plus d&#8217;un bouton d&#8217;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&#8230; </p>
<p>Avec un nombre de possibilités plus grand, les interfaces de contrôle classique (<a href="http://en.wikipedia.org/wiki/X10_(industry_standard)">X10</a>, <a href="http://wiki.linuxmce.org/index.php/PLCBUS">PLCBUS</a>, etc&#8230;) ne suffisent pas.</p>
<p>Il est donc nécessaire de placer un peu plus d&#8217;intelligence dans le réseau d&#8217;illumination à l&#8217;aide du protocole <a href="http://en.wikipedia.org/wiki/DMX512">DMX</a>. </p>
<p>Ce protocole est utilisé dans le monde des concerts, des plateaux de télévision et des spectacles.<br />
Néanmoins, il est tout à fait possible de le détourner pour un usage domotique.</p>
<p>Dans ce billet, je vais décrire l&#8217;utilisation d&#8217;un contrôleur LED RGB DMX et de l&#8217;interface <a href="http://www.enttec.com/index.php?main_menu=Products&#038;pn=70303&#038;show=description&#038;name=opendmxusb">OpenDMX</a> de chez ENTTEC, à l&#8217;aide du projet <a href="http://code.google.com/p/linux-lighting/">OLA</a> sous <a href="http://www.debian.org/">Debian GNU/Linux</a>.</p>
<h3>Principe de fonctionnement</h3>
<p>Voici le schéma du montage:<br />
<img src="http://www.csquad.org/wp-content/uploads/2009/12/dmx_led_overview.png" alt="dmx_led_overview" title="dmx_led_overview" width="814" height="205" class="alignnone size-full wp-image-886" /></p>
<ul>
<li>le PC communique à l&#8217;aide du port USB avec un contrôleur DMX ; </li>
<li>les contrôleurs LEDs mis en série convertissent les ordres en instructions RGB ;</li>
</ul>
<p>Et voici ce que cela donne :</p>
<p><a href="http://www.csquad.org/wp-content/uploads/2010/01/opendmx_rgb_led_strip_usb.jpg"><img src="http://www.csquad.org/wp-content/uploads/2010/01/opendmx_rgb_led_strip_usb-300x197.jpg" alt="OpenDMX RGB LED" title="opendmx_rgb_led_strip_usb" width="300" height="197" class="alignnone size-medium wp-image-1087" /></a></p>
<h3>Matériel</h3>
<p>Voici le matériel nécessaire pour un bandeau à LED, le tout fonctionne bien sûr sous Debian GNU/Linux est <em>FOSS Friendly</em> <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<table border="1" width="80%">
<tr>
<th>Produit</th>
<th>Prix</th>
</tr>
<tr>
<td><a href="http://www.sirs-e.com/st/open-dmx-usb-p-47.html">OPEN DMX USB Hardware Interface</a></td>
<td>$52.00 &#8211; $60.00</td>
</tr>
<tr>
<td><a href="http://www.sirs-e.com/st/rgb-led-dmx-controller-2-p-2930.html">RGB LED DMX Controller 2</a></td>
<td>$48.00 &#8211; $76.80</td>
</tr>
<tr>
<td><a href="http://www.sirs-e.com/st/rj45-female-cable-adapter-p-2976.html">RJ45 Connetor to XLR Female Connector</a></td>
<td>$11.20 &#8211; $14.25 </td>
</tr>
<tr>
<td><a href="http://www.sirs-e.com/st/rj45-male-cable-adapter-p-2944.html">RJ45 to XLR Male DMX Cable Adapter 3ft</a></td>
<td>$10.99 &#8211; $14.00</td>
</tr>
<tr>
<td><a href="http://www.sirs-e.com/st/adapter-pole-female-pole-male-p-35.html">DMX/XLR converter connector</a></td>
<td>$10.50 &#8211; $12.00</td>
</tr>
<tr>
<td><a href="http://www.sirs-e.com/st/controller-power-supply-usaeu-p-2923.html">LED Controller Power Supply, USA/EU</a></td>
<td>$23.10 &#8211; $36.96</td>
</tr>
<tr>
<td><a href="http://www.sirs-e.com/st/terminator-pole-male-connector-p-133.html">DMX 512 Terminator, 3 Pole Male Connector</a></td>
<td>$7.94</td>
</tr>
<tr>
<td><a href="http://www.ampoule-leds.fr/mini-bandeau-rigide-rgb-12-led-20cm-150degres-12v-dc-p-2491.html">Mini Bandeau Rigide RGB 12 Led 20cm 150° 12v DC</a></td>
<td>6 &euro; &#8211; 12,95 &euro;</td>
</tr>
<tr>
<td><a href="http://www.ampoule-leds.fr/raccord-intermediaire-pour-bandeau-lumineux-led-longueur-5cm-p-638.html">Raccord intermédiaire pour Bandeau lumineux à Led Longueur 5cm</a></td>
<td>1.5 &euro; </td>
</tr>
</table>
<p>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.</p>
<h3>Installation du matériel</h3>
<p>Une fois que vous avez branché l&#8217;OpenDMX au PC, vous devez voir un convertisseur USB-Serial (UART) à l&#8217;aide de <em>lsusb</em> :<br />
<code><br />
$ lsusb<br />
Bus 002 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC<br />
</code></p>
<p>Pour faire fonctionner l&#8217;OpenDMX, vous avez besoin du module noyau <em>dmx-usb</em> et d&#8217;un environnement de compilation pour les modules. (paquet linux-headers*, etc&#8230;).<br />
<code><br />
# cd /usr/src<br />
# git-clone http://www.erwinrol.com/git/dmx_usb_module/<br />
# cd dmx_usb_module<br />
# make<br />
# cp ./dmx_usb.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial<br />
# depmod -a<br />
</code></p>
<p>Comme, l&#8217;OpenDMX est un convertisseur <em>USB-Serial</em>, le noyau par défaut le présente comme une interface <em>/dev/ttyUSB</em>.<br />
Il est donc nécessaire de <em>blacklister</em> les modules <em>usbserial</em> dans le fichier <em>/etc/modprobe.d/blacklist</em>, en ajoutant les lignes suivantes :<br />
<code><br />
blacklist usbserial<br />
blacklist usb-serial<br />
blacklist ftdi_sio<br />
</code><br />
Ensuite, ajouter le module <em>dmx_usb</em> dans le fichier <em>/etc/modules</em> et rebooter la machine.<br />
Au reboot, vous devez avoir une interface <em>/dev/dmx0</em>, qu&#8217;il faut rendre accessible pour tous les utilisateurs :<br />
<code><br />
# ls -l /dev/dmx0<br />
crw-rw---- 1 root root 180, 192 2010-01-30 00:37 /dev/dmx0<br />
# chmod a+rw /dev/dmx0<br />
</code></p>
<h3>Installation du logiciel pour la gestion de la lumière : Open Lighting Architecture (OLA)</h3>
<p>Comme, il n&#8217;y a pas de paquets Debian disponibles pour ce programme, je vais décrire une procédure d&#8217;installation à partir des sources. Ces instructions ont été valider à l&#8217;aide de la version 0.7.3 de OLA :</p>
<h4>Dépendances</h4>
<p>Vous allez avoir besoin des dépendances suivantes pour la compilation :<br />
<code><br />
# apt-get install  build-essential uuid-dev libcppunit-dev libgcrypt-dev uuid-dev<br />
</code></p>
<h4>Compilation de Protocol Buffers de Google</h4>
<p>Vous avez besoin de <a href="http://code.google.com/p/protobuf/">protobuf</a>, pour la gestion de l&#8217;échange de données :<br />
<code><br />
# cd /usr/src<br />
# wget http://protobuf.googlecode.com/files/protobuf-2.3.0.tar.bz2<br />
# tar xjf protobuf-2.3.0.tar.bz2<br />
# cd protobuf-2.3.0<br />
# ./configure ; make ; make install<br />
</code></p>
<h4>Compilation de google-ctemplate</h4>
<p>Vous avez besoin du système <a href="http://code.google.com/p/google-ctemplate/">ctemplate</a> :<br />
<code><br />
# cd /usr/src<br />
# wget http://google-ctemplate.googlecode.com/files/ctemplate-0.96.tar.gz<br />
# tar xzf ctemplate-0.96.tar.gz<br />
# cd ctemplate-0.96<br />
# ./configure; make ; make install<br />
</code></p>
<h4>Compilation de microhttpd (optionnel)</h4>
<p>Vous avez besoin de la <a href="ftp://ftp.gnu.org/gnu/libmicrohttpd/">libmicrohttpd</a> version > à 0.4 (non disponible dans Debian) pour l&#8217;interface web de gestion :<br />
<code><br />
# cd /usr/src<br />
# wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.4.5.tar.gz<br />
# tar xzf libmicrohttpd-0.4.5.tar.gz<br />
# cd libmicrohttpd-0.4.5<br />
# ./configure; make ; make install<br />
</code></p>
<h4>Compilation de OLA</h4>
<p>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)<br />
Pour le serveur :<br />
<code><br />
# cd /usr/src<br />
# wget http://linux-lighting.googlecode.com/files/ola-x.y.z.tar.gz<br />
# tar xzf ola-x.y.z.tar.gz<br />
# cd ola-x.y.z<br />
# ./configure; make ; make install<br />
</code><br />
Pour le client en C++ :<br />
<code><br />
# cd /usr/src<br />
# wget http://linux-lighting.googlecode.com/files/ola-examples-x.y.x.tar.gz<br />
# tar xzf ola-examples-x.y.z.tar.gz<br />
# cd ola-examples-x.y.z<br />
# ./configure; make ; make install<br />
</code></p>
<h4>Lancement d&#8217;OLAd</h4>
<p>Vous pouvez lancer <em>olad</em>, avec un utilisateur qui dispose des droits de lecture / écriture du <em>/dev/dmx0</em> :<br />
<code><br />
$ olad -l 3<br />
...<br />
</code><br />
Vous pouvez ensuite vérifier si l&#8217;OpenDMX a bien été détecté par le serveur à l&#8217;aide du client <em>ola_dev_info</em> :<br />
<code><br />
$ ola_dev_info<br />
...<br />
Device 3: OpenDmx USB Device<br />
  port 0, OUT Open Dmx at /dev/dmx0<br />
...<br />
</code></p>
<p>Et si vouz avez compilé <em>libmicrohttpd</em>, vous devez pouvoir accèder à l&#8217;interface web du <em>daemon</em>, sur le port 9090 :</p>
<table>
<tr>
<td>
<a href="http://www.csquad.org/wp-content/uploads/2010/01/dmx_console_ola_web.png"><img src="http://www.csquad.org/wp-content/uploads/2010/01/dmx_console_ola_web-300x168.png" alt="DMX OLA web console" title="dmx_console_ola_web" width="300" height="168" class="alignnone size-medium wp-image-1110" /></a>
</td>
<td>
<a href="http://www.csquad.org/wp-content/uploads/2010/01/ola_web_interface.png"><img src="http://www.csquad.org/wp-content/uploads/2010/01/ola_web_interface-300x172.png" alt="" title="ola_web_interface" width="300" height="172" class="alignnone size-medium wp-image-1112" /></a>
</td>
</tr>
</table>
<h4>Test et validation du bon fonctionnement</h4>
<p>Avant de pouvoir manipuler les LEDs, il est nécessaire d&#8217;attribuer un<em>univers</em> au contrôleur OpenDMX à l&#8217;aide de la commande <em>ola_patch</em> :<br />
<code><br />
$ ola_patch -d 3 -p 0 -u 0<br />
</code></p>
<p>Ensuite vous pouvez lancer dans deux terminaux les commandes <em>ola_dmxmonitor</em> et <em>ola_dmxconsole</em>.<br />
La première permet de suivre le statut des diffèrents composants et la seconde permet de les controler à l&#8217;aide d&#8217;un interface graphique en curses.</p>
<p>L&#8217;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.<br />
Et se découpe de la manière suivante : </p>
<ul>
<li>Rouge = valeur du switch ;</li>
<li>Vert = valeur du switch + 1 ;</li>
<li>Bleu = valeur du switch + 2.</li>
</ul>
<p>Vous pouvez faire varier les trois valeurs pour obtenir les diffèrentes couleurs possibles.  </p>
<h3>Allez plus loin avec l&#8217;Open Lighting Architecture (OLA)</h3>
<p>OLA supporte de nombreux contrôleurs <a href="http://www.opendmx.net/index.php/Category:USB">USB</a> et Ethernet.<br />
Il dispose d&#8217;une <a href="http://www.opendmx.net/index.php/OLA_Client_API">API Client C++</a> et <a href="http://www.opendmx.net/index.php/OLA_Python_API">Python</a>, ce qui rend son intégration possible et facile dans d&#8217;autres projets et offre de nombreuses possiblités. </p>
<h3>La diffusion d&#8217;informations à l&#8217;aide de la lumière d&#8217;ambiance et ses possiblités</h3>
<p>L&#8217;idée de pouvoir contrôler l&#8217;intensité et la couleur d&#8217;un bandeau à LED qui se situe dans n&#8217;importe quel endroit de la maison, offre des possiblités interessantes en matière de diffusion d&#8217;informations.</p>
<p>En effet, la lumière permet de diffuser l&#8217;information de manière non intrusive.<br />
Voici quelques exemples des possibilités offertes :</p>
<ul>
<li>comme la lampe <a href="http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Device-Profile-Violet-Dal-the-first-emotional-lamp/">DAL de Violet</a>, se connecter à l&#8217;Internet pour exploiter des ressources ;</li>
<li>Pour ceux qui disposent de l&#8217;option <a href="http://www.edf-bleuciel.fr/accueil/mon-quotidien-avec-bleu-ciel-d-edf/option-tempo-141090.html">Tempo d&#8217;EDF</a>, il est possible de diffuser la couleur du jour ;</li>
<li>Modifier l&#8217;Intensité lumineuse en fonction de nombreux paramètres : tempèrature, l&#8217;ensoleillement, nombre de personnes présentes dans la pièces, activation d&#8217;une alarme, réveil du bébé, etc&#8230;</li>
</ul>
<p>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&#8217;inter-agir avec les machines et cette <a href="http://fr.wikipedia.org/wiki/Intelligence_ambiante">Intelligence ambiante</a>.</p>
<h3>Réferences</h3>
<p>Voici mes réferences :</p>
<ul>
<li>Le Wiki d&#8217;<a href="http://www.opendmx.net/index.php/OpenDMX.net">OpenDMX.net</a> ; </li>
<li>La page <a href="http://opendmx.net/index.php/OLA_on_Linux">OLA on Linux</a> du Wiki ;</li>
<li>Le site du constructeur <a href="http://www.enttec.com/">ENTTEC</a> ;</li>
<li>Le tutorial <a href="http://www.opendmx.net/index.php/LLA,_OpenDMX_USB_and_Q_Light_Controller_Tutorial">LLA, OpenDMX USB and Q Light Controller Tutorial</a> ;</li>
<li>L&#8217;article <a href="http://www.sonomag.com/Archives/Article,Go,comprendre,dmx,Id,1980.html">Comprendre: Le DMX</a>, chez SONOMag ;</li>
<li><a href="http://members.westnet.com.au/rowanmac/opendmx.html">Hippy&#8217;s Open DMX USB Resources</a> ; </li>
<li>Le site du projet <a href="http://llg.cubic.org/dmx4linux/">DMX4Linux</a> ;</li>
<li>La présentation du <a href="http://wiki.binkey.nl/DMX">DMX</a>, chez Automated Home.</li>
</ul>
<h3>Conclusion</h3>
<p>Le protocole DMX est ancien et souffre de nombreux défaults, mais il présente encore de nombreux avantages tels que :</p>
<ul>
<li>la disponiblité de <a href="http://www.conrad.fr/webapp/wcs/stores/servlet/CatalogSearchFASResultView?storeId=10001&#038;catalogId=10001&#038;langId=-2&#038;searchSKU=&#038;fh_search=DMX">nombreux équipements</a> à prix abordable ;</li>
<li>sa simplicité. </li>
</ul>
<p>Il faut noter qu&#8217;il existe une alternative plus récente au protocole DMX : <a href="http://www.dalicontrol.com/dali/whatisdali.htm">Digital Addressable Lighting Interface (DALI)</a>.</p>
<p>Il est aussi possible de remplacer le contôleur OpenDMX par une carte <a href="http://www.arduino.cc/">Arduino</a>, comme décrit  <a href="http://www.arduino.cc/playground/DMX/Opendmx">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2010/01/31/dmx-lumiere-ambiance-debian/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
