Tous les projets

Bar à Cocktails

Une machine à cocktails maison qui dose au gramme près.

  • Année2023
  • ClientProjet personnel
  • StatutTerminé
  • Lecture3 min
Bar à Cocktails

En 2021, pour valider mon diplôme, il fallait présenter un projet de fin d'année qui mélange tout ce qu'on avait appris sur le cursus, de l'électronique à l'embarqué en passant par le back, le front et le mobile. Plutôt qu'une démonstration sagement posée derrière un écran, j'ai voulu quelque chose qu'on puisse toucher. Et surtout, boire.

Le cahier des charges

L'exercice imposait de couvrir toutes les briques du diplôme dans un seul et même projet. J'ai donc conçu un bar à cocktails connecté, du meuble jusqu'à l'application.

  • la machine, entièrement construite en bois, avec ses pompes et ses tubes
  • l'embarqué, un ESP32 en Wi-Fi pour piloter le matériel
  • le backend, en Node.js, qui héberge toute la logique de dosage
  • la PWA, pour commander son verre depuis son téléphone et administrer les recettes Une seule vraie contrainte, mais de taille. Le jour de la soutenance, ça devait fonctionner en direct.

Peser plutôt que chronométrer

La partie mécanique tient en peu de choses. Un entonnoir, des tubes alimentaires, des pompes, et un verre posé sur une plateforme.

Le point clé du montage se trouve sous cette plateforme, un capteur de poids. La méthode évidente pour doser un liquide, c'est de faire tourner la pompe pendant un temps calculé. Le problème, c'est qu'un débit n'est jamais constant. Il dépend du niveau restant dans la bouteille, de la viscosité du sirop, de l'usure du tube. Peser, à l'inverse, ne ment pas.

Le verre lui-même est devenu l'instrument de mesure. Le système ne compte pas des secondes, il compte des grammes.

Toute l'intelligence côté serveur

J'ai fait un choix structurant dès le départ. L'ESP32 ne décide de rien. Il ouvre une pompe quand on le lui demande, et remonte le poids mesuré en continu. C'est le backend Node.js qui porte les recettes, qui sait qu'un cocktail vaut tant de millilitres de tel ingrédient et tant de millilitres de tel autre, et qui coupe la pompe au bon moment.

Les deux dialoguent en WebSocket, dans les deux sens. La latence entre le doigt sur l'écran et la pompe qui démarre est donc quasi nulle.

La commande

Côté utilisateur, une PWA fait office de carte. On choisit son cocktail, on le commande, et on suit la préparation en direct, ingrédient par ingrédient, pendant que le verre se remplit devant soi.

L'application embarque aussi un panel d'administration. C'est de là que je créais les cocktails et que j'ajustais les dosages de chaque ingrédient, sans toucher au

Le résultat

Le jour de la soutenance, le jury a commandé un eau-grenadine depuis son propre téléphone, pendant l'oral. Le verre est arrivé quelques secondes plus tard.

Ce projet m'a surtout appris que la difficulté n'est pas dans les briques, mais dans ce qui les relie. Un bug dans un navigateur, on recharge la page. Un bug au-dessus d'un verre déjà plein, ça se voit tout de suite et ça se nettoie à l'éponge. Ça oblige à penser l'échec en amont, à prévoir le verre absent, la connexion qui tombe en plein service, le poids qui n'évolue plus.

C'est le premier projet où j'ai vu mon code produire un effet physique dans le monde réel. Cinq ans plus tard, c'est toujours celui que je raconte en premier.

Projet suivantClicknChill

Un projet à construire ?

Écrivez-moi, on en discute.

Me contacter