On se propose de piloter à distance avec l'iPhone deux diodes LED de forte puissance (30W HH-30WP3RGBM ou autre modèle), la LED est constituée de trois diodes une rouge, une verte, une bleu. Le montage final de la lampe d'ambiance emporte la carte Raspberry PI dans le socle de la lampe pour un usage pratique avec seulement un câble d'alimentation secteur. La connectivité réseau finale de la lampe sera en WiFi (clef USB WiFi D-Link N150). La commande sera via un iPhone ou autre avec une application spécifique montrant une roue chromatique (colorpicker) ou avec PLCLink, Wagolink ou simplement une page sur sur un navigateur.
On réalise un programme C qui sera constamment actif. ce programme pilote trois sorties MLI de commande pour les drivers de puissance (voir plus bas) des trois couleurs (transistors MOSFET). Ce programme après compilation est lancé sous 'root' pour avoir pleinement accès au bus GPIO de la carte Raspberry PI, ultérieurement il sera automatiquement lancé lors du boot de la carte (voir plus bas).
La communication distante permet l'allumage et le réglage d'intensité des trois diodes par l'intermédiaire de trois fichiers comportant une valeur d'intensité : rouge.txt, vert.txt, bleu.txt. L'iPhone via une url commande la lampe, celle-ci comporte un serveur web qui sera aussi utilisé pour réaliser des pages web de pilotage de la lampe.
Des scripts CGI en Python peuvent modifier les fichiers de réglage, l'iphone avec PLClink montre trois 'sliders', une action sur ces sliders active l'url du canal correspondant et place la nouvelle valeur dans le fichier correspondant. Ces fichiers sont périodiquement lus par le pilote et les diodes allumées en conséquence.
Cette méthode introduit un délai de réaction de 0,5 seconde environ. On pourra compléter avec des teintes pré-réglées par exemple.
Cette lampe est économique, la consommation max est de 80W avec deux diodes RGB de puissance, le niveau d'éclairement comparable avec une lampe halogène classique de 300W, le coût de revient est estimé à 150€.
L'usage avec une palette de couleur est assez performant, on réalise facilement une dominante de couleur sur des photos.
Le RaspberryPI est une carte complète micro-ordinateur avec Linux comme système d'exploitation. Après installation il est utilisable pour le pilotage des LED en MLI via le bus GPIO 26 pins disponibles. Une librairie spécifique permet plusieurs sorties MLI. voir Gordons Projects.
On utilisera une sortie bit pour l'allumage global (PIN 15 et 16) avec une led de contrôle et trois sorties MLI pour les canaux RVB, les logiciels Apache, PHP5 et des scripts Python vont donner accès en commande pour l'iPhone distant via des url spécifiques ou des pages web.
Le RaspberryPI est aussi un serveur, l'iPhone avec l'application PLCLink ou Wagolink sera la télécommande distante.
Dans cette application le Raspberry PI n'est pas connecté sur un écran ou un clavier et il vous faudra connaître
l'adresse IP du Raspberry PI dans la suite du montage.
Vous avez avantage à fixer l'adresse IP du Raspberry PI en associant l'adresse MAC de celui-ci avec une IP fixe, à régler dans l'interface du routeur réseau, il sera plus simple de réaliser ensuite les routages du port 80 pour un accès en réseau extérieur (3G). Un autre port est possible si le port 80 est déjà utilisé sur votre réseau, le port 8080 par exemple.
La commande n'utilisera que des transferts HTTP standard.
On utilisera par la suite Wagolink ou PLClink qui sont compatibles sur un iPhone, ipad ou un iPod pour la commande.
La commande via l'iPhone n'agit que sur les fichiers de réglages, on réalise une séparation totale avec le logiciel réel de pilotage du module de puissance RGB. Une première phase de test utilise des diodes RGB de faible puissance.
Démonstration de base avec une diode de faible puissance, et du montage final avec la LED de 30W dans un support de lampe halogène.
Vous trouvez sur les sites consacrés à ce produit les détails pour le montage de base, la page
descriptive donne aussi des détails d'installation.
Vous devez vous référer à la page suivante pour des informations d'installation de base
carte mémoire de boot et les logiciels Apache2, PHP5, Python3.
Dans la mesure du possible on conserve pour Apache2 l'usage par défaut des dossiers spécifiques : serveur en /var/www/, les
scripts cgi-bin en /usr/lib/cgi-bin/
Pour le côté pratique la lampe sera montée sur le réseau avec une clef WiFi. Pour éviter
les surprises on choisira la clef WiFi D-Link N150 disponible facilement à la FNAC.
Cette clef accepte d'être présente lors du boot du Raspberry PI sur le connecteur de la carte. (c'est pas toujours le cas)
Cette clef dispose d'un chip RTL8188CUS on trouve le driver et les détails d'installation sur le site :
http://dl.dropbox.com/u/80256631/install-rtl8188cus.txt
On complète aussi avec un IP fixe donné par le routeur avec une association MAC de la clef WiFi et un IP à choisir pour la lampe.
On utilisera ces scripts Python pour modifier les fichiers de valeur des trois LED à partir de simple
URL appelés avec PLCLink, ils sont à placer dans le dossier :
/usr/lib/cgi-bin/
Ces scripts sont utilisables directement dans une URL avec les sliders de PLCLink et de Wagolink.
Vous devez aussi vérifier sur un navigateur que les scripts réalisent les opérations demandées, ne pas
oublier de placer les autorisations en exécution pour ces scripts.
Il faut compiler le code rgbpwm.c pour obtenir le fichier rgbpwm exécutable. Une ligne commentaire donne la syntaxe de la compilation (ça ne s'invente pas !).
Après compilation, lancer le programme de pilotage avec la commande : $ sudo ./rgbpwm
Les fichiers des valeurs (rouge.txt, bleu.txt et vert.txt) seront crées automatiquement par ce logiciel.
Ce programme boucle en permanence pour garder les MLI actives, il consomme assez peu de puissance CPU (2%) . Ultérieurement il faudra lancer ce logiciel lors du boot de la carte comme un service (voir plus bas).
Lors de l'arrêt, coupure de courant etc.. il faut que ce programme redémarre automatiquement.
Un fichier rc.local permet cette action. Vous ouvrez rc.local avec l'éditeur nano:
$ sudo nano /etc/rc.local
et vous ajoutez ces deux lignes à la fin des commandes pour le lancement automatique du programme compilé :
cd /var/www/rgb
./rgbpwm
L'allumage général du dispositif relance bien le programme : rvbpwm pilote de la lampe RVB.
PLCLink et Wagolink affichent des informations à partir d'un fichier xml de réglage comme le fait votre navigateur avec un fichier html. Il faut réaliser ce fichier et le déposer dans le Raspberry qui sera le serveur.
Après quelques réglages dans PLCLink ou dans Wagolink on devrait obtenir l'écran de réglage ci-contre.
Pour la suite installez un dossier rgb dans /var/www/ avec la commande : $ mkdir /var/www/rgb
On réalise un fichier WagoML comme ci-dessous pour obtenir trois sliders, ce fichier sera déposé dans le dossier "/var/www/rgb/wagolink.xml" du Raspberry PI, il sera rechargé par un script en PHP qui pourra remplacer des balises par les valeurs demandées pour le feedback des sliders.
Vous devez charger et éditer ce fichier pour au minimum y placer l'adresse IP de votre Raspberry PI dans votre installation.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wagoml PUBLIC "-//wagoml org//DTD WAGOML 1.0//EN" "http://pautex.fr/wago/DTD/WagoML-1.0.dtd"> <wagoml version="1.0" xmlns="http://pautex.fr/wago/"> <title>RaspberryPI-RGB</title> <items> <item id="0"> <title>Raspberry</title> <name>Rouge</name> <description>pin header 26</description> <type>direct</type> <affichage>slider</affichage> <minimum>0</minimum> <maximum>100</maximum> <link>http://192.168.0.100/cgi-bin/rouge.py?%d</link> <IW>#rouge#</IW> </item> <item id="1"> <title>Raspberry</title> <name>Vert</name> <description>pin header 21</description> <type>direct</type> <affichage>slider</affichage> <minimum>0</minimum> <maximum>100</maximum> <link>http://192.168.0.100/cgi-bin/vert.py?%d</link> <IW>#vert#</IW> </item> <item id="2"> <title>Raspberry</title> <name>Bleu</name> <description>pin header 22</description> <type>direct</type> <affichage>slider</affichage> <minimum>0</minimum> <maximum>100</maximum> <link>http://192.168.0.100/cgi-bin/bleu.py?%d</link> <IW>#bleu#</IW> </item> <item id="3"> <title>Raspberry</title> <name>ALLUMER RGB</name> <description>pin header 15-16</description> <type>direct</type> <affichage>switch</affichage> <link>http://192.168.0.100/cgi-bin/setPin.py?15+%d</link> <IW>#16#</IW> </item> </items> </wagoml>
Composez aussi ce fichier à placer dans le même dossier "/var/www/rgb/wagolink.php", celui-ci remplacera
la valeur de l'état de la pin 16 dans <IW>#16#</IW> du fichier wagoml précédant à chaque appel.
Le fichier php remplace aussi #rouge#, #vert# et #bleu# par les valeurs présentes dans ces fichiers texte
afin de replacer les sliders en bonne position.
fichier wagoml.php (source):
<? // Pautex JF 09/2012 // Appel par PLClink, remplace les balises par des valeurs numériques // il retourne le fichier wagoml.xml modifié. // $fp = popen('python /usr/lib/cgi-bin/readPin.py 16 | tail -1', 'r'); $data = fread($fp, 1024); pclose($fp); $xml = file_get_contents("wagoml.xml"); $file = str_replace("#16#", $data, $xml); $rouge = @file_get_contents("rouge.txt"); $file = str_replace("#rouge#", $rouge, $file); $vert = @file_get_contents("vert.txt"); $file = str_replace("#vert#", $vert, $file); $bleu = @file_get_contents("bleu.txt"); $file = str_replace("#bleu#", $bleu, $file); echo $file; ?>
Ce script PHP relis le fichier wagoml.xml et remplace la balise #16# par la valeur de l'état de la pin 16 ainsi que les balises de valeur des couleurs, puis il retourne le fichier wagoml.xml modifié qui sera affiché par PLCLink.
Réalisez une nouvelle entrée sur PLCLink ou Wagolink et réglez avec l'url du fichier PHP ci-dessus.
Si vous voulez définir un groupe user/pass montez un fichier .htacess et .htpaswd dans le dossier /rgb.
La sélection ensuite devrait montrer l'écran composé sur iPhone. La méthode est très performante car l'écran visible et les valeurs associées proviennent uniquement du serveur Raspberry PI avec 1 seul transfert.
Le réglage par slider comme présenté ne permet pas une prévision rapide de la couleur obtenue. La méthode du 'colorpicker' comme présenté ci-contre est en cours de développement et sera incluse dans PLCLink. La sélection d'une teinte est beaucoup plus rapide.
Le Raspberry PI est parfaitement à l'heure, il sera donc inclus aussi un affichage indicatif de l'heure entière et des quart d'heure par clignotement coloré.
Une fonction stroboscope est en essai.
Enfin il est très aisé de monter un serveur AirPlay dans le Raspberry PI, la sortie audio sera donc dirigée vers un ampli. Un serveur AirPlay audio permet de déporter l'écoute de l'iPhone vers un ampli externe.
C'est une application iPhone disponible sur App Store, qui permet l'envoi de la couleur par simple URL, description ici : Color sender pour iPhone et iOS6
Il faut disposer d'une page de réception de la couleur et sortir les composantes dans les fichiers pour la lampe. Sur Color sender on donne l'URL de cette page de commande installée dans le Raspberry PI.
Schéma du montage de commande des LED RGB de puissance. L'alimentation sera en 12V pour 1 diode ou 24 V pour deux diodes. Pour une alimentation en 24V de deux LED en série ne pas installer le régulateur 5V.
Le circuit est connecté au Raspberry PI avec une nappe et les connecteurs 26 fils.
On trouve 3 transistors MOSFET, alimentation avec un module 12V DC 2A d'un ancien portable. Le montage redonne la tension
de 5V nécessaire au RaspBerry via un régulateur 5V LM7805 qui sera placé sur un radiateur. A remplacer par une alimentation
+5 V fixe à découpage secteur pour un meilleur rendement global.
Le courant des LED est de 700mA moyen avec 7 V à 11 V sur les diodes. Les résistances R7, R8 et R9 sont à ajuster
pour limiter le courant dans les diodes au maximum possible, ici 0,7A par diode. Un ajustement logiciel est à prévoir avec une
limitation du maaximum de la commande MLI afin de ne pas dépasser le courant moyen maximum recommandé.
Le lien avec la carte Raspberry est réalisé avec une nappe 26 fils, beaucoup sont inutilisés.
Dessin du circuit deux faces de ce montage :
Disponible en pdf : Circuit imprimé du montage
Simple et classique sans composants délicats au montage.
La carte driver assemblée avec un radiateur pour le régulateur 5V. Ce régulateur alimente en 5V la carte Raspberry PI à partir du 12V. L'échauffement du régulateur obligera sans doute à installer une alimentation spécifique dans le montage final.
On complète avec des radiateurs soudés sur les transistors MOSFET réalisés avec des chutes de cuivre.
en cours
Montage sur un radiateur pour CPU facilement récupérable. La diode est fixée avec deux trous taraudés à M 2,5 et deux vis.
Monter pas des vis la diode avec de la pâte thermique, sur ce type de radiateur la température finale se stabilise vers 65°C en fonctionnement maximum.
Le montage de la lampe sera réalisé dans un ancien support de lampe halogène, les fils pouvant descendre dans le tube. On
évitera ainsi la vison directe de la diode en fonctionnement.
Ce driver est capable d'alimenter deux diodes RGB en série avec 24 V d'alimentation, mais il faudra ôter le régulateur 5V et
le remplacer par une alimentation 5 V genre chargeur de téléphone pour le Raspberry PI, ce qui apportera un meilleur rendement global.
La lampe devant rester sur le secteur sans interruption le minimum de consommation à vide est de rigueur.
On prépare la coupole de la lampe avec une plaque d'aluminium qui sera support pour les radiateurs. La plaque est vissée sur l'ancien support.
Avec le Luxmètre on mesure pour une ou deux diodes HH-30WP3RGBM à 80 cm :
Couleur | 1 LED (lx) | 2 LED (lx) |
Rouge | 234 | 393 |
Vert | 167 | 393 |
Bleu | 177 | 336 |
R + V + B | 495 | 945 |
Couleur | Courant I (A) | Watt |
vide | 0,036 | 3 |
Rouge | 0,230 | 32 |
Vert | 0,133 | 25 |
Bleu | 0,220 | 29 |
R + V + B | 0,560 | 80 |
Fixation du Raspberry PI avec deux plaques de Plexiglas, une est rainurée, l'autre comporte une petite
pièce de serrage de la carte; l'absence de trous de fixation rends ce module difficile pour sa fixation.
La carte reste facilement démontable et les connecteurs sont tous accessibles.
La sortie audio est déportée pour l'usage vers un ampli externe avec la fonction AirPlay (AirPI)
Un connecteur DIN permet de déconnecter la lampe du boitier.
L'alimentation +24V/3A est fixée avec des entretoises plastique adhésives ainsi que la carte du driver des lampes.
L'alimentation +5V chargeur de téléphone est fixée avec un adhésif deux faces, la partie prise secteur est sciée, remplacée par deux fils souples.
La documentation de Wagolink est ici : Wagolink La documentation de PLCLink est ici : PLCLink
Nancy 2012-17 - contact : Pautex JF