[TUTO] Connecter directement sa bande de LEDs PWM ( 3 fil ) sur les ports GPIO de son Raspberry pour faire de l'Ambilight

Le but de ce tuto est de vous montrer comment on peut se passer d'un Arduino ou autre Microcontrôleur dans le cadre d'une installation Ambilight avec des bandes de LEDs PWM.

 

Il y a peu nous étions obligé de passer par divers modèles de microcontrôleurs, comme les Uno, Nano ou autres, pour faire fonctionner nos bandes PWM contrairement aux bandes SPI ( 4 fil ) qui fonctionne d'origine sans ajout de dispositif.

 

Suite à des mises à jour d’Hypérion on peut aujourd'hui s'en passer donc plus besoin de réaliser des installations de ce genre :

 

Pour ce tuto j'ai utilisé :

  • Un Raspberry Pi B2 sous Libreelec
  • Une bande de LEDs SK6812 ( équivalente aux WS2812B )

 

 

Préalable

 

Tout d'abord il nous faut :

  • avoir une installation Ambilight en place utilisant Hypérion et un Raspberry 
  • un éditeur de texte et/ou HyperCon

 

Je pars du principe que vous avez déjà une installation Ambilight en place, contrôlé par un Raspberry via un Arduino et Hypérion pour la gestion de vos LEDs . Sinon voir mon autre Tuto ici  pour créer une config avec HyperCon pour Hypérion.

 

 

Câblage

 

La première chose des à faire, vu que nous allons changer de dispositif de contrôle de nos LEDs sera de modifier les branchements.

Dans votre système actuel, le signal part de votre Raspberry et va vers votre Arduino qui le retransmet à la bande de LEDs.

Nous allons donc supprimer cet intermédiaire en connectant, tout d'abord, le fil Data de notre bande sur l'une des 3 broches GPIO compatible de notre Raspberry.

 

Vous pouvez au choix utiliser :

  • Le GPIO18, broche N°6 de la colonne de droite
  • Le GPIO12, broche N°16 de la même colonne
  • Le GPIO13, broche N°17 de la colonne de Gauche

En plus de cela, nous devons connecter le fil GND à l'une des broches GND de notre Raspberry. Je vous ai mis une image correspondante à mon installation, libre à vous de choisir les broches en fonction de votre utilisation ( dans mon cas le GPIO18  est déjà utilisé pour un récepteur Infrarouge ).

 

Broches GPIO et schéma de branchement :

Pour résumer mes manipulations :

  • Le Data de ma bande est connecté sur le GPIO12, broche 32, de mon Raspberry ( rajouter une résistance de 330 Ohm si besoin )
  • et le GND sur la broche 30 de mon Raspberry

Le GND de ma bande est connecté à celui de mon alimentation. La bande est alimenté en parallèle par une alimentation 5v 10A pour un fonctionnement optimal.

 

Maintenant que le câblage est fait, passons à la partie software.

 

 

Modification de notre fichier de configuration Hypérion

 

Lorsque l'on utilise un Arduino dans son installation, on doit définir un type d'utilisation, en général Adalight et un périphérique qui est généralement /dev/ttyUSB0. Le nombre de LEDs est quand à lui défini directement dans le Sketch ino.

 

Voici un extrait de fichier de configuration Hypérion utilisant un Arduino Nano comme dispositif :

 

// DEVICE CONFIGURATION 

"device" :

{

"name"       : "ArduinoNano_SK6812",

"type"       : "adalight",

"output"     : "/dev/ttyUSB0",

"rate"     : 500000,

"delayAfterConnect"     : 0,

"colorOrder" : "rgb"

},

 

On peut voir que c'est effectivement le cas. On voit également d'autres informations comme le nom de la config, la vitesse de transfert, l'ordre des couleurs et le délai après connexion.

 

Dans notre nouvelle configuration en liaison direct, nous n'avons besoins que de 4 informations :

  1. Le nom de la configuration
  2. Le type
  3. L'ordre des couleurs
  4. Le nombre de LEDs

Chaque mise à jour d’Hypérion se voit enrichit de nouveau type d'installation. Pour piloter nos bandes nous allons utiliser le type ws281x, qui permet de gérer des WS2811, WS2812 , WS2812B et des SK6812 en PWM.

 

Tout ce que nous avons à faire, c'est modifier quelques lignes dans la partie Device de notre configuration qui devient alors: 

 

// DEVICE CONFIGURATION 

"device" :

{

                "name"       : "Sk6812_384_Led_GPIO12",

                "type"       : "ws281x",

                "colorOrder" : "grb",

                "leds"       : 384

        },

 

Je n'ai pas spécifié de GPIO et pourtant mes LEDs fonctionnent. Par contre si ce n'est pas le cas chez vous, peut être il faudra rajouter ces quelques lignes de paramétrage dans Device :

 

        "gpio"  : 12,

        "dmanum"  : 5,

        "freq"  : 800000,

        "pwmchannel" : 0

 

Pour info : Il se peut que vous ayez des problèmes de corruption de carte mémoire, système en lecture seule ou des dysfonctionnements. Pour y remédier, changer la valeur "dmanum"  : 5, en "dmanum"  : 10, . Merci à Seb.lagaffe de Dealabs pour l'info suite à son problème et à sa résolution suite au navigation sur les différents forums traitant de ce sujet. 

 

 

Ce qui nous donnera comme configuration finale pour cette partie :

 

        // DEVICE CONFIGURATION

        "device" :

        {

                "name"       : "Sk6812_384_Led_GPIO12",

                "type"       : "ws281x",

                "colorOrder" : "grb",

                "leds"       : 384,

                "gpio"  : 12,

                "dmanum"  : 5,

                "freq"  : 800000,

                "pwmchannel" : 0

        },

 

Si vous utilisez le GPIO13, changer la valeur pwmchannel à 1. ( pas de changement pour GPIO18 )

 

 

Je vous met une copie écran de l’exécution de l'instance d'Hypérion gérant ma bande de LEDS :

Si vous souhaitez effectuer ces modifications en mode graphique avec  HyperCon, vous pouvez suivre le Tuto dont je faisais référence tout en haut et choisir WS281X ( pour RPI 1, 2 et 3 ) dans l'onglet Hardware, dans la partie Device comme ceci :

On voit bien les 4 valeurs à modifier dont je faisais référence. Ne reste plus qu'a tester notre nouvelle configuration.

 

Voila vous avez une installation dépourvu d'Arduino qui permettra à la fois de supprimer la latence mais également une simplification de modification ultérieure, en redéfinissant seulement la position des LEDs et en spécifiant leurs nombres.

 

 

Bon mod à tous !!!

 

 

Un grand merci à penfold42 pour son immense travail.

Commentaires : 2 (Discussion fermée)
  • #1

    ripp2003 (vendredi, 09 juin 2017 21:42)

    Merci pour ce tuto et pour ton site ;-)

    Ca m a bien servi et, tout fonctionne au poil,

  • #2

    YouS (vendredi, 09 juin 2017 22:44)

    Merci c'est sympa à toi.

    Content que tout fonctionne comme tu le souhaite.