Arduino : contrôler un ruban de leds RGB avec xPL (et Domogik donc)

Mon projet de contrôle de ruban de leds RGB via arduino est fini d’un point de vue technique. Il ne me reste plus que la documentation à finir de rédiger puis à mettre en ligne.

Présentation rapide

Voici à quoi ressemble le prototype. Dans quelques semaines/mois, je le mettrais en place dans ma chambre pour faire une jolie corniche lumineuse ;)

arduino_fini

Ce montage permet un contrôle manuel via :

  • un bouton poussoir pour allumer/éteindre la lumière. Si une couleur était choisie avant extinction, elle sera utilisée à l’allumage.
  • un potentiomètre rond pour choisir la couleur sur une roue chromatique.

roue chromatique

Le contrôle pourra être fait aussi par xPL via un schéma dédié : arduino.rgb.

Exemple pour allumer :

xpl-cmnd
{
...
}
arduino.rgb
{
device=parentsbedroom
command=setcolor
color=on
}

Exemple pour éteindre :

xpl-cmnd
{
...
}
arduino.rgb
{
device=parentsbedroom
command=setcolor
color=off
}

Exemple pour définir une couleur :

xpl-cmnd
{
...
}
arduino.rgb
{
device=parentsbedroom
command=setcolor
color=#cb0101
}

A chaque évènement (commande xPL ou contrôle manuel), un message xPL est envoyé pour indiquer l’état :

xpl-trig
{
...
}
arduino.rgb
{
command=setcolor
device=parentsbedroom
color=#cb0101
}

Vous trouverez plus d’informations dans quelques jours sur cette page : http://wiki.domogik.org/hardware_ar_rgb

Intégration dans domogik et autres solutions xPL

Qui dit xPL… dit Domogik, mais aussi les autres solutions basées sur xPL..

Ce projet arduino respecte les spécifications xPL (heureusement !) et vous pouvez donc l’utiliser sur toute solution xPL.

Du côté de Domogik, nous avons adapté le code afin que le manager et l’IHM  puissent lister les clients xPL hardware de type connus de manière sympatique :

domogik_plugin_ar_rgb

Comme vous pouvez le voir sur l’image, l’arduino est repéré dans la technologie arduino et listé avec les plugins « software ». Une petite icone en forme de prise différencie les plugins hardwares des plugins software.

La configuration de l’arduino (ip, addresse « humaine » du device, etc) se fait lors du chargement du code dans l’arduino. De manière plus générale, un client xPL hardware ne sera pas (à ce jour) configurable via une solution xPL (si vous avez des exemples de client hardware se configurant via xPL, je suis preneur pour tenter d’intégrer ceci dans Domogik). Du coup, la page de configuration pour les clients xPL hardware est en fait une page qui va afficher les informations du message de hbeat fourni par le client (ici configuration réseau et couleur courante).

J’ai développé un widget  basé sur une roue chromatique afin d’avoir une manière sympathique de choisir les couleurs ou d’allumer/éteindre le ruban depuis l’IHM :

widget_rgb

Où et quand ?

Tout est disponible dans la branche default des sources du projet Domogik. Si vous installez la version de développement, vous aurez donc l’intégration de ce projet arduino dans Domogik. Les sources arduinos, schémas électroniques, etc sont disponibles aussi dans default dans src/external/hardwares/ar_rgb. Dès que la doc sera faite (ou si vous vous sentez l’âme d’un aventurier), vous pourrez donc essayer ;)

Pour ce projet, j’ai utilisé la version 22 de l’environnement de développement arduino. La dernière version de la librairie Udp étant plus complète, j’ai ajouté cette version dans l’environnement de développement. Il vous suffit de télécharger les fichiers Udp.cpp et Udp.h depuis cette url : https://github.com/arduino/Arduino/tree/master/libraries/Ethernet.
Puis remplacez les fichiers de même nom dans le dossier librairies/Ethernet/ de l’environnement de développement.
Cette version permet notamment de gérer plusieurs sockets simultanément. Elle devrait être incluse dans la prochaine version de l’environnement de développement (23).

Concernant la 0.1.0 de Domogik, le code pour gérer ce projet arduino ne sera pas inclus. Il sera disponible dans la version officielle suivante.

Je vous tiens au courant concernant la fin de rédaction de la documentation ;)

Pour ce projet, j’ai utilisé la version 22 de l’environnement de développement arduino. La dernière version de la librairie Udp étant plus complète, j’ai ajouté cette version dans l’environnement de développement. Il vous suffit de télécharger les fichiers Udp.cpp et Udp.h depuis cette url : https://github.com/arduino/Arduino/tree/master/libraries/Ethernet.

Puis remplacez les fichiers de même nom dans le dossier librairies/Ethernet/ de l’environnement de développement.

Cette version permet notamment de gérer plusieurs sockets simultanément. Elle devrait être incluse dans la prochaine version de l’environnement de développement (23).

Suivre les commetaires avec le flux RSS 2.0. Vous pouvez laisser un comentaire, or trackback depuis votre site.

