Hans Henrik Skovgaard

Ce qui me motive le plus, c’est de trouver moi-même des solutions et de relever des défis inattendus. Mon fils m'a passé une carte NeoPixel Jewel 7 d'Adafruit rescapée d'un projet sur lequel il avait travaillé à l'université. Ce petit circuit imprimé rond à CMS (fig. 1) comporte sept LED RBG NeoPixel programmables. À quoi diable pourrais-je bien l'utiliser ?

Figure 1. NeoPixel Jewel 7, connectée à une carte Arduino.

NeoPixel + Arduino

WorldSemi Co fournit depuis un certain temps déjà des LED RGB avec commande intégrée, dotées d'une interface à trois fils, qui permet de les enfiler facilement pour des applications plus ambitieuses. Chaque LED RVB peut être adressée individuellement par un seul signal de données en série. Avec les mots-clés "NeoPixel" ou "WS2812B" vos recherches sur eBay seront fructueuses. Comme j'avais déjà travaillé sur une série de projets Arduino, je savais qu'il serait facile de commander ces LED à l'aide de la bibliothèque appropriée d'Adafruit. Mes premières impressions avec ces LED ont laissé sur ma rétine des traces hélas durables. À pleine puissance, leur luminosité est si violente qu’il faut éviter de les regarder directement !

Les cartes Arduino sont une bonne solution pour réaliser une commande à usage général et même pour des installations expérimentales, sauf s’il vous faut l’internet. Dans ce cas, il faut une autre solution. Comme je travaillais déjà par ailleurs avec un ESP8266 d'Espressif sous la forme du "D1 mini Pro" de WeMos, j’ai pensé que cette carte, associée à la carte LED NeoPixel, ferait un bon tandem. Il reste à bien intégrer ce projet dans un environnement domestique, plus précisément dans un boîtier approprié.

Modification de la lampe

Je propose de modifier une lampe standard IKEA Grönö qui ne coûte que 6 € (fig. 2), ce qui en fait le cobaye idéal pour expérimenter : si ça ne marche pas, la perte est limitée.

Figure 2. La lampe bon marché IKEA Grönö.

On voit l'intérieur de la lampe sur la fig. 3 : un culot E14 et un cordon d'alimentation avec un interrupteur.

Figure 3. La lampe IKEA avant l'intervention.

Pour connecter l'ESP8266 à la carte NeoPixel, trois fils suffiront. La base du support de la lampe peut être modifiée et le cordon d'alimentation mis au rebut. La carte est alors fixée sur la base du support de lampe découpé avec de la colle. Enfin, le cordon d'alimentation est remplacé par trois fils courts (fig. 4).

Figure 4. La carte LED fixée au sommet du support de lampe modifié.

Même Ikea pourrait difficilement faire plus simple que le circuit de commande de la lampe (fig. 5). En plus de la carte Neopixel et du ESP8266, il faut pour cette lampe une alimentation secteur de 5 V, 500 mA avec fiche micro USB. Le reste, c’est du logiciel. La carte Neopixel est équipée de sept LED RGB, avec chacune son propre µC intégré au format SMD 5050. Vous pouvez acheter ces LED à la pièce sous la référence WS2812B pour réaliser d’autres arrangements plus complexes, en chaîne ou en matrice. Chaque LED RGB demande jusqu'à 60 mA à pleine puissance, et délivrer en échange un flux lumineux maximum de 20 lm. Vous pouvez les brancher en série et les adresser individuellement en injectant à une extrémité de la chaîne les données de luminosité RVB en série. Cela facilite la commande.

Figure 5. Le circuit de modification est très simple : carte à microcontrôleur + carte LED.

Logiciels

Une caractéristique importante de la carte mini Pro WeMos D1 est le support dans l'IDE Arduino. Ce dernier a ses avantages et ses inconvénients, mais il a le mérite de la rapidité de la mise en place aisée d’un projet et sans trop d'efforts. Avant de commencer à utiliser le logiciel pour s’attaquer à ce bidouillage IKEA, il y a les préliminaires suivants :

 

Le logiciel paraît bien complexe pour la simple de la tâche de commande des LED, mais la raison de cette complexité est qu'un ESP8266 a un support Wi-Fi intégré. Si nous voulons l'utiliser, nous aurons besoin d'un code. Le logiciel offre les possibilités suivantes :

  • création d'effets de lumière spéciaux
  • connexion à l’internet par Wi-Fi
  • serveur web pour la configuration des lampes

La lampe peut également être utilisée hors ligne ou en mode autonome. Dans ce cas, elle parcourt les couleurs de l'arc-en-ciel à un rythme prédéfini (p. ex. 20 ms pour chacun des niveaux de couleur 8x8x8). Si vous souhaitez configurer la lampe en fonctionnement, vous devez activer la liaison Wi-Fi pour communiquer avec la lampe Neopixel via votre réseau local. Les paramètres nécessaires pour le Wi-Fi peuvent être codés en dur dans le code source. Cela signifie que toute modification des paramètres du réseau nécessite une recompilation du micrologiciel WeMos. Sinon, ils peuvent être définis au démarrage de la lampe. Une fois la lampe connectée au réseau Wi-Fi, les opérations suivantes sont possibles :

  • allumer et étendre la lampe
  • commander la luminosité
  • modifier le délai entre les cycles de couleur
  • sélectionner les cycles de couleurs (arc-en-ciel, cycles arc-en-ciel, statique, scintillement de la bougie et décoloration).
  • choisir une couleur fixe.

