Briques lumineuses DIY – Partie 2 – Hack

Bon, j’ai hésité avec ce titre … car vous verrez que au final, ça n’a plus rien avoir avec la première partie … Enfin si, le sujet reste le même mais le projet a complètement vrillé.

Donc, vous n’êtes pas obligé de relire la 1ère partie… vous ne serez pas trop perdus … quoi que pour comprendre comment j’en suis arrivé là, c’est peut-être utile 😉

Ce projet de briques lumineuses m’a pris énormément de temps de recherche et plus particulièrement dans un domaine (ce fichu boitier).

En effet, la partie électronique et la partie logicielle sont claires et relativement simples. Il n’y a pas de grosses inconnues dans la réalisation et à vue de nez économiquement réalisable…

Sauf que … le boitier … parlons-en…

Votre note :

Click to rate this post!
[Total: 4 Average: 5]

 

Les déboires du boitier

En ayant quasi tout réalisé (sauf le boitier), je me suis dis que ce projet était plutôt bon et que ce qui restait à faire prendrait quelques heures de recherche et qu’après, c’était l’éclate.

Je ne sais pas si vous avez déjà eu cette réflexion en mode « Ça va le faire ! » … Hé bien, c’est ce que je me suis dit à la fin de la partie 1 du projet.

Malheureusement, cela ne s’est pas déroulé comme prévu ( à la réflexion, c’est toujours comme ça).

Bon comme cette partie est longue à expliquer et pour ne pas faire trop de longueur, j’ai décidé de mettre en annexe toutes les étapes et recherches sur le boitier.

D’autant plus que cela n’a pas abouti au résultat souhaité. Alors voilà, l’étude, la recherche et la réalisation d’un boitier a été une catastrophe et j’étais prêt à abandonner mais ma curiosité ma rattrapée.

Un nouveau chemin vers un nouvel espoir …

Un peu triste de ne pas être arrivé à mes fins, j’ai décidé (d’essayer) de comprendre ce que les constructeurs de briques lumineuses faisaient sur leur produit. Bien évidemment, ils n’ont pas les mêmes moyens (et surement compétences) mais c’est toujours intéressant d’apprendre des autres.

Durant mes précédentes recherches de boîtiers, je suis tombé sur pleins de produits similaires mais entre prix exorbitant et arnaques, j’ai trouvé un produit qui me semblait être un très bon rapport qualité prix (issue de l’industrie chinoise bien évidemment).

Il se nomme Lifesmart colorlight et ressemble à ça :

lifesmart-colorlight lifesmart-colorlight-wall

Les briques sont assez petites (taille d’un post-it sauf l’épaisseur), peuvent se mettre sur un support (comme une lampe) ou fixées sur un mur.

Bon, je voulais des formes carrées (parce que c’est plus simple) mais les formes hexagonales permettent d’offrir plus de possibilités dans les formes.

Du coup, j’en ai commandé un (plus précisément un pack de 3 +1)

Achats

Vous pouvez trouvé cet appareil principalement (et au moins cher) sur Aliexpress :

https://fr.aliexpress.com/item/33025166627.html

colorlight-lifesmart

Alors il faut faire attention parce que c’est subtile. Vous pouvez achetez :

  • 1 brique seule (sans le contrôleur)
  • plusieurs briques (comprenant le contrôleur)

Prix : à partir de 9 € (sans contrôleur)

Pour les plus frileux (ou pressés), vous pouvez aussi trouver le produit sur Amazon

https://amzn.to/2G9mt9t

Prix : ~= 45 € le pack de 3  (comprenant le contrôleur et 15€ l’unité)

Déballage

lifesmart colorlight

La qualité du plastique est bluffante. C’est propre ! le seul bémol, mais que j’avais aussi avec mon système, c’est l’épaisseur. En effet, contrairement au nanoleaf (et équivalents), les LEDs sont disposées sur le fond du boitier, ce qui implique d’avoir une certaine hauteur pour la dissipation de la lumière et éviter l’effet halo.

lifesmart-colorlight-real

Je dois dire que je suis assez surpris (jaloux) de la qualité du boitier. C’est là qu’on se rend compte que je faisais fausse route, le rapport qualité prix (8-9€ par brique) est irréalisable pour moi.

