Contrôler ses rubans led avec le projet WLED

Pour un très bon rendu

Sommaire

Prérequis

  1. Savoir se servir d’un fer à souder
  2. Avoir un peu de temps et le goût des choses faites soi-même

Contexte

J’aime beaucoup les luminaires Philips Hue, notamment leur dernier produit les signes.

Le problème est le prix qu’en demande le fabriquant, plus de 150€… Alors je me suis mis en quête d’une alternative diy. J’ai testé deux solutions basées sur de l’esp8266, le projet McLighting et le projet WLED. Les deux disposent d’une belle interface web, d’une api bien fournie, et de nombreux preset pour des effets lumineux toujours plus enchanteurs. En lisant le titre de cet article, vous aurez néanmoins compris que mon choix s’est arrêté sur le dernier de ces deux projets. En effet McLighting s’est montré à l’usage insuffisamment stable (le ruban led ne s’éteint plus ou ne s’allume plus au bout de quelques jours/semaines de fonctionnement, la seule solution étant d’appliquer un hard reset régulier).

À l’inverse WLED s’avère une proposition presque parfaite - la liaison mqtt se montre parfois un peu capricieuse - mais le contrôle http ne souffre lui d’aucune défaillance; cela suffit pour l’interfacer avec Jeedom. Surtout pour aller au plus simple WLED propose aussi un binaire prêt à l’emploi de sa solution. On a donc le choix de compiler soi-même si on veux modifier des choses, ou on peut se contenter de flasher sans se prendre la tête.

Je laisse ceux qui se lanceront dans la compilation, ils savent sans doute comment faire, pour les autres j’ai procédé en m’appuyant sur les développeurs derrière le projet espeasy.

Préparer son esp8266

Sous linux

Créer le script flash.sh où vous le souhaitez pour l’exemple, ici ce sera dans un dossier /ESP8266.

nano ~/ESP88266/flash.sh

#!/bin/bash
read -e -p "Serial Port :" -i "/dev/ttyUSB0" comport
read -e -p "Flash Size (example 512, 1024, 4096) :" -i "4096" fsize
read -e -p "Build (example 71, 72, ..) :" -i "120" build

size="${fsize}K"
if [ $fsize -gt 1000 ]; then
 size=$(($fsize/1024))"M"
fi

echo "Expected Flash Size: $size"
echo "Using com port: $comport"
if [ -f ESPEasy_R${build}_${fsize}.bin ]; then
 echo "Using bin file: ESPEasy_R${build}_${fsize}.bin [FOUND]"
 ./esptool -vv -cd nodemcu -cb 115200 -bz $size -cp $comport -ca 0x00000 -cf ESPEasy_R${build}_${fsize}.bin
else
 echo "Expected bin file: ESPEasy_R${build}_${fsize}.bin [NOT FOUND!!!]"
fi
chmod a+x ~/ESP88266/flash.sh

Installer python et esptool.

apt install python-pip
pip install esptool

Télécharger le binaire dans le dossier où est le script puis lancer le script.

bash flash.sh

Sous windows

Espeasy propose un .exe, il suffit de placer le binaire dans le même dossier et de double cliquer sur esptool.exe.

Les composants internes

Le montage est très simple. Ce n’est d’ailleurs qu’une adaptation du montage que j’avais réalisé pour mon ambilight. Pensez juste à mettre un condensateur de 1000 µF à 6.3V en parallèle et à alimenter en commun ruban et esp. Également afin de préserver la durée de vie de vos led, placez une résistance de 470 ohm en série sur la ligne data. Et c’est tout.

esp8266 Ruban
gpio-2 ou D3 dim
5v 5v
gnd gnd

Optionnel: il est possible de mettre un bouton poussoir pour commander le ruban.

esp8266 Bouton poussoir
gpio-0 ou D3 un des brins
gnd l’autre brin

Les composants externes

La fabrication n’a pas été particulièrement complexe, il a nécessité un contenant, et du profilé aluminium.

J’ai récupéré un boite de lunette pour me servir de boite. Il faut en effet éviter les contenants métallique si l’on souhaite pour voir communiquer en wifi efficacement.

Au niveau du choix des led, le projet est souple, il accepte un peu près tout: les classiques WS2812B, mais également les SK6812 (elles disposent de led pour retranscrire proprement les blancs), et même de l’APA102 (mais au prix d’une modification à faire lors de la compilation). Je vous renvoie à ce papier pour vous aider à faire votre choix. Pour ma part il me restait 2m de SK6812, cela tombait bien.

À l’intérieur

J’ai placé des rondelles en bois pour lester le tout et éviter que la lampe ne se renverse. J’ai également placé l’esp dans une petite boite plastique pour l’isoler du reste.

À l’extérieur

J’ai percé une entrée avec une scie à chantourner afin de laisser passer le profilé aluminium. Sur ce dernier j’ai simplement collé le ruban led.

J’ai également percé le boitier y pour mettre une prise d’alimentation.

Résultat

J’aime beaucoup le rendu final. Il s’agit d’un éclairage d’ambiance, mais cela rend formidablement bien.