Ces opérations peuvent être effectuées via une interface web très simple (fig. 6). Le code HTML de la page web est obtenu à l'aide de la fonction getPage(string str).

Figure 6. Interface de configuration simple du serveur web.

Tout cela est géré dans le logiciel et, de ce fait, il n'est pas si facile d'y apporter des modifications. Cependant, il fonctionne suffisamment bien pour nos besoins. L'interface de configuration web met à jour la lampe NeoPixel via une requête HTTP POST. La procédure de base est décrite dans mon livre. Le logiciel est structuré à peu près de la même manière que pour d'autres de mes projets similaires. La fig. 7 montre l'ordinogramme du logiciel pendant la configuration et la fig. 8 montre la même chose pour le fonctionnement ou la sélection du mode.

Figure 7. Schéma du processus de configuration.
Figure 8. Ordinogramme du choix du mode de fonctionnement.

J'ai rapidement découvert que la fonction de fondu (augmentation et diminution de la luminosité) nécessite un peu plus de considération. Si vous commandez la gradation de la lampe au moyen de valeurs qui correspondent à une fonction de rampe linéaire, le changement de luminosité n'est pas satisfaisant. Comme le montre la fig. 9, il est préférable d'utiliser une fonction sinusoïdale pour produire un changement de luminosité plus doux. Cette courbe de luminosité a été simulée dans Excel et les valeurs ont été implémentées sous la forme d'un tableau (array) byte fadeInterpolation[]. Ces valeurs peuvent bien sûr être modifiées.

Figure 9. Courbe de luminosité optimisée pour la gradation.

L'article sur les gradateurs à LED dans Elektor de septembre 2018 décrit cet effet. La relation entre le changement réel d'un stimulus physique et le changement perçu est une propriété psychophysique régie par la loi de Weber-Fechner.

Utilisation de la lampe

Dès que la carte WeMos programmée est mise sous tension, le logiciel démarre et entre dans son cycle de mise en marche.

Connexion Wi-Fi (bleu)

Dans cette phase, une connexion avec le réseau Wi-Fi est tentée en utilisant les paramètres de réseau programmés dans le logiciel. Les LED clignotent en bleu l'une après l'autre.

Attendre (rouge)

Après avoir essayé de se connecter (avec ou sans succès) par le Wi-Fi, la carte recherchera l'interaction de l'utilisateur via le port USB. Pendant cette période, les LED clignotent en rouge l’une après l’autre. Lorsqu'une interaction est détectée, toutes les LED s'éteignent. Si après 10 s aucune interaction n'est détectée, la lampe commence à fonctionner selon son schéma d'éclairage préconfiguré. Après l'allumage et avec une connexion Wi-Fi active, il est possible de commander l'effet d'éclairage ou le mode de fonctionnement de la lampe Neopixel.

Une interface web différente

Mon fils, titulaire d'une maîtrise en design interactif, n'a pas été impressionné du tout par mon interface web. Il a donc retroussé ses manches (fig. 10), et pondu sa propre version combinant HTML, CSS et Javascript.

Figure 10. Une interface web plus fluide.

C'est là que le système de fichiers flash SPI entre en jeu. Le µC ESP8266 fournit au moins 14 Mo de mémoire flash utilisables via le système de fichiers SPIFFS. Dans mon livre, vous trouverez des informations à ce sujet :

  • téléchargement de fichiers vers SPIFFS
  • stockage de fichiers dans un PC pour téléchargement
  • installation des logiciels nécessaires à l'EDI Arduino

Si vous l'avez installé correctement, votre répertoire de logiciels Arduino devrait ressembler à la fig. 11.

Figure 11. Le répertoire des logiciels Arduino.

La figure 12 montre les fichiers pour l'interface contenus dans le dossier data. La dernière version du logiciel peut être téléchargée gratuitement sur le site d'Elektor. Vous remarquerez que le fichier NEOPixel_new_20191222_load.js n'est pas répertorié dans le dossier data. Ces fonctions sont codées directement dans le logiciel ESP8266. Cela permet au µC ESP8266 de configurer l'interface lors de la mise sous tension en utilisant les paramètres stockés dans l'EEPROM.

Figure 12. Le répertoire des données.

L'interface web a été conçue pour l’orientation portrait des écrans de téléphones tactiles. Comme la lampe NeoPixel peut être configurée par des requêtes HTTP POST, il est également possible de commander la lampe avec la domotique OpenHAB, mais c'est une autre histoire.

Travailler avec la carte NeoPixel Jewel m'a amené à explorer de nombreux domaines différents que je ne connaissais pas avant le début du projet. Le résultat est satisfaisant ; ce luminaire IKEA, avec sa carte NeoPixel, illumine mon salon depuis maintenant plus d'un an. (200165 VF)


Elektor est réputé pour la qualité de son contenu. En voulez-vous davantage ?

► Abonnez-vous maintenant au magazine Elektor et ne manquez plus jamais ni aucun de ces articles précieux ni aucun de ces projets géniaux.