Tout est beau, sauf que … au moment d’installer l’application mobile pour le piloter (c’est un peu le but aussi), paf … encore du cloud ! C’est énervant ! Bon bref, il existe un mode invité où vous n’avez pas besoin de vous inscrire, mais on vous dit que les fonctionnalités sont limitées.

Bref, c’est pas grave ! tant pis ! mais il me reste encore une chose à faire.

Démontage de l’objet

La brique lumineuse

C’est un peu déçu de la partie logicielle que je prend mon cutter pour décoller la partie écran de la brique lumineuse. Le plastique est de très bonne qualité et assez doux au touché. L’écran se décolle assez facilement et laisse apparaître le PCB avec ces LEDs

brique_lumineuse_lifesmart_demonte brique_lumineuse_lifesmart_PCB_connecteur

Bon ok, il y a donc 19 LEDs WS2812B contre 4 dans mon projet :). (J’ai quand même eu juste sur la technologie de LED 🙂 ). Mis à part ça, ils ont été un peu radins sur les condensateurs mais bon ça fait le job.

L’arrière est dédié aux connecteurs. « header1 » étant le connecteur d’entrée du signal et les 4 autres les connecteurs de sorties.

Sur cette brique lumineuse, on peut dire que l’électronique est très simple et que j’ai suivi à peu près la même stratégie donc pas de regret à avoir.

Sur le boitier par contre, pas de match, ils utilisaient la meilleure solution, une injection plastique et un usinage pour l’écran.

Alors vous allez me dire « OK, mais c’est quoi qui pilote tout ça ? »

Le contrôleur LED

Le contrôleur LED de l’appareil est très discret et son branchement et très ingénieux car il se fixe à l’arrière d’une brique (peu importe la brique d’ailleurs).

controleur_led_lifesmart

Comme pour la brique, le boitier est collé, mais avec un cutter, il s’ouvre assez facilement et voici ce qu’il laisse apparaître.

En marron : ce sont les connecteurs. A gauche, le connecteur de sortie et à droite le connecteur d’entrée pour la brique.

Voici les fonctions des broches :

  1. VCC 2. GND 3. DATA 4. GND 5. VCC

En bleu : un microphone. Il permet de faire varier (selon le scénario choisi) la lumière en fonction d’une musique. Pour les paranos, il pourrait vous enregistrer et transmettre sur le cloud chinois 😉

En rouge : C’est un régulateur de tension linéaire (très connu et répandu). Il s’agit du AMS1117-3.3. Il sert à alimenter le microcontrôleur avec une tension de 3.3VDC à partir de la tension délivrée par l’USB de 5VDC. Pour info, c’est celui que j’utilise pour le module WiFi de la ZiGate.

AMS1117-3.3 regulator

En vert : C’est le microcontrôleur ESP32 avec sa mémoire flash Winbond 32Mbit. C’est le cœur du système. Grâce à lui, on va pouvoir s’amuser et détourner le matériel !

Micro esp32

En rose : C’est l’antenne PCB avec son adaptation

controleur_led_antenna

En jaune : C’est un chip TS02NC permettant de gérer un capteur capacitif (au dos voir plus bas). En effet, il n’y a pas de bouton poussoir sur cette appareil, il suffit de survoler l’arrière du boitier pour agir sur le système. C’est classe mais personnellement, j’ai beaucoup de mal avec le capacitif car on a pas la sensation physique de savoir si l’action s’est bien effectuée ou pas. J’ai toujours le doute de savoir si j’ai bien appuyé ou pas, alors qu’un bouton mécanique … c’est plus naturel.

TS02nc capactitif

 

Alors vous l’aurez compris. Quand je vois l’électronique et en particulier le microcontrôleur ESP32, je me dis qu’il y a quelque chose à faire.

Pour ceux qui ne connaissent pas, l’ESP32 est un microcontrôleur super répandu et bien documenté (tout comme l’ESP8266). Il est assez puissant et embarque une interface WiFi/Bluetooth. Compatible Arduino, il permet à pleins de néophytes de pouvoir se lancer dans la programmation d’objets connectés. Mais aussi, grâce à son SDK, il permet aussi au plus aguerris de produire un logiciel embarqué très performant.

