Des nouvelles du Fablab

0

Loin de moi l’idée de véhiculer des clichés, mais on le sait tous par expérience, un développeur sans café c’est un développeur au ralenti ! Ainsi, chez Zenika Nantes nous avons décidé d’automatiser la commande des sacs de grains de ce délicieux breuvage auprès de notre fournisseur, les cafés BREIZHILIENS.

En effet avant ça, notre cher directeur d’agence devait envoyer un message quand la réserve commençait à manquer, ce qui vous en convenez, n’est pas pratique et la définition-même du SPOF (Single Point Of Failure). Comment alors y remédier ?

Behold, the mighty “Coffee-button” !

bouton imprimé en 3d pour commander du café

L’idée est simple, pourquoi ne pas avoir un simple bouton sur lequel appuyer quand le café vient à manquer ? Cela déclencherait l’envoi d’un mail standard de commande et nous permettrait d’être livrés rapidement.

Le challenge que nous avons relevé avec Lucas Dupuy était donc le suivant : créer simplement, avec les éléments dont nous disposions dans le Fablab de l’agence, un équivalent du regretté “dash button” d’Amazon mais programmable selon nos besoins !

Matériel et fabrication

Après une rapide recherche dans les nombreux cartons qui composent le stock d’éléments électroniques du lab, nous prenons la décision de partir sur une architecture connue et bien documentée, un Raspberry 3B +, ce qui nous permettra de nous abstraire de la partie de connexion au Wifi de l’agence. Le bouton doit, en effet, se trouver à proximité de la machine à café et aucun câble RJ45 n’arrive à cet endroit. Un des points qui nous importent c’est de réduire au maximum la consommation électrique du Raspberry et donc que celui-ci ne doit pas rester allumé en permanence pour une simple pression une fois par semaine. Nous avons donc rapidement décidé que le workflow serait le suivant :

  • le Raspberry est branché, mais éteint (deep sleep)
  • une pression sur le bouton l’allume et lance un script au démarrage
  • celui-ci effectue les vérifications nécessaires (présence des fichiers de configuration, des logs, délai entre deux envois, etc.) 
  • il effectue une requête Curl en POST vers un webhook qui se charge du traitement de la demande et inscrit dans le fichier de logs les actions effectuées et leur réussite ou erreur
  • enfin, il éteint le Raspberry par un simple “sudo power off

Afin de rendre cela plus vivant pour les utilisateurs et après quelques recherches fructueuses sur les capacités des ports GPIO du Raspberry, nous avons décidé d’y ajouter deux LEDs pour signaler l’envoi de la requête et le résultat de celle-ci.

Nous voilà donc avec un schéma simple mais efficace pour notre bouton :

schéma des branchements des LEDs et boutons sur le Raspberry

Le bouton poussoir est branché sur les connecteurs permettant l’allumage et les LEDs, rouge et verte, sur des broches PWM et ground. Celles-ci sont pilotées par des scripts Python indépendants du script d’initialisation pour pouvoir les réutiliser facilement. Et voilà le prototype fonctionnel du matériel :

Premier prototype du bouton sur une breadboard
Prototype sur une breadboard

Impression des éléments

Cela est bien beau, mais il faut maintenant trouver le moyen d’en faire un bouton attrayant et dont la fonction est aisément compréhensible. Après quelques recherches sur Thingiverse, nous trouvons un modèle de boitier pour la carte électronique et un joli bouton rouge dont la taille colle parfaitement avec nos besoins. Ne reste plus qu’à les envoyer vers notre imprimante 3D pour impression.

Les différents éléments en cours de fabrication et assemblés :

Il nous reste à souder les LEDs et résistances, fixer le bouton poussoir sur une plaque sous le bouton rouge et coller ensemble les différents éléments. Ne pas oublier de protéger les fils et autres soudures avec un peu de colle pour éviter les faux contacts.

Et le voila dans son milieu naturel :

Automatisation

Coté webhook, nous avons fait le choix de Zapier que nous utilisons pour d’autres automatisations, vous pouvez aussi vous tourner vers n8n ou tout autre outil d’automatisation, selon vos besoins ou vos habitudes. Celui-ci déclenche l’envoi d’une notification Slack annonçant l’envoi futur du mail, afin de pouvoir l’annuler au besoin. Pour se prémunir contre l’envoi de multiples mails lors d’une pénurie de grains de café par exemple, la requête vers le webhook est mise en cache sur le bouton pour une durée définie par une variable d’environnement.

Le script quant à lui est en bash, avec des appels de scripts en Python pour la gestion des LEDs. Vous pouvez les trouver ici pour plus de détails, ainsi que les étapes de fabrication et les pistes d’évolution.

Le futur

Ceci est la première version du Coffee button, conçue et réalisée en quelques jours par Lucas et moi-même, uniquement avec ce que nous avons trouvé dans nos cartons. Ceci dit, il nous a depuis été indiqué des possibilités d’amélioration intéressantes et de nouvelles fonctionnalités. Une nouvelle version est à l’étude, pour laquelle nous envisageons d’utiliser un autre hardware (un ESP 8266), ce qui nous offrirait plus de souplesse d’utilisation et permettrait de réduire encore la consommation énergétique du bouton. Il nous faudra pour cela changer de langage (C++ Arduino), mais sans challenge où est le fun ?!

Merci à vous et à bientôt pour une autre réalisation du Fablab.

Remerciements à Lucas Dupuy et Guillaume Membré pour leur participation au projet et Hugo Wood pour ses propositions d’améliorations.

Liens des modèles 3D et sources du projet :

Partagez cet article.

A propos de l'auteur

Consultant back-end - Zenika Nantes - Functional programming enthusiast & tinkerer

Ajouter un commentaire

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