top of page
Rechercher
  • Photo du rédacteurSébastien Ballut

Coffee Time

Dernière mise à jour : 8 juil. 2021


Présentation:


Coffee Time est un projet personnel qui a émergé lorsque j'ai cherché une solution pour rester le plus longtemps possible au lit le matin. Qui n'a jamais eu envie de se lever avec l'odeur du café et d'avoir son "petit noir" déjà prêt ? Pas vous ? Moi oui, en tout cas!


Contexte:


Il est vrai qu'il existe nombre de machines à café programmables sur le marché, mais n'oublions pas que je suis étudiant et par définition pas très riche.

Et surtout, c'est bien plus drôle de créer sa propre machine à café connectée!

Le but de ce projet est donc de créer une machine à café connectée pilotable depuis mon smartphone Android avec peu de moyens.

Pour cela, je dispose d'une vieille machine à café Senseo, d'un Raspberry Pi 3, d'une box internet et de mon smartphone.

Ce projet étant personnel, il n'engage que moi et ne m'est pas apparu risqué au premier abord. Nous verrons par la suite, si mon estimation du risque a bien été appréhendée…


Plan d'action:


Je sais rapidement comment je souhaite mettre en place mon système.

Une application sur mon téléphone doit communiquer avec un serveur sur mon Raspberry par le biais de mon réseau domestique.

Le Raspberry doit être branché physiquement sur la cafetière.




Architecture du système



Organisation:

  • Application mobile:

La première étape consiste à développer une application avec une interface utilisateur destinée à mon téléphone Android. Je la conçois très rapidement en Java. Une fenêtre avec deux boutons suffisent. Comme il s'agit d'une application à usage privé, je n'ai pas de contraintes particulières. Bref, en moins de deux heures, elle est terminée.


  • Paramétrage du Raspberry Pi


Avant de configurer le serveur, il y a quelques étapes préliminaires.

  • Dans un premier temps, je dois paramétrer le Raspberry pour qu'il se connecte automatiquement à mon réseau dès son allumage en lui donnant une adresse IP statique. Cela facilitera grandement l'étape de connexion entre l'application et le futur serveur. Pour cela, rien de très compliqué (en tout cas pour un développeur), il suffit de modifier le fichier /etc/dhcpcd.conf en lui spécifiant l'adresse IP statique voulue et le routeur. Après un redémarrage du Raspberry, il se connectera automatiquement au réseau avec à chaque fois la même adresse IP.

  • Dans un second temps, j'installe un serveur Apache sur le Raspberry, et je crée une API (Application programming Interface) très simple avec les instructions suivantes:

    • Allumer la cafetière

    • Faire couler un café

    • Faire couler un café double

    • Eteindre la cafetière


Même si dans un premier temps, ces instructions ne font pas grand chose, le but est de pouvoir les appeler depuis mon smartphone.

  • Il faut donc que je m'occupe de la connexion entre mon téléphone et mon serveur. Ici encore, rien de très compliqué étant donné que l'adresse de mon serveur est statique. Après quelques tests et correctifs, les appels à mon API fonctionnent correctement.

  • Il est maintenant temps d'implémenter les instructions vues plus haut, et pour cela j'ai besoin d'utiliser tout le potentiel du Raspberry. Si vous ne l'avez pas encore fait, je vous conseille de lire l'article sur le Raspberry et notamment la partie sur les broches GPIO (mettre le lien) qui sont des connectiques capables de recevoir et d'envoyer un faible courant électrique.