Préparation et validation du hack

Bon, à cette étape, je suis quasiment persuadé que je vais pouvoir détourner et prendre le contrôle de l’appareil. Tout porte à croire que c’est gagné.

Mais pour cela, il faut voir si je peux dialoguer avec l’appareil. Il faut alors que je trouve les pattes suivantes :

GND, TX, RX, GPIO0 (pour passer en mode flash/programmation)

En fait, il a suffit de retourner l’appareil, pour voir les pastilles correspondantes (avec la patte Reset en supplément ;))

J’ai donc soudé les fils et branché sur un convertisseur USB- Série TTL. Comme d’habitude, j’utilise un clef USB-TTL de chez silicon labs. le CP210x

Debug_lifesmart_colorlight

Bien entendu, vous commencez à avoir l’habitude, TX se branche sur RX du convertisseur et RX sur TX  et GND sur GND du convertisseur.

Une fois effectué, il faut installer Esptool sur votre ordinateur. L’objectif va être de faire un « dump » du micro. Cela validera que la communication est OK mais aussi de pouvoir réinjecter le programme d’origine. (Toujours utile après avoir fait « mumuse » ;))

Je vous recommande de suivre le tutoriel Esptool si vous ne l’avez pas encore installé.

Voici la commande que j’ai utilisé pour faire le dump :

./esptool.py -p COM7 -b 250000 read_flash 0 0x400000 lifesmart_colorlight.bin

PS : Bon vous l’aurez compris, utilisez le bon port COM correspondant à votre installation

Une fois lancée, esptool se met en mode connexion :

esptool_connexion

A ce moment là, il faut relié et maintenir le câble GPIO0 à GND et ensuite le câble Reset à GND. Vous pouvez ensuite relâché dans l’ordre Reset puis GPIO0 et normalement, la connexion s’établit.

esptool_dump_ok

Youpi ! 😉 le dump est effectué.

PS : voici la commande pour re écrire le programme d’origine :

esptool.py --port COM7 --baud 250000 write_flash 0x00000 lifesmart_colorlight.bin

Analyse rapide du binaire

Bon, en général, les binaires sont, en grande partie, illisibles car ils sont compilés de manière à être le plus proche du langage micro. Mais, malgré tout, on peut souvent récupérer quelques indices.

Dans ce cas particulier, je me suis aperçu qu’il y avait pas mal de texte en clair et plus particulièrement des mots clefs qui me parlent comme Lua et NodeMCU. En effet, ça remonte à loin mais j’avais travaillé sur cette environnement, il y a 2-3 ans sur le projet de « domotiser son compteur d’eau ».

On peut dire alors que lifesmart a utilisé un environnement à base de Lua sur NodeMCU afin de faciliter et diminuer leur temps de développement. A l’époque, j’avais trouvé cet environnement assez performant (par rapport à Arduino) mais moins stable. Peut-être qu’ils ont fait des progrès depuis et du coup… ça titille ma curiosité.

Je vais surement m’y remettre très prochainement pour voir les progrès réalisés …

Bon en tout cas, le binaire a été finalement surprenant. Passons à la validation du hack.

Validation du hack

Pour faire simple, je ne vais pas développé toutes les fonctionnalités que j’ai en tête. Je vais simplement développer rapidement le moyen d’allumer 4 briques de 4 couleurs différentes. C’est pas très long à faire et cela permet de vous montrer que le hack est OK.

Pour réaliser cela, il suffit juste d’envoyer sur les LEDs une couleur différente toutes les 19 Leds (nombre de LEDs dans une brique).

Ah oui, j’oubliais, en faisant du reverse, j’ai bippé toutes les pattes et j’ai vu que les LEDs étaient pilotées par le GPIO16 de l’ESP32.

Voici le code sur environnement Arduino :

