Table des matières:

JavaStation (cafetière IoT entièrement automatique à remplissage automatique) : 9 étapes (avec photos)
JavaStation (cafetière IoT entièrement automatique à remplissage automatique) : 9 étapes (avec photos)

Vidéo: JavaStation (cafetière IoT entièrement automatique à remplissage automatique) : 9 étapes (avec photos)

Vidéo: JavaStation (cafetière IoT entièrement automatique à remplissage automatique) : 9 étapes (avec photos)
Vidéo: Sun javastation "krups" booting Debian GNU/Linux 2024, Novembre
Anonim
JavaStation (cafetière IoT entièrement automatique à remplissage automatique)
JavaStation (cafetière IoT entièrement automatique à remplissage automatique)
JavaStation (cafetière IoT entièrement automatique à remplissage automatique)
JavaStation (cafetière IoT entièrement automatique à remplissage automatique)
JavaStation (cafetière IoT entièrement automatique à remplissage automatique)
JavaStation (cafetière IoT entièrement automatique à remplissage automatique)

Le but de ce projet était de fabriquer une cafetière à commande vocale entièrement automatique qui se remplit automatiquement d'eau et tout ce que vous avez à faire est de remplacer les clients et de boire votre café;)

Étape 1: Présentation

introduction
introduction

Comme il s'agissait de mon deuxième mod de café, j'ai beaucoup appris au cours du processus, en particulier que plus vous modifiez la machine complexe, plus vous rencontrerez de problèmes/bugs au cours de l'utilisation quotidienne. La machine précédente n'était qu'une simple vieille cafetière à 1 interrupteur avec un mod à relais.

Le Circolo (version entièrement automatique) est la machine haut de gamme haut de gamme de Dolce Gusto. J'ai dû passer des heures à chercher la bonne machine car toutes les autres machines de cette série utilisaient le levier mécanique supérieur pour basculer entre les débits d'eau froide et chaude comme indiqué sur la photo.

Étape 2: Choisissez la bonne machine

Choisissez la bonne machine
Choisissez la bonne machine

Ma machine de base n'est pas seulement entièrement automatique, mais elle possède des fonctionnalités remarquables telles que l'extinction automatique après 5 minutes et la mémorisation de la dernière quantité de café (ce qui facilitera beaucoup les choses plus tard dans le modding). Le fonctionnement de base de la machine:

1, bouton d'alimentation enfoncé

2, bouton d'eau froide enfoncé (il dispersera immédiatement l'eau dans la tasse)

3, bouton d'eau chaude enfoncé (il chauffera la chaudière ~ 20-60 secondes et commencera à libérer de l'eau chaude dans la tasse) Le voyant d'alimentation clignotera en rouge pendant la période de veille, puis passera au vert en permanence lorsque la chaudière est prête.

Cette machine a également la capacité de détecter les erreurs suivantes:

Le réservoir d'eau est vide

Le porte-gobelet n'est pas en place

Dans les deux cas, le voyant d'alimentation clignotera entre le rouge et le vert.

Étape 3: Modifications matérielles

Modifications matérielles
Modifications matérielles

Dans cette écriture je ne détaillerai pas le démontage et remontage du boitier car il y a des vidéos à ce sujet sur YouTube. Le microprocesseur principal est caché juste sous le panneau de tête où se trouvent les 2 interrupteurs. La chaudière est sur le côté droit du boîtier séparé de tout le reste, la pompe et le panneau d'alimentation sont sur le côté gauche.

La machine à café est un environnement très résistant pour l'électronique, aucun côté n'est parfaitement adapté pour intégrer un circuit. La droite au niveau de la chaudière a plus d'espace mais vous traiterez de la chaleur, évidemment le circuit ne pourrait pas toucher la plaque de la chaudière ni même être près de celle-ci. J'ai choisi le côté alimentation/pompe mais ici vous devez faire face à une forte résonance provenant du fonctionnement de la pompe à membrane qui peut détruire le circuit de commande/faire glisser les fils hors de leurs connecteurs au fil du temps.