22 Commentaires »

 
  • theshwal dit :

    Beau boulot Fritz,
    encore une belle réalisation.
    Je pense que ca va me servir dans ma future maison.
    La documentation sur le wiki de DOMOGIK est assez claire aussi. Il faudrait toute fois rajouter les autres composants (potentiomètre, résistance,..)

    Y a plus qu’a tester :)

  • Fritz dit :

    La documentation est loin d’être claire à ce jour tu veux dire :) . Il manque plein d’infos… Mais c’est dans ma liste des tâches de la semaine ;)

  • Feunk dit :

    Dis donc Fritz, je compte faire une grande bande LED avec ce montage. Saurais-tu me dire si je ne ferais pas mieux de remplacer l’ULN2003 par ce petit boîtier? http://cgi.ebay.fr/12V-DC-6A-RGB-signal-Amplifier-f-5050-RGB-SMD-Led-Strip-/250855704163?pt=UK_HomeGarden_Lighting_Lamps_Lighting_SM&hash=item3a682a4663

  • Fritz dit :

    @Feunk : ça devrait être bon oui :) . C’est juste plus cher ;)

  • vincent dit :

    bonjour
    impossible de compiler !!!!
    quelles sont les libs et la version utilisée ?

  • Fritz dit :

    La 0.22. Peux-tu donner la trace d’erreur ?
    « impossible de compiler » c’est relativement vague ;)

  • vincent dit :

    re

    voici le log de la compil

    une idéé ?

    ar_rgb:109: error: ‘UDP’ does not name a type
    ar_rgb.cpp: In function ‘void setup()’:
    ar_rgb:131: error: no matching function for call to ‘UdpClass::begin(unsigned int&)’
    C:\arduino\libraries\Ethernet/Udp.h:52: note: candidates are: void UdpClass::begin(uint16_t, uint16_t)
    ar_rgb:143: error: ‘sendHbeat’ was not declared in this scope
    ar_rgb:144: error: ‘setColorOff’ was not declared in this scope
    ar_rgb.cpp: In function ‘void loop()’:
    ar_rgb:166: error: ‘setColorFromHSL’ was not declared in this scope
    ar_rgb:173: error: ‘setColorOn’ was not declared in this scope
    ar_rgb:177: error: ‘setColorOff’ was not declared in this scope
    ar_rgb:186: error: ‘pulse’ was not declared in this scope
    ar_rgb:196: error: ‘sendHbeat’ was not declared in this scope
    ar_rgb:214: error: ‘parseXpl’ was not declared in this scope

  • Fritz dit :

    Bonjour,

    Je réponds un peu tard… En effet j’ai oublié de préciser un point :

    Pour ce projet, j’ai utilisé la version 22 de l’environnement de développement arduino. La dernière version de la librairie Udp étant plus complète, j’ai ajouté cette version dans l’environnement de développement. Il vous suffit de télécharger les fichiers Udp.cpp et Udp.h depuis cette url : https://github.com/arduino/Arduino/tree/master/libraries/Ethernet.
    Puis remplacez les fichiers de même nom dans le dossier librairies/Ethernet/ de l’environnement de développement.
    Cette version permet notamment de gérer plusieurs sockets simultanément. Elle devrait être incluse dans la prochaine version de l’environnement de développement (23).

  • vincent dit :

    re
    je ne trouve pas les libs que tu indique Udp.cpp et Udp.h
    peut tu pointer un lien vers un environement ou poster tes libs

    cordialement

  • Fritz dit :

    En effet, je ne les trouve plus non plus… Elles ont peut être été incluses dans EthernetUdp.c/h. je te laisse vérifier, je n’ai pas le temps ces jours-ci ;)

  • vincent dit :

    super !
    ça fonctionne , suffit de supprimer les deux fichiers udp du projet et de compiler sous arduino 022

    j ai modifié en xap les sources ideal pour dialoguer avec homeseer , xap et xpl etant cousins

    a bientot

  • Fritz dit :

    Bonne nouvelle :)

  • Papailloux dit :

    Bonjour et bravo Fritz pour votre réalisation.J’ai une question idiote..Est- il possible de piloter un contrôleur rgb via du x10? Cordialement.

  • Fritz dit :

    @Papailloux (avec du retard) : non, le x10 ne permet pas de contrôler du RGB. En solution commerciale il faut regarder du côté du DMX.

  • Bruno dit :

    Le lien vers domogik (pour les fichiers) ne fonctionne plus

  • Bruno dit :

    merci

  • vincent dit :

    salut

    je cherche a adapter ce montage sous xap pour discuter avec Homeseer qui ne connais pas Xpl

    je seche sur le parser , je dois traiter ce message udp

    xap-header
    {
    v=13
    hop=1
    uid=FF.000E:0000
    class=xapBSC.Cmd
    source=mcs.Xap.HOMESEER
    target=arduino.rgb.arduino1:led
    }
    output.state.1
    {
    State=ON
    ID=01
    }
    Checksum
    {
    Length=0175
    }

    apparement ton parser se sert des open et close bracket pour incrementer la lecture du buffer ….
    je seche ….une piste
    cordialement vincent

  • Fritz dit :

    Il y a un plugin xpl pour homeseer à ma connaissance. Ca sera peut être plus simple non ?

  • vincent dit :

    ça y est ça fonctionne sous homeseer !
    le hub de mcs (mcsprinkler) translate le xpl en xap
    et pour envoyer les ordres : xplsend.exe traine sur le net

    un event de ce type :
    c:\xplsend.exe xpl-cmnd * arduino.rgb device=parentsbedroom\ncommand=setcolor\ncolor=#00ff00

    faut juste augmenter la taille des messages maxi et l ip de l arduino selon son besoin …
    atomique !!!!
    j ai bricole deux ap wifi avec l arduino collé dessus , le tout dans une jolie poterie ….
    j ai ENFIN mes ambilight qui discutent avec tout le reste
    Ma femme et ma fille adorent
    encore bravo pour cette realisation

  • Fritz dit :

    Heureux que ça t’ai été utile ;)
    T’aurais une photo de ce que ça donne histoire qu’on bave un peu aussi :) ?

  • [...] vous rappelez peut être de mon montage arduino pour contrôler un ruban de leds RGBs ? Ces derniers jours j’ai enfin mis en place ce montage… On reprend donc le même [...]

 

Laisser un commentaire

XHTML : Vous pouvez utiliser ces balises : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>