[pastacode lang= »c » manual= »%23include%20%3CFastLED.h%3E%0A%0A%2F%2FNombre%20de%20LEDS%20au%20total%2019%20*%204%0A%23define%20NUM_LEDS%2076%0A%0A%23define%20DATA_PIN%2016%20%2F%2F%20GPIO%20utilis%C3%A9%20par%20l’ESP32%0A%0ACRGB%20leds%5BNUM_LEDS%5D%3B%0A%0Avoid%20setup()%20%7B%20%0A%0A%20%20FastLED.addLeds%3CNEOPIXEL%2C%20DATA_PIN%3E(leds%2C%20NUM_LEDS)%3B%0A%20%20int%20i%3B%0A%20%20for%20(i%3D0%3Bi%3C19%3Bi%2B%2B)%0A%20%20%7B%0A%20%20%20%20leds%5Bi%5D%20%3D%20CRGB%3A%3ARed%3B%0A%20%20%20%20FastLED.show()%3B%0A%20%20%7D%0A%20%20for%20(i%3D0%3Bi%3C19%3Bi%2B%2B)%0A%20%20%7B%0A%20%20%20%20leds%5B19%2Bi%5D%20%3D%20CRGB%3A%3AGreen%3B%0A%20%20%20%20FastLED.show()%3B%0A%20%20%7D%0A%20%20for%20(i%3D0%3Bi%3C19%3Bi%2B%2B)%0A%20%20%7B%0A%20%20%20%20leds%5B38%2Bi%5D%20%3D%20CRGB%3A%3ABlue%3B%0A%20%20%20%20FastLED.show()%3B%0A%20%20%7D%0A%20%20for%20(i%3D0%3Bi%3C19%3Bi%2B%2B)%0A%20%20%7B%0A%20%20%20%20leds%5B57%2Bi%5D%20%3D%20CRGB%3A%3AYellow%3B%0A%20%20%20%20FastLED.show()%3B%0A%20%20%7D%0A%20%20delay(500)%3B%0A%0A%7D%0A%0Avoid%20loop()%20%7B%20%0A%20%20%0A%7D » message= » » highlight= » » provider= »manual »/]

Et voici le résultat après flash :

hack_lifesmart_ok hack_lifesmart_ok_back

Conclusion

Bon … le moral repart au beau fixe après cette découverte. Il devient envisageable d’avoir un produit open source permettant de piloter une matrice de briques lumineuses. En effet, le matériel est très qualitatif et pas très cher. 9€ (à l’unité) la brique lumineuse, c’est vraiment un bon prix sachant que le prix tombe à 7€ pour une quantité de 10.

Dans le hack ci-dessus, on peut s’apercevoir que l’on peut détourner le matériel existant pour y mettre son propre code.

Mon objectif est, avant tout, de choisir une bonne plateforme de développement (peut-être lua ou carrément avec le SDK en natif) pour gérer pleins de fonctionnalités. Bien entendu, je mettrai en place un Github pour la communauté et le partage.

Le but va être de rendre communiquant les briques mais aussi d’ouvrir aussi une API web pour que les box domotiques puissent être compatibles et piloter les briques.

Dans un second temps, si le projet plait, je développerai peut-être un autre hardware pour que les briques soient pilotables en Zigbee à travers une ZiGate mais aussi un pont Philips Hue par exemple.

Bref, dites moi ce que vous en pensez en commentaire.

A bientôt !

 


Annexe :

Les différentes méthodes

Pour réaliser le boitier, j’ai commencé par lister et chercher toutes les méthodes de production:

  • Impression 3D
  • Découpe laser ou usinage ou pliage
  • Moule + résine
  • Injection plastique
  • Thermoformage

Bref, il y a de quoi faire… mais surtout à tous les prix.

Sans prendre en compte la partie économique (pour que le projet avance aussi), j’ai réalisé des maquettes en impression 3D pour valider le concept. Comme on peut le voir sur les différentes photos, j’ai réalisé plusieurs boites très simples en gardant en tête la faisabilité. J’ai réfléchi aussi à mixer les technologies de production. (Par exemple, impression 3D et usinage).

Impression_3D_test Impression_3D_test_2 Impression_3D_test_3 Usinage_plastique Usinage_plastique_2 Usinage_plastique_3

Une fois les prototypes réalisés et après validation du concept. (En gros, le rendu est bon et la brique lumineuse est fonctionnelle), j’ai commencé à chercher le rapport faisabilité / prix des différentes technologies.

