DIY chez Enix, conception et fabrication d'un Gyrophare

28 Mai 2019 • 4 min

Nous avons dans nos bureaux un gyrophare nous permettant d’être notifié d’un nouveau ticket de support client. Cela nous permet d’être très réactif dans la gestion de la communication avec nos clients et de certaines de leurs demandes urgentes. Nous aimerions utiliser également ce gyrophare pour nous notifier des alertes de supervision de différent types. Notre gyrophare actuel est un modèle des plus classiques, doté d’un moteur et d’une ampoule le tout piloté par un relai actionnable en WIFI.

Le but du projet sera de concevoir et fabriquer un gyrophare RGB permettant de matérialiser plusieurs type d’alertes au travers différentes animations (rotation, clignotement, etc).

Conception

Notre liste de courses :

  • Bande de led RGB type APA102 avec 60 leds par mètre
  • Microcontrôleur ESP8266 modèle “Wemos d1 mini”
  • Régulateur de tension 5v
  • Boitier imprimé en 3d

Bill Of Materials

Petite précision : les LEDs APA102 sont adressables, c’est à dire que la couleur de chacune peut être pilotée individuellement. En pratique, 3 LED (rouge, verte, bleue) et un contrôleur sont intégrés dans un boitier qui possède une alimentation électrique (+5v et masse), une entrée et une sortie de données permettant de “daisy chainer” les LEDs entre elles.

Un contrôleur est raccodé à l’une des extrémités de la bande et émet une trame contenant la valeur de chaque couleur de chaque LED à la suite. Quand une LED reçoit une trame, elle consomme la première valeur et transmet le reste à la LED suivante.

Le microcontrôleur utilisé pour piloter la bande de LED est un ESP8266. Ces microcontrôleurs, très connus dans le monde du DIY, ont l’avantage d’embarquer une interface WiFi et de bénéficier d’un écosystème logiciel très riche. Nous allons pour ce projet utiliser le firmware MicroPython permettant d’exécuter des scripts en Python directement sur le microcontrôleur.

Nous utiliserons enfin un régulateur à découpage 5v (tension d’alimentation des LED) permettant d’alimenter le gyrophare avec une tension différente.

Fabrication du boitier en impression 3D

Le boitier est imprimé en 3d en 4 parties :

  • Une base permettant de compartimenter le faisceau de chaque led
  • Un diffuseur imprimé en plastique translucide
  • Un support cylindrique sur lequel sera collé la bande de led qui sera lui même collé sur la base
  • Un couvercle pour refermer le tout

Vue explosée du boitier

Ce boitier a été conçu avec Freecad, vous pouvez télécharger le modèle ici. À noter que le boitier est totalement paramétrable via le tableau Config :

Capture d’écran du tableau de configuration

  • Pitch est l’espacement entre les pixels, il correspond au type de bande utilisé (dans mon cas, 60 leds par mètre soit 1000 / 60 ≃ 16.67mm)
  • Pixels est le nombre de LEDs.
  • Height est la hauteur du gyrophare (entre la base et le couvercle)
  • Depth est le dégagement entre les LEDs et le diffuseur.
  • Le diamètre du gyrophare est automatiquement calculé en fonction du pitch, du nombre de pixels et de la profondeur de dégagement

L’impression des 4 pièces a pris environ 5 heures sur mon imprimante Velleman K8400 pour un gyrophare de 16 LEDs.

Câblage et montage

Schéma électronique

Le câblage est plutôt simple. On connecte l’alimentation électrique (+24v max) à l’entrée du régulateur de tension. La sortie (5v) est quant à elle connectée à l’alimentation de la bande de LED ainsi qu’à l’entrée d’alimentation 5v de la carte Wemos D1 mini (elle même équipée d’un régulateur 3.3v car l’ESP8266 fonctionne avec cette tension).

Les sorties GPIO D3 et D4 du microcontrôleur sont respectivement connectées au signal d’horloge et de données de la bande de LED.

Partie logicielle

L’idée est de connecter le gyrophare en WiFi à un broker MQTT. Ce type de broker est particulièrement utilisé dans la communauté IOT et permet de diffuser des messages en mode Publish-subscribe. Les animations sont ainsi encodée au format JSON (voir les exemples) et envoyées au gyrophare via un channel MQTT particulier.

Le firmware MicroPython dispose en standard des bibliothèques pour se connecter au broker MQTT ainsi que celles pour piloter les LEDs APA102. Le script que nous avons développé est disponible sur ce projet github.

Conclusion

Il ne restera plus qu’à connecter notre supervision au broker MQTT pour générer des alertes. Voici le résultat terminé affichant une superbe animation réalisée par notre stagiaire Arthur Chaloin :


Ne ratez pas nos prochains articles DevOps et Cloud Native! Suivez Enix sur Twitter!