Le claquomètre

27/08/2016

Dans la série projet foireux mais très amusant, je vous présente le claquomètre ! Le projet est né en pleine soirée pendant le quadrimestre, en se disant ce que ce serait chouette de créer un gobelet connecté. En effet, à Louvain-la-Neuve, les verres de bière sont consignés et valent 1 euro pour éviter trop de déchets, et c'est véritablement devenu une habitude pour les étudiants. Quand je vais à une soirée, j'amène ma boisson et mon gobelet. Mais les traditions sont exigeantes, et l'idée de concevoir quelque chose capable de mesurer la vitesse d'affond (cul-sec en France) était un défi de taille et surtout très comique à réaliser.

Bien que le projet semble pousser à la consommation d'alcool, c'est loin d'être le but ; comme précisé précédemment, il s'agit plutôt de créer un objet fun avec les compétences dont je dispose actuellement.

Ni une, ni deux, je vérifie mon stock de matériel et je me documente un peu sur le net sur les capteurs de niveau de liquide. Je commande 5 capteurs de niveau d'eau et quelques vibreurs : on trouvera bien quelque chose à faire avec ça ! Le contrôleur sera un Arduino Nano puisque j'en ai en stock.

Une fois le tout reçu, je commence par charcuter un gobelet réutilisable (1 euro de perdu…) pour y insérer deux capteurs de niveau. Le principe est simple. Un capteur est dans l'axe vertical dans le fond du verre et permet de définir si celui-ci est rempli ou non et également de savoir s'il reste du liquide à l'intérieur. Un second capteur est placé à l'horizontale au-dessus du verre, dans le but (accrochez-vous bien) de se retrouver à l'horizontale lorsque quelqu'un est en position de boire. Ce capteur permet ainsi de mesurer le niveau dans le verre pendant que l'on boit. L'idée ici était de déclencher un timer lorsque le niveau du second capteur diminuait et de l'arrêter lorsqu’il approchait de 0. Le concept est bon, mais la pratique jouera encore des tours ! Non seulement les capteurs sont trop lents dans la mesure et dépendent anormalement fort de leur état précédent. Je veux dire par là que les valeurs étaient différentes que l'on soit au premier verre ou au cinquième. Cerise sur le gâteau, les valeurs retournées sont totalement différentes s'il s'agit d'eau ou de bière ! Il va falloir trouver une autre idée.
Premier essai avec des capteurs de niveau
Premier essai avec des capteurs de niveau.
Comme d'habitude, la plupart des problèmes finissent en longues discussions avec mon pote Sacha et quelques heures de recherches sur internet. Je vais tenter de réaliser des capteurs moi-même en utilisant simplement le principe du deux fils qui se touchent parce que le liquide est conducteur. C'est très facile à mettre en place puisque ça ne demande qu'un transistor et le percement de quelques trous aux endroits où l'on souhaite faire la mesure, et l’insertion d’un fil électrique.

Notez ces quelques détails :
Seconde version fonctionnelle
Seconde version fonctionnelle.
Le principe devient alors très simple ! Si les deux fils placés tout en haut sont en contact grâce au liquide (capteur et référence), c'est que l'utilisateur commence à boire. S'ils ne sont plus en contact, c'est qu'il a fini de boire. On rajoute quelques lignes de code dans le contrôleur en s'aidant des autres capteurs pour juger de l'honnêteté de l'utilisateur : a-t-il tout bu ? n'a-t-il bu qu'une gorgée ? Voyez à quel point ce projet ridicule devient technique ! L'Arduino permettra une précision olympique à la milliseconde près, c'est parfait.

La mesure est globalement bonne, mais les gouttes résiduelles se logent entre les deux fils, c'est assez gênant. La solution sera simplement de creuser dans le verre pour l'un et de surélever l'autre : simple et efficace.
Seconde version fonctionnelle
Seconde version fonctionnelle.
Un écran LCD affiche le résultat en temps réel, et un genre de menu contextuel est disponible, permettant ainsi de visualiser les statistiques : temps total de la soirée, nombre de verres bus, nombre de litres bus, débit en L/min, le temps record de descente d'un verre et le dernier temps réalisé. Il existe donc un petit menu dirigeable dirigé par 3 boutons.

La suite du défi a été d'utiliser la mémoire EEPROM de l'Arduino pour stocker ces nombreuses valeurs. Mémoire difficilement gérable avec un petit aspect aléatoire puisqu'elle est conçue pour stocker 1 000 bytes (nombre de 0 à 1 024) et qu'elle est limitée en utilisation à 100 000 modifications. La naissance du menu reset s'est révélée obligatoire pour effacer toutes les données. Je planche encore sur un petit problème : les valeurs enregistrées sont bonnes, réutilisées tout de suite également, mais, une fois l'appareil éteint et rallumé, elles se sont modifiées de quelques dizaines et ne sont donc plus correctes. Mais ce souci n'intervient que sur les nombres supérieurs à 100. Étrange…
Troisième version dans sa boite
Troisième version dans sa boite.
Bref, l'appareil s'est vu emballer dans une boîte à tartines étanche pour protéger l'électronique. J'ai rajouté un vibreur sur le verre, avec un système de notification qui peut vous rappeler de boire ou de ne pas boire. Pour les curieux, la boîte emballe donc l'Arduino Nano, les 3 boutons, les 3 LEDs de contrôle, une batterie, et le PCB qui gère les capteurs. Sur ce PCB on retrouve simplement 3 BC547, transistors NPN bien connus, et un 2N222 qui gère la puissance du vibreur. La batterie a été LiPo, puis simplement une 9 V Everyday, pour une question de facilité. Retrouvez le schéma électronique sur la figure suivante :
Schéma électronique
Schéma électronique.
Et l'électronique qui s'y cache :
L'électronique bien protégée
L'électronique bien protégée.
Le capteur de croûte (verre bu mais pas totalement vide) n'a pas encore été installé, mais cela ne demande qu'à être fait.

En peu de temps l'objet a déjà fait quelques preuves en démonstration et en bugs. Il est très apprécié des étudiants que ça amuse ; je pense que c'est le premier objet de ce type vu en Belgique. Il suscite la curiosité et la demande, à laquelle je ne compte pas trop répondre. J'espère pouvoir le perfectionner pour éliminer encore les nombreux bugs. Je pense notamment au temps de Clément qui est beaucoup trop rapide pour le code actuel ! À ce propos, le code est disponible ici, mais n'est pas libre de droits : 429 lignes de connerie qu'il ne sera pas possible pour vous d'adapter sans mon accord écrit.

Bref, un projet hyper-drôle à réaliser, sur lequel j'ai pris beaucoup de plaisir en connectant la soirée. Les possibilités sont nombreuses, mais j'ai envie que ce projet reste dans le raisonnable et ne devienne pas dangereux. Si vous avez des questions, utilisez le menu contact !
Blog | Haut