J’ai acheté ce ruban de LED RGB à la création de ma chaine YouTube (pour ajouter une ambiance colorée dans le fond). Mais, j’ai rapidement déchanté après avoir ouvert la boite.

Le ruban de LED est fourni avec une télécommande infrarouge. Bien sûr, il peut aussi être piloté en WiFi depuis un smartphone (c’était clairement indiqué sur la boite) mais je pensais naïvement que l’acheteur avait la liberté de choisir de ne pas activer cette fonction.
Eh bien, non pas du tout !
Pour activer le ruban il faut OBLIGATOIREMENT :
- Disposer d’une connexion WiFi (car il faudra fournir le nom et le mot de passe de son réseau WiFi)
- Télécharger et installer l’application LSC Smart Connect sur son téléphone
- Et bien sûr créer un compte chez eux en fournissant un maximum de données (voir le détail ci-dessous)

Et bien sûr le fabricant saura aussi tout ce que je fais avec le ruban (fréquence d’utilisation, horaires, couleurs choisies…).
Sinon, le ruban est inutilisable, il se contente de clignoter bêtement. 🤬
Pourtant, le ruban est équipé d’un capteur IR, il serait très facile de le piloter en local avec la télécommande IR. Ma grand mère contrôlait déjà sa télévision avec ce type de télécommande dans les années 1980, alors pourquoi ce ne serait plus possible 40 ans plus tard simplement pour changer la couleur d’un ruban de LED ?
Evidement, le but est certainement de revendre ces coordonnées à des tiers. Vous vous êtes déjà demandé comment les entreprises qui nous démarchent continuellement connaissent nos noms et nos adresses ?
En plus, l’appli s’arrêta certainement un jour parce qu’elle n’est plus assez rentable.
Le gestionnaire de l’application peut à tout moment désactiver mon ruban, décider qu’il faut maintenant payer un abonnement premium avoir accès à certaines couleurs ou limiter l’utilisation « gratuite » du ruban à 1/2 par jour.
De plus, ils ne sont pas à l’abri d’un piratage qui livrerait les données des utilisateurs a des personnes moins « bienveillantes ».
Vous devez vous en douter, je n’ai pas téléchargé l’apli, je préfère bricoler quelque chose avec un Arduino. 😂
Comment hacker mon ruban ?
Si le ruban était constitué de LED adressables (Neopixel), il suffirait de réutiliser l’alimentation fournie (par exemple 12V) pour les bornes (+) et (-) et de relier le (-) et le 3ème fil (données) à l’Arduino. Il serait même possible d’alimenter l’Arduino en reliant le (+) à la borne Vin.
Attention : ne reliez jamais le + 12 V à la borne + 5V de l’Arduino, n’inversez pas le (+) et le (-), ne dépassez pas la tension maximum de l’Arduino (cela dépend des modèles), vérifiez votre branchement plutôt deux fois qu’une avant de mettre sous tension, etc…

Mais là, ce n’est pas le cas, ce ruban possède 5 couleurs (R-Rouge, G-Vert, B-Bleu, W-Blanc froid, Y-Blanc chaud) mais chaque LED ne peut pas être contrôlée individuellement.

Si par exemple vous reliez la piste +12V à la borne (+) de l’alimentation et la piste R à la borne (–), les LED du ruban s’allument en rouge.

En sachant cela, il devient très facile de composer une couleur personnalisée en ajoutant le vert et le bleu et en modifiant la proportion de chaque couleur (comme quand on fait de la peinture).
Bien sûr, il n’est pas possible de relier directement les entrées/sorties de l’Arduino au ruban. J’aurais certainement pu concevoir un circuit à base de transistors, mais je n’ai jamais pris le temps de le faire (cela fait des années que ce ruban de LED traine dans son carton).
Alors quand j’ai découvert dans la boutique MC Hobby la carte RGB Shield qui fait exactement cela je me suis dit que c’était l’occasion de finir ce projet.

Pour ouvrir le boitier, comme il n’y avait pas de vis et que je ne savais pas s’il était collé ou simplement clipsé, j’ai utilisé la méthode « grosse brute » qui consiste à enfoncer la lame d’un couteau d’électricien dans la tranche pour séparer les 2 parties du boitier.

Ensuite il suffit simplement de dessouder les fils. Le marquage sur la carte permet de repérer facilement les fils correspondant à chaque couleur. Même s’il y a un petit piège : le fil bleu correspond à la couleur verte et le fil vert à la couleur bleu.

J’ai testé le capteur infrarouge et il fonctionne en 5V (même si la portée semble un peu faible). je vais donc le récupérer pour contrôler les LED avec la télécommande.
Par chance, l’alimentation du ruban de LED est parfaitement compatible avec l’Arduino (tension de 12V, avec prise jack de 2.1mm avec la borne (+) à l’intérieur). Je vais donc pouvoir l’utiliser telle qu’elle pour alimenter l’ensemble.