A partir d'ici, c'est quelque chose de nouveau pour moi et je dois me documenter pour pouvoir continuer. Heureusement, j'ai trouvé le blog d'une personne qui a eu la même idée que moi et qui a rédigé un article sur le sujet. Vous pouvez y accéder en cliquant ICI.

  • Pour interagir avec les broches GPIO du Raspberry, j'installe la bibliothèque "WiringPi" qui permet de lire et d'envoyer des signaux aux différentes broches. Les principales commandes sont:

    • gpio read <pin> (lecture d'un signal électrique 0 ou 1)

    • gpio mode <pin> in/out/pwm/up/down/tri (changer le mode d'une broche)

    • gpio write <pin> 0/1 (envoyer un signal électrique sur une broche)

Le but n'est pas de faire une documentation de cette librairie, mais vous pouvez trouver davantage d'informations sur le site de "Gordons Projects" qui m'a lui aussi bien aidé.

Les commandes citées ci-dessus sont celles dont je me suis servies pour interagir avec la machine à café via les différentes instructions de mon API.


La partie logicielle est donc normalement terminée.


  • Un peu de Bricolage:


L'tape suivante consiste à connecter physiquement le Raspberry à la cafetière. Pour ce faire, j'achète des câbles compatibles avec les broches GPIO. Je les branche ensuite sur le Raspberry comme ci-dessous:



A noter que sur l'image, il s'agit d'un Raspberry Pi Modèle B comportant 26 broches alors que j'ai utilisé un Raspberry Pi 3 qui comporte 40 broches, mais cela ne change pas grand chose.


LED: lire l'état de la machine

GND: La masse

ON/OFF: Allumer/éteindre la cafetière

1-CUP: un café simple

2-CUPS: un café double


Arrivé à ce stade, je commence à démonter la machine à café pour accéder à la carte électronique de la cafetière et je soude mes fils comme indiqué ci-dessous:





Les différents fils blancs correspondent à la masse, et on remarque qu'ils sont tous reliés sur la carte électronique de la cafetière même celui de la LED. J'ai donc décidé de ne pas souder les trois fils blancs barrés en rouge et de n'utiliser que celui de la LED, ce qui n'a aucune incidence sur l'installation. Au terme des soudures, c'est l'heure du grand moment! Le test réel!


  • Le test:

    • Première étape, allumer la machine à café! Pour ce premier test, inutile de remonter la cafetière, il suffit que la LED se mette à clignoter. Je branche la cafetière sur le secteur, je lance mon application, j'appuis sur le bouton de mon application destiné à allumer la machine à café et… miracle! La LED se met à clignoter m'indiquant le préchauffage. A noter qu'un test validé du premier coup est un moment marquant dans la vie d'un développeur.

    • Deuxième étape, faire couler un café ! Je suis donc obligé de remonter complètement la cafetière en intégrant le Raspberry à l'intérieur. Lors de la manipulation, un fil que j'avais soudé se détache. Rien de bien grave, je reprends mon fer à souder, ressoude le fil qui s'est détaché et BOUM!


J'ai oublié de débrancher la cafetière au moment de la soudure: Fatal Error !


Résultat:


Une petite explosion à fait brûler la carte mère de la cafetière, ce qui l'a rendue inutilisable.

La photo ci-dessous en témoigne.


Véritable photo de la carte mère de ma cafetière


Conclusion:


Un bilan positif, malgré un résultat décevant.

Une petite faute d'inattention peut malheureusement faire basculer la finalité d'un projet.

C'est une leçon que je retiendrai et une erreur que je ne renouvèlerai pas. Les erreurs font partie de l'apprentissage.


Effectivement, le début des tests laisse penser que le système est sur le point de fonctionner. Je suis assez déçu d'être parvenu aussi proche du but, et de ne pas avoir pu terminer.


Par chance le Raspberry est toujours fonctionnel, toute la partie serveur a été sauvegardée, et si quelqu'un de bienveillant et possédant une machine à café Senseo lit cet article, qu'il n'hésite pas à me contacter dans la partie dédiée, je me ferai un plaisir de lui envoyer une adresse à laquelle me la faire livrer 😉.

En conclusion, j'ai quand même réussi à rester au lit plus longtemps, étant donné que je n'ai plus de machine à café. Peut-on dire que c'est finalement un succès ?


Compétences associées






93 vues0 commentaire

Posts récents

Voir tout
bottom of page