Et là, c’est le drame… En fait, il n’existe pas de méthodes parfaites (j’aurai dû m’en apercevoir bien avant mais on est souvent aveuglé par le projet et inconsciemment, on met de côté les éléments négatifs). Je devrai même dire, il n’existe que des contraintes.

Rappelons l’objectif :

  • Il faut pouvoir sortir une brique lumineuse avec un coût de 5€ max pour que le projet soit viable. Ce qui revient à un budget de 3€ environ pour le boitier…
  • Il faut être en capacité de produire le boitier en quantité (une centaine pour commencer) et que le résultat soit propre.

Bon pour tout vous dire, j’avais misé sur la technique des moules silicones avec dans l’idée d’utiliser de la résine blanche ou du plastique liquide.

La réalisation du moule silicone s’est plutôt bien passé et ça marche très bien.

moule_silicone_realisationmoule_silicone_realisation_2

moule_silicone_realisation_3moule_silicone_realisation_4

par contre, que ce soit le plastique liquide ou la résine, je me suis complètement planté. Le plastique liquide n’est pas du tout adapté et la matière reste molle même avec des indices de dureté élevée.

La résine, c’est un peu mieux mais les temps de séchages sont trop long (autant faire de l’impression 3D) pour faire de la série et le résultat pas si « clean » que ça ( surement dû à mes compétences limitées dans le domaine)

Pour l’injection plastique qui reste (j’en suis persuadé) la meilleure solution pour réaliser des boîtiers plastiques en série, j’ai aussi abandonné car :

  • J’ai regardé pour faire (moi-même) une machine à injection … mais super complexe à réaliser pour faire des boîtiers… à la limite, pour faire de toutes petites pièces mécaniques, c’est faisable, mais pas des boîtiers avec parois assez fines.
  • J’ai regardé pour faire appel à une société spécialisée (même en Chine) mais pour des quantités faibles (en dessous du millier), ce n’est pas viable économiquement.

Un boitier tout fait ?

Bon, il faut dire qu’à part l’impression 3D et l’usinage, rien n’a vraiment fonctionné techniquement et il faut bien avoué que le résultat n’est pas très pro et le temps de production insatisfaisant.

Alors quand c’est comme ça, et bien, il faut prendre assez de recul pour ne pas s’embourber. Alors quitte à refaire l’électronique, n’existe t-il pas un boitier tout fait et pas cher qui ferait l’affaire ? (même s’il faudra sans doute faire un peu d’usinage pour les connecteurs).

Je me suis donc mis à sillonner le net pour trouver la poule aux œufs d’or. Voici les contraintes que je me suis fixé :

  • un boitier carré (dimension en dessous de 10cm x10cm)
  • un boitier avec une hauteur suffisante (2.7 cm) pour que le halo lumineux global soit correct
  • un boitier blanc et non opaque
  • un boitier avec la surface du dessus peu encombrée pour ne pas faire d’ombres à l’écran

Rien qu’en listant les contraintes, je me dis que j’aurai même pas dû commencer à chercher … 🙂

Bref, j’ai passé des heures et des heures à parcourir pleins de sites, à commander pour avoir des échantillons pour un résultat négatif…

Il faut se rendre à l’évidence, le projet n’est pas viable à cause de ce maudit boitier !

Alors je me suis dit :  » S’il n’y a que le boitier, c’est pas grave, faisons l’électronique et partageons le modèle 3D du boitier, les gens se feront eux-même l’impression du boitier… »

Oui mais non, on a parfois tellement envie de réussir quelque chose qu’on arrive par faire des concessions stupides. Si le projet n’est pas viable, c’est qu’on s’est trompé de chemin. Alors, j’ai décidé d’abandonné cette voie. :'(

 

 