J’ai branché le +12V à l’une de bornes (+) de la carte shield et les couleurs Rouge, Vert, Bleu aux bornes (–). Le Blanc Froid et le Blanc Chaud ne sont pas reliés parce que la carte shield est limitée à seulement 3 couleurs.

Puisque le le ruban ne réclame pas plus de 2A, je peux alimenter l’Arduino avec la prise Jack en laissant le cavalier dans sa position par défaut (2A). Sinon, j’aurais mis le cavalier sur 6A et j’aurais branché l’alimentation sur le bornier PWR de la carte shield (qui supporte jusqu’à 50V, mais bien sûr dans ce cas il faut une autre alimentation pour l’Arduino).
J’ai créé une fonction qui regroupe l’affichage d’une couleur sur une seule ligne (ce qui allège énormément le programme).
void couleur(byte r, byte g, byte b) { analogWrite(ROUGE, r); analogWrite(VERT, g); analogWrite(BLEU, b);}
En sachant que les LED rouges sont reliées à la sortie 3, les vertes à la sortie 5 et les bleues à la sortie 6, j’ai écris ce petit programme pour vérifier les branchements et le fonctionnement du ruban.
// RGB_Shield_test// Entrée/sorties des LEDconst int ROUGE = 3;const int VERT = 5;const int BLEU = 6;// Fonction couleurvoid couleur(byte r, byte g, byte b) { analogWrite(ROUGE, r); analogWrite(VERT, g); analogWrite(BLEU, b);}// S'exécute une seule foisvoid setup() { // Déclaration des sorties pinMode(ROUGE, OUTPUT); pinMode(VERT, OUTPUT); pinMode(BLEU, OUTPUT);}// Boucle infinievoid loop() { couleur(255, 0, 0); // Rouge delay(1000); couleur(0, 255, 0); // Vert delay(1000); couleur(0, 0, 255); // Bleu delay(1000);}
Le capteur infrarouge est alimenté par les bornes 5V et GND, j’ai relié le fil bleu (qui transmet les données à l’Arduino) à l’entrée analogique A0. Comme elle est utilisée en tant qu’entrée numérique, elle est nommée 14 dans le code.
Bien sûr il est possible d’utiliser une autre entrée inutilisée (en modifiant le programme) mais moi ça m’arrangeait d’utiliser celle là parce qu’elle est située à coté de l’alimentation.

Pour que l’Arduino reçoive les signaux infrarouges de la télécommande, il faut ajouter la bibliothèque IRremote. Pour cela, lancez l’IDE Arduino, cliquez sur l’icone qui représente des livres (dans la barre de gauche) ou sélectionnez dans les menus Croquis – Inclure une bibliothèque – Gérer les bibliothèques. Ensuite, recherchez « IRremote » et bien sûr cliquez sur Installer.

Il est possible d’utiliser le sketch ReceiveDump que vous trouverez dans Fichier – Exemples – IRremote – ReceiveDump mais je préfère cette version simplifiée.
// Telecommande_IR_testconst int IR_RECEIVE_PIN = 14;#include <IRremote.hpp>void setup() { pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);}void loop() { if (IrReceiver.decode()) { uint32_t signal = IrReceiver.decodedIRData.decodedRawData; if (signal != 0){ Serial.println(signal, HEX); } IrReceiver.resume(); }}
Téléversez le programme dans l’Arduino, ouvrez le moniteur série, pointez la télécommande vers le capteur infrarouge et appuyez sur différentes touches.

Les codes qui s’affichent permettent de savoir sur quelle touche vous avez appuyé. Cela montrent aussi que l’Arduino reçoit bien le signal de la télécommande. Appuyez sur les touches qui vous intéressent et notez les codes correspondants.
En appuyant sur les boutons Rouge, Vert et Bleu j’ai obtenu les codes E619FF00, E41BFF00 et EE11FF00. Il faut ensuite ajouter le préfixe 0x (qui indique qu’il s’agit d’un nombre hexadécimal), tester si le signal reçu par le capteur correspond à une de ces touches et si c’est le cas modifier la couleur des LED. Le récepteur capte parfois un signal égal à 0 (quand on laisse le doigt appuyé un peu trop longtemps sur le bouton), dans ce cas il faut demander à l’Arduino de ne rien faire.
Voilà un exemple de programme avec seulement 3 couleurs (plus le blanc si on appuie sur une autre touche).
// RGB_Shield_Telecommande_IR_3_couleurs// Bibliotheque IR#include <IRremote.hpp>// Entrée/sorties des LEDconst int ROUGE = 3;const int VERT = 5;const int BLEU = 6;// Entrée Capteur IRconst int IR_RECEIVE_PIN = 14;// Fonction couleurvoid couleur(byte r, byte g, byte b) { analogWrite(ROUGE, r); analogWrite(VERT, g); analogWrite(BLEU, b);}// S'exécute une seule foisvoid setup() { // Déclaration des sorties pinMode(ROUGE, OUTPUT); pinMode(VERT, OUTPUT); pinMode(BLEU, OUTPUT); // Reception IR IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Couleur de depart couleur(255, 255, 255);}// Boucle infinievoid loop() { // Si le capteur capte un signal if (IrReceiver.decode()) { //Si le signal est égal à switch (IrReceiver.decodedIRData.decodedRawData) { // E619FF00 (bouton Rouge) case 0xE619FF00: couleur(255, 0, 0); break; // E41BFF00 (bouton Vert) case 0xE41BFF00: couleur(0, 255, 0); break; // EE11FF00 (bouton Bleu) case 0xEE11FF00: couleur(0, 0, 255); break; // 0 (Ne rien faire) case 0: break; default: couleur(255, 255, 255); break; } IrReceiver.resume(); } //delay (20);}
Si tout fonctionne correctement, il ne reste plus qu’à ajouter les autres touches de la télécommande et à composer les couleurs correspondantes.
Lors de mes essais j’ai remarqué que certaines couleurs semblent faire « planter » l’Arduino notamment quand la couleur rouge prend une valeur différente de 0 ou de 255. Je ne connais pas la raison de ce bug mais c’est quand même assez curieux. Alors si vous avez une explication, je compte sur vous pour me la donner dans les commentaires.
En attendant, j’ai contourné le problème en modifiant les couleurs pour qu’elles fonctionnent. Voilà donc le programme complet (comme d’habitude, n’hésitez pas à vous en inspirer et bien sûr à l’améliorer) :
// RGB_Shield_Telecommande_IR// Bibliotheque IR#include <IRremote.hpp>// Entrée/sorties des LEDconst int ROUGE = 3;const int VERT = 5;const int BLEU = 6;// Entrée Capteur IRconst int IR_RECEIVE_PIN = 14;// Fonction couleurvoid couleur(byte r, byte g, byte b) { analogWrite(ROUGE, r); analogWrite(VERT, g); analogWrite(BLEU, b);}// S'exécute une seule foisvoid setup() { // Déclaration des sorties pinMode(ROUGE, OUTPUT); pinMode(VERT, OUTPUT); pinMode(BLEU, OUTPUT); // Reception IR IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Couleur de depart couleur(255, 255, 255);}// Boucle infinievoid loop() { // Si le capteur capte un signal if (IrReceiver.decode()) { //Si le signal est égal à switch (IrReceiver.decodedIRData.decodedRawData) { // E619FF00 (bouton Rouge) case 0xE619FF00: couleur(255, 0, 0); break; // E817FF00 (bouton Orange1) case 0xE817FF00: couleur(255, 20, 0); break; // BF40FF00 (bouton Orange2) case 0xBF40FF00: couleur(255, 60, 0); break; // F50AFF00 (bouton Or) case 0xF50AFF00: couleur(255, 100, 0); break; // E31CFF00 (bouton Jaune) case 0xE31CFF00: couleur(255,180,0); break; // E41BFF00 (bouton Vert1) case 0xE41BFF00: couleur(0, 255, 0); break; // ED12FF00 (bouton Vert2) case 0xED12FF00: couleur(0, 255, 20); break; // B34CFF00 (bouton Vert3) case 0xB34CFF00: couleur(0, 255, 60); break; // E11EFF00 (bouton Bleu3) case 0xE11EFF00: couleur(0, 255, 100); break; // EB14FF00 (bouton Bleu4) case 0xEB14FF00: couleur(0, 255, 255); break; // EE11FF00 (bouton Bleu1) case 0xEE11FF00: couleur(0, 0, 255); break; // E916FF00 (bouton Bleu2) case 0xE916FF00: couleur(60, 60, 255); break; // FB04FF00 (bouton Violet1) case 0xFB04FF00: couleur(255, 0, 255); break; // F10EFF00 (bouton Violet2) case 0xF10EFF00: couleur(255,40,255); break; // F00FFF00 (bouton Rose) case 0xF00FFF00: couleur(255, 20, 20); break; // F20DFF00 (bouton Extinction) case 0xF20DFF00: couleur(0, 0, 0); break; default: // 0 (ou autre signal IR) // Ne rien faire break; } IrReceiver.resume(); } delay (20);}
Conclusion
L’Arduino permet d’expérimenter, améliorer et même de reprendre le contrôle d’objets qui normalement devraient nous appartenir (cette histoire me fait penser à l’article du blog MiniMachines que j’ai lu il y a quelques jours).

Si vous voulez me rencontrer, je serai à la Maker Faire de Paris (au Musée des Arts et Métiers) les 11 et 12 avril 2026 alors n’hésitez pas à passer me voir 😉