Voici le résultat final:
Voici comment ça fonctionne:
Table des matières
Matériel utilisé / Ce dont vous avez besoin
Raspberry Pi Zero W
J'ai personnellement utilisé un Raspberry Pi Zero avec un dongle USB Wi-Fi. Je recommanderais cependant le Raspberry Pi Zero W.
Fils
Carte / s de relais
Fer à souder
Optionnel:
Interrupteur mécanique
Prise de courant
Percer
Étape 1:
Décidez de la fonctionnalité
Pour commencer, dévissez votre machine et découvrez comment les boutons interagissent avec le circuit imprimé principal.
Ici, vous pouvez voir que les boutons à l'avant alimentent la carte de circuit imprimé principale via ces connexions
Voici l'avant, c'est-à-dire l'interface utilisateur
Toute la théorie de ce projet est que nous allons appuyer sur des boutons par programmation.
Avec le matériel, vous avez un bouton physique, qui ressemble à ceci
Lorsque vous appuyez sur le bouton, vous fermez le circuit qui permet à la charge de se déplacer.
C'est cool, car il suffit d'ajouter un autre "bouton", voir ici
De cette façon, peu importe le bouton sur lequel vous appuyez, que ce soit le bouton physique de la machine ou notre futur "bouton" numérique; Les deux boutons peuvent compléter le circuit!
Ce deuxième "bouton" sera notre carte relais.
Pour ce projet, j'ai décidé que je ne souhaitais contrôler que les trois boutons suivants:
Allumé éteint
Préparez une tasse
Préparez deux tasses
Décidez par vous-même du type de fonctionnalité qui vous intéresse.
Étape 2:
Identifier les connexions à souder
J'ai décidé que c'était une étape que je devais prendre dès le début pour exclure d'éventuels problèmes avec la carte. Les connexions peuvent être obstruées par de la colle chaude par exemple.
Retournez la carte d'interface utilisateur et identifiez les voies spécifiques.
Un peu de traçage plus tard et j'ai identifié toutes les informations dont j'ai besoin. Un fil à chaque ligne colorée plus un pour la masse (GND).
Remarquez comment les trois boutons sont connectés au même GND, la ligne noire. Cela signifie que nous n'avons besoin que d'un seul fil pour le GND au lieu de câbler chaque bouton individuellement, cool!
Étape 3:
Découvrez comment fonctionne une carte relais
Un relais est simplement un interrupteur à commande électrique.
Laissez la charge se déplacer à travers une broche de commande et le commutateur bascule. Voici une courte vidéo, réalisée par Simon A. Eugster
Si nous connectons un tel relais à un bouton de notre machine à café, nous pouvons le contrôler électriquement!
Étape 4:
Découvrez comment contrôler la carte relais
Le Raspberry Pi possède ces soi-disant broches d'entrée / sortie à usage général. (court: broches GPIO)
Ils ressemblent à ceci:
Nous allons utiliser les broches de sortie de notre Pi pour contrôler électriquement le relais, qui contrôlera ensuite la machine à café. Rappelez-vous le schéma au début, ici:
Comment interagissons-nous avec une broche GPIO?
Le Raspberry Pi fonctionne sous Linux, ce qui signifie "Tout est un fichier"; En d'autres termes, vous pouvez contrôler les broches GPIO simplement en écrivant dans un fichier. Ne vous inquiétez pas, j'ai publié mon code et je vais vous guider. Plus d'informations sur les détails plus tard.
Comment dire au Pi quand retourner la broche (relais)?
J'ai trouvé une API REST simple qui signifie que le Pi attendra une demande réseau spécifique et agira en conséquence, soit en faisant ce qui lui est dit, soit en rapportant une erreur.
Trois boutons veulent être contrôlés, donc le Pi écoutera ces trois instructions:
Commander
action
tasses = 1
Préparez 1 tasse.
tasses = 2
Préparez 2 tasses.
puissance = basculer
Basculez l'alimentation.
Le fait d'avoir une telle interface permet de créer plusieurs façons d'interagir avec le Pi; Autrement dit, disposer d'un appareil capable d'envoyer des requêtes réseau (votre ordinateur de bureau, ordinateur portable, tablette, téléphone, montre, ..) vous permet d'interagir avec la machine à café!
Comment envoyer une demande de réseau?
J'ai trouvé que la construction d'un petit site Web était l'approche la plus intuitive pour l'interaction depuis lors, d'autres personnes de mon réseau peuvent également utiliser ce service. Vous pouvez décider de quelque chose de différent ici.
(Les scripts me viennent à l'esprit)
Étape 5
Décidez où placer le Pi
Votre Pi doit résider à l'intérieur ou à l'extérieur de la machine à café. J'ai ouvert le dos et heureusement trouvé beaucoup d'espace pour travailler avec.
Je ne possède pas de boîtier pour le Pi, donc une sorte de plaque arrière serait bien d'avoir. Un peu de plastique du sous-sol fera l'affaire. Percez quelques trous, tournez quelques vis et voilà:
Le coller sur le mur arrière semblait assez raisonnable:
Étape 6:
Commencez à souder
Les cartes relais ont généralement besoin d'une broche pour l'alimentation (VCC), d'une autre broche pour la masse (GND) et d'une broche pour chaque canal. Je veux contrôler trois boutons, j'ai donc besoin de cinq broches au total. Je les ai marqués ici:
Voici les broches que j'ai utilisées
Après avoir soudé et mis sous tension votre Pi, il devrait ressembler à ceci:
Remarquez les trois LED brillantes, elles indiquent l'état des relais. Ils sont activés par défaut et doivent être désactivés après le démarrage de votre Pi. Cette tâche sera automatisée via un script de démarrage; Plus sur cela plus tard.
Sidenote:
À ce stade du projet, tout était nouveau pour moi, j'ai donc essayé de basculer les relais manuellement. Pour ce tutoriel, je vais entrer dans les détails techniques plus tard. Si vous connaissez Bash et que vous souhaitez déjà jouer avec lui, consultez mon script d'initialisation.
Le Pi est terminé, sur la machine à café.
Souvenez-vous du tableau tracé:
Après le soudage, il devrait ressembler à ceci:
Cool, progresse! Vous devrez peut-être étendre vos fils en fonction de la taille de votre machine à café. La mienne s'étend de l'avant vers l'arrière comme ceci:
Selon la façon dont vous souhaitez alimenter votre Pi, vous pourriez avoir fini de souder maintenant!
Mon père a suggéré que vous puissiez utiliser la même puissance qui entraîne la machine à café pour alimenter également le Pi. De cette façon, aucun câble externe ne serait visible, ce qui est plutôt bien si vous me demandez!
AVERTISSEMENT: je vous suggère de ne faire cela que si vous savez vraiment ce que vous faites! Travailler avec des tensions aussi élevées est dangereux. N'essayez que si vous savez ce que vous faites.
Nous avons mis une petite prise de courant à l'intérieur de la machine à café qui contient un adaptateur USB AC à DC du moulin. Cet adaptateur alimente ensuite le Pi via USB. Vois ici:
Pour pouvoir allumer ou éteindre le Pi, un petit interrupteur mécanique a été utilisé. La prise blanche a deux câbles qui en sortent. L'un doit passer dans l'interrupteur mécanique et l'autre dans la machine à café.
Identifiez d'où la machine tire son énergie en recherchant PROBABLEMENT un câble marron, bleu et jaune + vert. (Vérifiez les couleurs de votre région, ces couleurs ne sont valables que pour l'Europe!)
Connectez les câbles de la prise d'alimentation au câble marron et bleu comme dans l'image suivante. Peu importe le câble spécifique de la prise d'alimentation qui va dans le bleu ou le marron.
Coupez un trou pour l'interrupteur et profitez de la bonté cachée.
Étape 7
Configurer le logiciel nécessaire
Remarque:
Tout mon code pour ce projet se trouve ici.
J'ai codé l'API REST susmentionnée dans du PHP de base, car un serveur Web avec support PHP était déjà installé sur mon Pi.
En tant que serveur Web (+ PHP), vous avez le choix entre deux options, il y a de petits articles soignés de la Fondation Raspberry Pi elle-même. Peu importe celui que vous choisirez, choisissez-en un. Par exemple, vous pouvez opter pour NGINX ou Apache. Le processus est à peu près le même et une étape "set-it-and-oublier-it".
Téléchargez et installez, activez certaines choses, c'est fait.
Comment contrôlons-nous exactement les broches GPIO
Les broches sont représentées sous forme de fichiers sur votre Pi. Vous pouvez les trouver dans le dossier / sys / class / gpio, voir ici:
$ ls / sys / class / gpio
exporter gpiochip0 unexport
Ce dossier est assez intéressant, car il existe deux fichiers spéciaux, l'exportation et la non-exportation.
Le fichier d'exportation configure et active les fichiers d'une broche spécifique.
Le fichier de non-exportation supprime les fichiers créés.
Un petit exemple vous aidera à comprendre comment cela fonctionne: vous écrivez simplement le numéro de la broche GPIO dans le fichier d'exportation, puis vous avez accès aux fichiers nécessaires. La seule mise en garde est que, par défaut, vous avez besoin des privilèges root car il s'agit d'un répertoire système. Par exemple, je veux activer la 5ème broche GPIO donc j'écris le numéro 5 dans l'export:
$ Echo 5> exportation
$ ls / sys / class / gpio
exporter gpio5 gpiochip0 unexport
Voyez comment il existe maintenant un dossier supplémentaire appelé gpio5! Vous pouvez aller à l'intérieur et lister son contenu via:
$ cd / sys / class / gpio / gpio5
$ ls
sous-système de puissance de périphérie de direction active_low valeur uevent
Voici des fichiers plus spéciaux qui vous permettent de configurer cette broche. Pour nous, la direction et la valeur sont intéressantes car avec ces deux-là, nous pourrions commencer à contrôler notre relais! Inspectez le contenu des fichiers via:
$ Cat direction value
dans
1
La direction actuelle de cette broche pointe et sa valeur est 1. Imaginez que vous connectez un périphérique externe à cette broche, de cette façon, vous pouvez établir une communication entre différents systèmes en surveillant la valeur. Cool, non?
Notre objectif est de fournir une charge au relais, nous devons donc changer de direction de l'intérieur vers l'extérieur.
Écrivez simplement dans le fichier de direction comme ceci:
$ Echo out> direction
$ Cat direction value
en dehors
0
Voir maintenant la broche pointe vers l'extérieur et a une valeur de 0. Truc super simple. J'étais assez ravi quand j'ai essayé cela pour la première fois parce que j'avais supposé que le contrôle du matériel serait très difficile. Il suffit d'écrire 1 ou 0 dans le fichier de valeurs. Qui savait?
Un petit sidenote:
Une distinction doit être faite ici, les fichiers d'exportation et de non-exportation n'attendent pas le numéro de broche littéral, mais le numéro de broche GPIO qui est différent. Prenons l'exemple de la broche GPIO numéro 5. Sur le graphique suivant, vous pouvez voir que la GPIO5 a le numéro de broche littéral 29.
Alors oui, gardez cela à l'esprit.
Configurez les broches GPIO dont nous avons besoin
Comme vous l'avez vu dans le graphique précédent, j'ai l'intention d'utiliser les broches GPIO 2, 3 et 4.
J'ai écrit un script qui effectue les étapes d'exportation, de définition de la direction, de définition de la valeur et des autorisations:
# Activez les broches nécessaires.
echo 2> '/ sys / class / gpio / export';
echo 3> '/ sys / class / gpio / export';
echo 4> '/ sys / class / gpio / export';
# Changez les directions en "out".
echo 'out'> '/ sys / class / gpio / gpio2 / direction';
echo 'out'> '/ sys / class / gpio / gpio3 / direction';
echo 'out'> '/ sys / class / gpio / gpio4 / direction';
# Éteignez les broches.
echo 1> '/ sys / class / gpio / gpio2 / value';
echo 1> '/ sys / class / gpio / gpio3 / value';
echo 1> '/ sys / class / gpio / gpio4 / value';
# Changer les permissions pour que le serveur web puisse écrire dans les fichiers 'value'
chmod 777 '/ sys / class / gpio / gpio2 / value';
chmod 777 '/ sys / class / gpio / gpio3 / value';
chmod 777 '/ sys / class / gpio / gpio4 / value';
Un redémarrage du Pi réinitialise les broches que nous avons précédemment exportées, nous avons donc besoin d'un service de démarrage qui les réactive après le démarrage. J'ai écrit ce service qui exécutera le script d'initialisation:
(Unité)
Description = Configure les fichiers et les autorisations nécessaires pour que les 2e, 3e et 4e broches GPIO fonctionnent.
(Un service)
Type = oneshot
ExecStart = / bin / gpio_coffee_init.sh
(Installer)
WantedBy = multi-user.target
Veuillez noter à quoi ressemble le service pour le script d'initialisation dans le dossier / bin /bin/gpio_coffee_init.sh. Donc, avant d'activer ce service, vous devez déplacer gpio_coffee_init.sh dans / bin via:
$ mv gpio_coffee_init.sh / bin
Ensuite, j'ai également déplacé le service dans / etc / systemd / system de la même manière via:
$ mv gpio_coffee_init.service / etc / systemd / system
Après cela, vous pouvez essayer si cela fonctionne en démarrant le service via:
$ Systemctl start gpio_coffee_init.service
Cela devrait définir vos broches GPIO que vous pouvez vérifier manuellement dans le répertoire / sys / class / gpio, comme ceci:
$ ls / sys / class / gpio
exporter gpio2 gpio3 gpio4 gpiochip0 unexport
Voyez comment les deuxième, troisième et quatrième broches ont été exportées. Yay. Si cela réussit, vous pouvez activer le service, ce qui signifie qu'il s'exécutera à chaque démarrage du Pi.
$ systemctl enable gpio_coffee_init.service
Un résumé rapide
Nous avons un script d'initialisation qui définit correctement nos broches: exportez-les, configurez la direction, la valeur et les autorisations de fichier.
Ce script d'initialisation s'exécute automatiquement après le démarrage du Pi.
Je l'ai fait une fois et après des mois d'utilisation, je n'ai jamais eu besoin de changer quoi que ce soit ici. Ça marche. ™
Déployer le site Web
D'accord, nous avons retiré le matériel. Il est temps de déployer le site Web.
Les fichiers du site Web résideront probablement pour vous dans / var / www / html. Ce dossier dépend cependant de votre distribution Linux, les miennes se trouvent par exemple dans / srv / http. Cela n'a pas vraiment d'importance, découvrez simplement où votre serveur recherche des fichiers via le moteur de recherche de votre choix.
Vous pouvez trouver le code de mon site ici. Téléchargez-le et déplacez le fichier index.php et le dossier du fournisseur vers le répertoire où votre serveur Web recherche les pages. Le fichier index.php contient le site Web réel et le dossier du fournisseur contient les «graphiques» pour ainsi dire. Si vous oubliez de déplacer également le dossier du fournisseur, le site aura l'air simple et cassé, c'est tout ce que j'essaie de dire.
Sidenote:
Je ne pense pas qu'il soit nécessaire ici de parcourir tout le code des sites, n'est-ce pas? Envoyez-moi un commentaire si vous pensez le contraire.
J'ai conçu le site pour être minimaliste et optimisé pour les écrans mobiles. Il devrait ressembler à ceci lorsque vous l'ouvrirez dans votre navigateur:
Enfin et surtout deux petites astuces pour améliorer la qualité de vie lors de l'utilisation de ce service:
Vous pouvez changer le nom d'appareil de votre Pi en quelque chose comme « café '' afin de pouvoir y accéder plus facilement à l'intérieur de votre réseau domestique. Par exemple, mon routeur FRITZ! Box me permet de me connecter à des appareils à l'intérieur de mon réseau via des URL comme:
Pour ce faire, il vous suffit d'écrire le nom de votre choix dans le fichier de nom d'hôte dans / etc / hostname comme ceci:
$ echo 'café'> / etc / hostname
Une autre astuce intéressante est que vous pouvez ajouter ce site à votre écran d'accueil. De cette façon, vous pouvez accéder à votre café en appuyant simplement sur l'icône. Chrome, Firefox et Safari prennent tous en charge cette fonctionnalité, recherchez-la dans les paramètres lorsque vous visitez un site.
Le site en action
En supposant que le logiciel fonctionne comme prévu: Enfin, le moment magique de tout assembler est à nos portes.
Étape 8
Connexion de la machine à café au relais
La connexion du relais à la machine à café se fait facilement, voici un petit schéma que j'ai réalisé:
En réalité, cela ressemble à ceci:
Vous devriez avoir terminé maintenant.
Maintenant, votre prochain café n'est qu'à un clic!
Par souci d'exhaustivité, jetez un autre coup d'œil au diagramme abstrait
et ressentez le pur bonheur de faire fonctionner une machine lourde du bout des doigts:
Mots de clôture
Merci d'avoir lu ce gâchis. Ce fut mon premier projet de matériel et avait besoin de beaucoup de bricolage, d'essais et d'erreurs. Avec le recul, cela semblait vraiment intimidant, mais j'ai apprécié la route.
Si vous avez aimé cet article, vous abonner à ma liste de diffusion pourrait vous intéresser. J'ai également un article interactif et approfondi sur l'apprentissage du binaire et plus encore. Rejoignez la discussion sur ce post sur Reddit!