25 comments

    1. +1 pour WLED: https://github.com/Aircoookie/WLED
      c’est vraiment un projet simple qui a le vent en poupe et qui fait très bien son job
      – permet de synchroniser plusieurs ESP en wifi avec les mêmes animations.
      – déjà compatible Alexa, Phillips hue et plein d’autre normes de domotique.
      – compatible avec plusieurs type de led RGB, RGBW, ….
      – inclus des limites d’ampérage (pour ne pas fusiller vos alims avec 200 leds pleines puissance)
      – IHM type page WEB simple, adapté et incluant la conf.

  1. Pilotable en zigbee ??? Mon rêve 😉 Je cherche depuis longtemps des voyants RGB zigbee pour mettre en évidence des états de mon système domotique !

    Merci pour ce partage !!!

  2. Hello, Très intéressant comme articles, comme d’habitude. 🙂
    Dommage que ton projet 100% diy soit tombé à l’eau.
    Mais du coup l’idée de pouvoir changer le firmware sur un produit déjà existant est pas mal aussi.
    J’ai trouvé quelques vidéos sur cet objet :
    https://www.youtube.com/watch?v=9qHIe9gcjb8

    Je ne parle pas allemand mais il y a un github:
    https://github.com/klein0r/pcb-cololight-custom et https://github.com/klein0r/pcb-ws2812-wifi-controller

    Et aussi : https://haus-automatisierung.com/projekt/2019/04/05/projekt-cololight-fhem.html
    Pour Home-Assistant : https://github.com/NoedelVreter/homeassistant_cololight

    Si ça peut aider.

  3. Je trouve le projet Génial.
    Pour ma part je trouverais super que tu propose un bundle de Boitiers (issus d’aliexpress) sans controler et ton controller issu du hack d’un controller d’Ali.
    un Pack 9+1controller serait génial et si en plus tu Zigbeese ou APIse ton controller on est au top du top.
    J’achete direct le pack de 9+1

    ./rémy

  4. Je suis à 2 doigts d’en acheter un pack !
    C’est top ce que tu fais !
    Et ces ESP, on peut tout faire avec ! J’en ai je ne sais pas combien qui tournent en permanence dans ma maison.
    Une API wifi serait parfaite … Je vais suivre ton sujet avec impatience et assiduité.
    Merci encore pour tes partages.

    Nico33

  5. Bonjour,

    Très bien ce hack.
    Les dalles semblent tenir la route.

    Par contre, au lieu de reprogrammer leur contrôleur il n’était pas plus simple de prendre un ESP32 ou ESP 8266 pour les essais ?
    Quit à reprogrammer le contrôleur par la suit mais aussi au cas où garder une partie DIY sous la forme d’un contrôleur personnel 😉

    Je vais suivre en tous cas. Perso sur d’autres projets.

  6. Tout pareil que @loull, pour les voyants RGB zigbee ! Faut nous le faire cet hardware ! 🙂 Article très intéressant en tout cas, ça donne envie de les commander et de les hacker soi-même ! Merci pour le partage.

  7. Bonjour,
    Je suis ton projet avec grand intérêt , concernant le boitier, je travaille depuis une dizaine d’année avec des « moulistes » chinois. Je peux si cela t’intéresse t’aider sur la partie design (réduire l’épaisseur du boitier, j’ai de bonnes pistes la dessus…) /prototypage/outillage.
    Je peux à priori te garantir que ton boitier ne couterait pas plus d’ 1,5€ à produire en injection ( petite quantité ) , et un outillage « prototype » rendrait sans doute ton projet viable avec les couts énoncés.
    n’hésites pas à me contacter par mail 🙂

    1. Salut,
      Oui ça m’intéresse et pas que pour ce projet… Le domaine des boitiers est importante pour moi mais m’est inconnu. Je reviens vers toi par mail.

      Merci

  8. juste une dernière remarque, vous dites que ces modules sont moins cher que les nanoleafs, mais en étés vous sur ?
    Comparer des triangles de 25cm vs des hexagone de 8cm (soit a vue de nez 6 fois plus petit en superficie) n’est pas vraiment équitable…..

    Par contre le fait que cela soit des leds WS2812B en direct ça, c’est sacrement cool !!!!!

  9. I was able to flash WLED to these modules. Now there is active development on and audio based effects in the WLED project, did you figure out which pin on the esp32 the microphone is connected?

  10. Très intéressé par ce projet, et encore plus par le coté Zigbee (ce serait le top avec la Conbee II sur Jeedom).
    Ou en est le projet. Un lien pour suivre le projet pas-à-pas?

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.