Le panneau d'alimentation ne contient rien d'utile mais peut être utilisé pour tirer un +5V stable (un coup de pouce de plus pour cette machine) qui peut être directement connecté à la broche VIN de l'Arduino en contournant le régulateur de tension embarqué.

Liste rapide du matériel (pas de nomenclature complète, n'inclut pas les bases):

  1. Dolce Gusto Circulo version entièrement automatique
  2. Module de relais 5V 4 canaux avec optocoupleur pour PIC AVR DSP (je suggère d'utiliser 4x relais de commutateur Reed SIP-1A05)
  3. Arduino Micro (je suggère d'utiliser SparkFun Pro Micro ou plus récent à l'avenir)
  4. 2PCS 4n35 FSC Optocoupleurs Phototransistor
  5. 1/2 "électrovanne électrique pour l'air de l'eau N/C normalement fermé DC 12V
  6. Capteur de mesure de distance du module à ultrasons HC-SR04 (achetez des extras, vous verrez plus tard pourquoi)
  7. 2 pièces module de capteur de détection d'humidité de goutte de pluie détection de pluie pour Arduino
  8. 1 Xbee
  9. Raccords de tuyauterie pour blocs d'eau (peut varier en fonction de la maison, il est préférable de l'acheter en quincaillerie et de tout assembler là-bas avant d'acheter)

Étape 4: Connexions principales et carte contrôleur

Connexions principales et carte contrôleur
Connexions principales et carte contrôleur
Connexions principales et carte contrôleur
Connexions principales et carte contrôleur
Connexions principales et carte contrôleur
Connexions principales et carte contrôleur

Les points de circuit suivants doivent être connectés:

1, bouton chaud

2, bouton froid

3, led rouge

4, led verte

5, bouton d'alimentation principal

6, GND partagé

Malheureusement, j'ai perdu mes notes/images sur l'endroit où les souder sur la carte, mais tout peut être facilement retrouvé avec un multimètre (utilisez simplement le mode de test de diode pour retracer les fils). La soudure n'était pas trop dure, choisissez des points avec des pattes SMD et soudez les fils là-bas.

Les LED rouge/verte sont toutes deux situées l'une à côté de l'autre au niveau de l'interrupteur d'alimentation. Ils sont nécessaires pour déterminer les états de la machine (sous tension, prête à faire du café (chaudière chauffée), erreur). Je les ai retirés directement de la carte principale, car il est difficile de manipuler le petit circuit autour de l'interrupteur d'alimentation.

J'utilisais les optocoupleurs de 4N35 pour m'interfacer en toute sécurité avec l'Arduino et lire les états des LED. L'idée originale était d'en utiliser 5 et de faire à la fois les lectures et les commandes de commutation (faire un circuit complètement silencieux). Malheureusement, cette puce n'a pas pu générer une résistance suffisamment faible pour émuler une pression sur un bouton, j'ai donc été obligé d'utiliser des relais. J'ai utilisé le module de relais générique 4 canaux que j'avais en main mais si je devais refaire ce projet j'utiliserais simplement de petits relais Reed (SIP-1A05 Reed Switch Relay avec diodes flyback internes) qui peuvent être directement connectés à la sortie de l'Arduino broches (charge ~ 7 mA) afin que tout puisse être placé sur une structure de carte à 2 niveaux.

Les 5 petits câbles peuvent être facilement descendus à côté des cordons d'alimentation sous la carte d'alimentation.

Pour utiliser plus efficacement l'espace dans la machine, j'ai décidé de diviser l'électronique en 2 panneaux principaux:

La gauche est le tableau de commande principal, la droite (ce que j'appelle le tableau de communication) contient le Xbee et bien que cela ne soit pas visible sur la photo, les 2 capteurs d'eau (pour la détection de débordement) se sont coincés derrière. En haut l'horloge temps réel (en option pour la disponibilité:)) et la carte relais 4 canaux prenant sa place à côté de la pompe en bas enveloppée dans une éponge, également un peu collée pour protéger de la résonance.

Pour la carte de communication, je n'ai pas pris la peine de faire du PCB, j'ai juste utilisé une planche à pain ordinaire car il ne s'y passe pas grand-chose. Il dispose de 6 connexions à la carte principale:

Vcc (5V), GND, Xbee (TX), Xbee (RX), Capteur d'eau1 (Données), Capteur d'eau2 (Données)

Étape 5: Contrôle du débit d'eau et mécanisme de remplissage

Contrôle du débit d'eau et mécanisme de remplissage
Contrôle du débit d'eau et mécanisme de remplissage
Contrôle du débit d'eau et mécanisme de remplissage
Contrôle du débit d'eau et mécanisme de remplissage
Contrôle du débit d'eau et mécanisme de remplissage
Contrôle du débit d'eau et mécanisme de remplissage

J'ai conçu cette machine dans un souci de sécurité, ce qui empêche les attaquants/dysfonctionnements de causer de graves dégâts d'eau à la maison, car la machine serait connectée à la fois au robinet et à Internet 24h / 24 et 7j / 7. C'est ce que fait le circuit de protection 555 suivant au-dessus du solénoïde.

A noter également que le solénoïde fonctionne à partir d'une alimentation 12V ce que j'ai quand même réussi à presser dans le fond de la machine à café à côté de la pompe et de la carte relais. Pour ne pas gaspiller d'énergie, la carte relais à 4 canaux commute directement le secteur 230V sur l'adaptateur qui allumera ensuite le solénoïde. Il y a bien sûr quelques microsecondes de retard à l'extinction que vous devez calculer pour l'effondrement du champ magnétique à la fois sur le solénoïde + sur l'adaptateur en tirant sur la prise.

J'utilise une prise jack standard de 3,5 mm pour connecter le bloc d'eau externe avec un long fil de 3 m et un tuyau en PVC de petit diamètre sortant du bloc allant à la cafetière.

Le haut du réservoir d'eau est percé pour accueillir ce tuyau qui descend ensuite jusqu'au fond du réservoir. Je soulignerais qu'il est très important d'alimenter le tuyau vers le bas sur le côté sans passer par le milieu et interférer avec les capteurs à ultrasons.

Une fois que le solénoïde est sous tension, le circuit s'éteint automatiquement après ~ 4 secondes (ce qui devrait être plus que suffisant pour remplir le réservoir jusqu'au plein) et il reste dans cet état jusqu'au prochain cycle de mise sous tension. Ce circuit est la dernière ligne de défense contre les dysfonctionnements et il fonctionne de manière totalement indépendante de la cafetière. Si le relais de la machine tombait en panne et restait fermé, l'eau pourrait inonder la maison, avec cette protection, cela ne peut jamais arriver.

Si ce n'est toujours pas assez bon pour vous ou s'il est impossible de fermer l'eau ou si vous ne voulez pas bricoler avec des blocs d'eau, consultez mon projet WasserStation qui a été construit exactement pour cela pour étendre le petit réservoir d'eau de la machine à café.

Étape 6: Détection des inondations

Détection d'inondation
Détection d'inondation
Détection d'inondation
Détection d'inondation
Détection des inondations
Détection des inondations

Il y a 2 capteurs d'eau supplémentaires pour la protection:

  • Sensor1: à l'arrière du réservoir pour la détection de débordement du réservoir
  • Sensor2: en bas de la machine à café pour la détection de trop-plein de tasse

Ces deux capteurs déclencheront une interruption qui coupera immédiatement l'eau, allumera le voyant d'erreur et annulera l'exécution du programme pour empêcher une attaque comme préparer un million de cafés et inonder la maison de cette façon. Une fois le programme terminé, la machine ne répondra plus à rien et doit être redémarrée manuellement.

Au cas où vous vous demanderiez ce qui se passerait si le capteur à ultrasons était inondé (c'est arrivé une fois:))

Il redonnait le niveau d'eau comme celui-ci pendant quelques jours, mais même après qu'il se soit asséché, il n'était plus jamais précis et j'ai dû le remplacer. La machine a été conçue pour fonctionner à partir de l'eau froide du robinet, de sorte qu'aucune vapeur chaude n'endommagerait le capteur. Ce capteur n'est précis que jusqu'à ce que le niveau d'eau soit à 2-3 cm de celui-ci.

La forme elliptique du réservoir rendait les calculs de niveau d'eau difficiles, ils ont donc été mesurés et codés en dur dans le programme pour correspondre à des pourcentages.

Étape 7: Test et assemblage final

Essais et assemblage final
Essais et assemblage final
Essais et assemblage final
Essais et assemblage final
Essais et assemblage final
Essais et assemblage final

La machine dans son état final, cachant presque complètement les traces de tout piratage et si les 3 voyants d'état et le port de débogage USB n'étaient pas là, vous ne pourriez pas dire que quoi que ce soit d'autre se passe à l'intérieur alors qu'il pourrait même abriter un Wifi connecté Serveur Quake:)

Lorsque je modifie des appareils, je garde toujours l'utilisation manuelle en tête de mes priorités. Après le piratage, la machine est entièrement utilisable par n'importe qui, telle qu'elle était, sauf que le réservoir d'eau ne peut pas être facilement retiré. À moins que vous ne terminiez la partie complète de l'automatisation de l'eau de la conception, la machine ne peut être remplie qu'à ce stade avec une petite combinaison tuyau + entonnoir.

Étape 8: Code de contrôle du café

Code de contrôle du café
Code de contrôle du café

Trouvez le code source complet d'Arduino ci-dessous.

Brève explication du code:

La boucle principale appelle la fonction xcomm(), responsable du traitement des commandes, de la préparation du café, de la mise sous/hors tension de la machine.

Le code en dessous n'est atteint qu'en cas de contrôle manuel. Il augmente un compteur de statistiques pour suivre le nombre de cafés préparés et remplit automatiquement le réservoir d'eau.

Les commandes peuvent être envoyées via le Xbee ou via le port USB (le débogage doit être activé au début). Lorsque la communication provient de l'un ou l'autre, le voyant orange clignote pendant une seconde pour indiquer l'activité du réseau. Les commandes suivantes sont implémentées:

1, CMSTAT - interroger les statistiques de la machine

La machine stocke des statistiques sur le nombre de cafés chauds/froids/manuels préparés et obtient également la disponibilité du RTC qui ne déborde pas après 3x jours, ce qui peut aller jusqu'à des années:P

2, CMWSTART - commence à préparer du café et des boissons chaudes avec de l'eau chaude

3, CMCSTART - commence à faire du thé glacé et des boissons froides avec de l'eau froide

Les processus à chaud et à froid commencent par l'appel de la fonction standby() qui effectue des vérifications supplémentaires puis déclenche une pression sur le bouton d'alimentation. Après cela, le programme attend le voyant vert (lorsque la chaudière est chauffée) puis émule la pression du bouton chaud/froid. Après cela, il attend 50 secondes (ce qui est plus que suffisant pour même la plus grande tasse de café) puis coupe l'alimentation. Cela ne serait même pas nécessaire puisque cette excellente machine s'éteindrait automatiquement 5 minutes après avoir fait le café mais pourquoi gaspiller de l'énergie ? Soit dit en passant, la consommation d'énergie en veille de la machine, même après la modification, est inférieure à 2 watts.

Remplissage d'eau et sécurité

Cette machine a été conçue dans un souci de sécurité, il serait donc impossible pour un attaquant qui prend le contrôle d'inonder toute la maison avec de l'eau. Une panne matérielle n'entraînerait pas non plus de dommages sérieux. À côté des capteurs matériels, il y a des protections intégrées dans le code pour la recharge. Un compteur qui déclenche la routine ISR si la machine n'est pas rechargée en x secondes (cela pourrait par exemple arriver si le capteur à ultrasons fonctionnait mal et donnerait 20 % après x secondes une fois la recharge amorcée).

Il n'y a pas d'authentification, n'importe qui peut utiliser la machine à portée radio qui connaît les commandes, j'ai donc changé l'ID piconet Xbee par défaut en quelque chose d'autre, le ERR_INVALIDCMD peut également être commenté et la machine ignorera toutes les commandes inconnues.

Bugs

Double bug du café: la chose la plus ennuyeuse à propos de ce bug est qu'il a commencé à se produire quelques mois après avoir utilisé la machine avec le même code. Une fois la commande de café émise, il a préparé le café, s'est éteint puis rallumé et a continué à préparer 1 autre café avec le même client.

J'ai dû commencer à déboguer la duplication des commandes à partir du niveau Android car j'ai implémenté le ré-envoi vers le code en cas de perte de paquets. Il s'est avéré que ni l'androïde, le logiciel de contrôle C ou le noyau Linux sur le raspi2 n'étaient responsables de cela plutôt que le Xbee.

Après avoir émis echo "CMCSTART">/dev/ttyACM0 sur le nœud de contrôle, il sort deux fois à l'autre extrémité. J'ai conclu que mon spectre 2,4 GHz dans ma maison commençait à être saturé à cause des nombreux appareils radio de cette gamme, ce qui poussait un Xbee à invoquer une sorte de renvoi dans la couche radio et les données étaient envoyées deux fois (pas toujours). Une fois que la première commande est entrée, la fonction xcomm() des machines a commencé à la traiter, mais une seconde est arrivée juste après qui attendait dans le tampon Xbees et lorsque la boucle s'est terminée, elle a commencé à traiter la deuxième commande. Pour contourner ce problème j'ai introduit 3 seuils dans le code pour qu'il soit impossible de faire plus d'1 café en 2 minutes. Il y a aussi une limite sur le CMSTAT mais pour ne pas interférer avec le code de contrôle C/Android, il squelchera simplement les réponses pendant 2 secondes.

Le dernier seuil a été défini pour le compteur de café manuel, car une fois que la machine a atteint l'état prêt (chaudière chauffée, feu vert), elle a enregistré l'événement vert des centaines de fois, augmentant le nombre de cafés.

Étape 9: Considérations de conception et réflexions finales

Après beaucoup de problèmes de communication Xbee, je ne recommanderais pas Xbee pour ce projet. Utilisez soit la radio standard 433Mhz bon marché avec VirtualWire et des Bps réduits pour plus de stabilité, soit intégrez un Raspberry PI Zero avec connexion Wifi directement dans la machine à café.

Comme la date l'indique, il s'agit d'un vieux projet, je m'excuse donc pour les petits détails manquants comme la connexion du circuit de contrôle aux pattes précises de la carte mère. Ce projet nécessite un certain niveau de connaissances techniques pour le faire vous-même. Si vous trouvez des bugs/problèmes ou si vous souhaitez contribuer à ce tutoriel, faites-le moi savoir.

Le logiciel de contrôle, les méthodes de commande vocale sont pour une autre partie qui permettront de préparer votre café par une simple commande vocale avant même de sortir du lit.

J'ai maintenant terminé la documentation de mon système de stockage d'eau (WasserStation) et mis à jour le CoffeeControlCode vers la dernière version, qui comprend également la recharge automatique. Si vous utilisez la même machine pour la construction, la recharge fonctionnera parfaitement (sans aucune modification du code) puisque les niveaux d'eau ont été calibrés sur le réservoir d'eau du Circolo.

Conseillé: