JavaStation (selbst nachfüllende vollautomatische IoT-Kaffeemaschine)

JavaStation (vollautomatische IoT-Kaffeemaschine zum Nachfüllen) - Gunook

Das Ziel dieses Projekts war es, eine vollautomatische, sprachgesteuerte Kaffeemaschine zu entwickeln, die sich automatisch mit Wasser auffüllt. Alles, was Sie wirklich tun müssen, ist, die Gönner zu ersetzen und Ihren Kaffee zu trinken.

Zubehör:

Schritt 1: Einführung

Da dies mein zweiter Kaffee-Mod war, habe ich viel dabei gelernt, insbesondere, dass je komplexer die Maschine ist, desto mehr Probleme und Fehler treten im täglichen Betrieb auf. Die vorherige Maschine war nur eine einfache alte 1-Schalter-Kaffeemaschine mit einem Relais-Mod.

Der Circolo (vollautomatische Version) ist das Spitzenmodell der Premium-Maschine von Dolce Gusto. Ich musste stundenlang nach der richtigen Maschine suchen, da alle anderen Maschinen dieser Serie den oberen mechanischen Hebel zum Umschalten zwischen kaltem und warmem Wasser verwendeten, wie auf dem Bild gezeigt.

Schritt 2: Wählen Sie die richtige Maschine

Meine Basismaschine ist nicht nur vollautomatisch, sondern verfügt auch über bemerkenswerte Funktionen wie das automatische Ausschalten nach 5 Minuten und das Erinnern an die letzte Kaffeemenge (was die Arbeit später beim Modding erheblich erleichtert). Die Grundbedienung der Maschine:

1, Netzschalter gedrückt

2, Kaltwasserknopf gedrückt (er zerstreut sofort Wasser zur Schale)

3, Heißwasserknopf gedrückt (der Kessel wird ca. 20-60 Sekunden lang aufgeheizt und beginnt, heißes Wasser in die Tasse abzugeben). Die Betriebsanzeige blinkt während der Standby-Zeit rot und leuchtet dann dauerhaft grün, wenn der Kessel betriebsbereit ist.

Dieses Gerät kann auch die folgenden Fehler erkennen:

Wassertank ist leer

Getränkehalter ist nicht vorhanden

In beiden Fällen blinkt die Betriebsanzeige zwischen rot / grün.

Schritt 3: Hardware-Änderungen

In diesem Artikel werde ich nicht näher auf das Zerlegen und Zusammenbauen des Gehäuses eingehen, da es auf YouTube Videos dazu gibt. Der Hauptmikroprozessor befindet sich direkt unter dem Bedienfeld, in dem sich die beiden Schalter befinden. Der Kessel ist auf der rechten Seite des Gehäuses von allem anderen getrennt, die Pumpen- und Stromversorgungsblende befindet sich auf der linken Seite.

Kaffeemaschine ist eine Hochleistungsumgebung für Elektronik, keine der Seiten ist perfekt geeignet, um eine Schaltung zu integrieren. Die rechte Seite am Kessel hat mehr Platz, aber Sie werden mit Wärme umgehen, offensichtlich könnte der Kreislauf die Kesselplatte nicht berühren oder sogar in der Nähe sein. Ich habe mich für die Stromversorgungs- / Pumpenseite entschieden, aber hier muss man mit starken Resonanzen umgehen, die durch den Betrieb der Membranpumpe verursacht werden und den Steuerkreis zerstören oder die Drähte mit der Zeit aus ihren Anschlüssen rutschen lassen können.

Das Netzteilfeld enthält nichts Nützliches, kann jedoch verwendet werden, um stabile + 5V (ein Daumen höher für diese Maschine) abzuleiten, die direkt mit dem VIN-Pin des Arduino verbunden werden können, indem der integrierte Spannungsregler umgangen wird.

Schnelle Hardwareliste (nicht vollständige Stückliste, enthält keine Grundlagen):

  1. Dolce Gusto Circulo vollautomatische Version
  2. 5V 4 Kanal Relaismodul mit Optokoppler für PIC AVR DSP (ich empfehle die Verwendung von 4x SIP-1A05 Reed Switch Relay)
  3. Arduino Micro (Ich schlage vor, SparkFun Pro Micro oder neuer zu verwenden)
  4. 2 STÜCKE 4n35 FSC Optokoppler Fototransistor
  5. 1/2 "Elektromagnetventil Für Wasser Luft N / C Normalerweise Geschlossen DC 12V
  6. Ultraschallmodul HC-SR04 Entfernungsmesssensor (kaufen Sie einige Extras, Sie werden später sehen, warum)
  7. 2pcs Regentropfen-Feuchtigkeits-Erkennungs-Sensor-Modul-Regen-Erkennung für Arduino
  8. 1 Xbee
  9. Rohrverschraubungen für Wasserblöcke (können je nach Haus variieren, am besten im Baumarkt kaufen und dort vor dem Kauf zusammenbauen)

Schritt 4: Hauptanschlüsse und die Steuerplatine

Folgende Schaltungspunkte müssen angeschlossen werden:

1, heißer Knopf

2, kalte Taste

3, rote LED

4, führte Grün

5, Hauptschalter ein

6, Shared GND

Leider habe ich meine Notizen / Bilder verloren, auf denen ich diese auf der Platine verlöten kann, aber alle können mit einem Multimeter leicht zurückverfolgt werden (verwenden Sie einfach den Diodentestmodus, um die Drähte zurück zu verfolgen). Das Löten war nicht zu hart, wählen Sie Punkte mit SMD-Beinen und löten Sie die Drähte dort.

Die roten / grünen LEDs befinden sich am Netzschalter nebeneinander. Sie werden benötigt, um Maschinenzustände zu bestimmen (eingeschaltet, kaffeebereit (Boiler aufgeheizt), Fehler). Ich habe sie direkt von der Hauptplatine entfernt, weil es schwierig ist, mit dem kleinen Stromkreis um den Netzschalter herumzuspielen.

Ich habe 4N35s Optokoppler verwendet, um eine sichere Schnittstelle mit dem Arduino herzustellen und die LED-Zustände zu lesen. Die ursprüngliche Idee war, 5 von ihnen zu verwenden und sowohl die Ablesungen als auch die Schalterkontrollen durchzuführen (machen Sie eine völlig stille Schaltung). Leider konnte dieser Chip keinen ausreichenden Widerstand erzeugen, um einen Tastendruck zu emulieren, so dass ich gezwungen war, Relais zu verwenden. Ich habe das generische 4-Kanal-Relaismodul verwendet, was ich in der Hand hatte, aber wenn ich dieses Projekt wiederholen müsste, würde ich nur kleine Reed-Relais (SIP-1A05 Reed Switch Relay mit internen Flyback-Dioden) verwenden, die direkt an den Ausgang des Arduino angeschlossen werden können Stifte (~ 7mA Last), damit alles auf eine 2-Ebenen-Platinenstruktur gelegt werden kann.

Die 5 kleinen Kabel können neben den Stromkabeln unter der Versorgungsplatine leicht heruntergezogen werden.

Um den Platz in der Maschine effizienter zu nutzen, habe ich beschlossen, die Elektronik in zwei Hauptfelder aufzuteilen:

Die linke ist die Hauptsteuerkarte, die rechte (was ich die Kommunikationskarte nenne) hält den Xbee und obwohl es auf dem Bild nicht gezeigt ist, sind die 2 Wassersensoren (zur Überlauferkennung) dahinter eingeklemmt. Auf der Oberseite sind die Echtzeituhr (optional für die Betriebszeit :) und die 4-Kanal-Relaisplatine, die sich neben der Pumpe unten befindet, in Schwamm eingewickelt, ebenfalls ein wenig geklebt, um vor Resonanzen zu schützen.

Für die Kommunikationsplatine habe ich mich nicht darum gekümmert, dass die Platine nur aus einem normalen Steckbrett besteht, da dort nicht viel los ist. Es hat 6 Verbindungen zur Hauptplatine:

Vcc (5V), GND, Xbee (TX), Xbee (RX), Wassersensor1 (Daten), Wassersensor2 (Daten)

Schritt 5: Wasserflusskontrolle und Nachfüllmechanismus

Ich habe diese Maschine mit Blick auf die Sicherheit entworfen, sodass Angreifer / Störungen keine ernsthaften Wasserschäden im Haus verursachen können, da die Maschine rund um die Uhr an den Wasserhahn und das Internet angeschlossen ist. Dies ist, was die folgende 555 Schutzschaltung oben auf dem Solenoid tut.

Beachten Sie auch, dass der Magnet mit einer 12-V-Stromversorgung betrieben wird, was ich immer noch geschafft habe, in den Boden der Kaffeemaschine neben der Pumpe und der Relaisplatine zu drücken. Um keine Energie zu verschwenden, schaltet die 4-Kanal-Relaiskarte die 230-V-Leitung direkt auf den Adapter, der dann den Elektromagneten einschaltet. Es gibt natürlich einige Mikrosekunden Ausschaltverzögerung, die Sie einrechnen müssen, damit das Magnetfeld sowohl am Magneten als auch am Adapter beim Ziehen des Steckers zusammenbricht.

Ich benutze eine 3,5-mm-Standardbuchse, um den externen Wasserblock mit einem langen 3-m-Kabel und einem PVC-Rohr mit kleinem Durchmesser zu verbinden, das vom Block zur Kaffeemaschine austritt.

Der obere Teil des Wassertanks wird zur Aufnahme dieses Rohrs ausgebohrt, das dann zum Boden des Tanks hinuntergeführt wird. Ich möchte darauf hinweisen, dass es sehr wichtig ist, das Rohr seitlich nach unten zu führen, ohne durch die Mitte zu gehen und die Ultraschallsensoren zu stören.

Nach dem Einschalten des Solenoids wird der Stromkreis nach ca. 4 Sekunden automatisch abgeschaltet (das sollte mehr als genug Zeit sein, um den Tank voll zu füllen) und bleibt bis zum nächsten Einschaltzyklus in diesem Zustand. Diese Schaltung ist die letzte Verteidigungslinie gegen Störungen und es arbeitet völlig eigenständig von der Kaffeemaschine. Wenn das Relais in der Maschine ausfällt und geschlossen bleibt, kann das Wasser das Haus überfluten. Mit diesem Schutz kann es niemals passieren.

Wenn Ihnen dies immer noch nicht ausreicht oder Sie das Wasser nicht schließen können oder nicht mit Wasserblöcken herumtollen möchten, schauen Sie sich mein WasserStation-Projekt an, das genau dafür gebaut wurde, um den kleinen Wassertank der Kaffeemaschine zu erweitern.

Schritt 6: Hochwassererkennung

Es gibt 2 zusätzliche Wassersensoren zum Schutz:

  • Sensor1: an der Rückseite des Tanks zur Überlauferkennung des Tanks
  • Sensor2: an der Unterseite der Kaffeemaschine zur Erkennung eines Tassenüberlaufs

Diese beiden Sensoren lösen eine Unterbrechung aus, die das Wasser sofort abschaltet, die Fehleranzeige einschaltet und die Programmausführung abbricht, um einen Angriff wie das Zubereiten einer Million Kaffees und das Überschwemmen des Hauses auf diese Weise zu verhindern. Nach dem Beenden des Programms reagiert das Gerät nicht mehr und muss manuell aus- und wieder eingeschaltet werden.

Falls Sie sich fragen, was passieren würde, wenn der Ultraschallsensor überflutet würde (es geschah einmal :))

Es gab ein paar Tage lang so viel Wasser zurück, aber selbst nachdem es ausgetrocknet war, war es nie wieder genau und ich musste es ersetzen. Die Maschine wurde so konstruiert, dass sie mit kaltem Leitungswasser betrieben werden kann, damit der Sensor nicht durch Heißdampf beschädigt wird. Dieser Sensor ist nur genau, bis der Wasserstand 2-3 cm von ihm entfernt ist.

Die elliptische Form des Tanks machte die Berechnung des Wasserstandes schwierig, so dass sie gemessen und fest in das Programm einprogrammiert wurden, um Prozentsätzen zu entsprechen.

Schritt 7: Testen und Endmontage

Die Maschine befindet sich im Endzustand und verbirgt fast alle Spuren von Hackerangriffen. Wenn die 3 Statusanzeigen und der USB-Debug-Port nicht vorhanden wären, könnten Sie nicht sagen, dass im Inneren noch etwas los ist, obwohl sogar ein WLAN-Anschluss möglich ist Quake Server :)

Wenn ich Geräte ändere, habe die manuelle Verwendung immer höchste Priorität. Nach dem Hack ist die Maschine für jeden voll einsatzbereit, außer der Wassertank kann nicht einfach entfernt werden. Sofern Sie nicht den gesamten Teil der Wasserautomatisierung abgeschlossen haben, kann die Maschine an dieser Stelle nur mit einer Kombination aus kleinem Rohr und Trichter befüllt werden.

Schritt 8: Kaffeesteuerungscode

Den vollständigen Arduino-Quellcode finden Sie weiter unten.

Kurze Erklärung des Codes:

Die Hauptschleife ruft die Funktion xcomm () auf, die für die Befehlsverarbeitung, die Zubereitung des Kaffees und das Ein- und Ausschalten der Maschine zuständig ist.

Der Code darunter wird nur bei manueller Steuerung erreicht. Es erhöht einen Statistikzähler, um zu verfolgen, wie viele Kaffees gemacht wurden, und füllt den Wassertank automatisch auf.

Befehle können über den Xbee oder über den USB-Port gesendet werden (Debug muss zu Beginn aktiviert sein).Wenn eine Verbindung hergestellt wird, blinkt die orangefarbene LED eine Sekunde lang, um die Netzwerkaktivität anzuzeigen. Die folgenden Befehle sind implementiert:

1, CMSTAT - Abfrage von Statistiken von der Maschine

Die Maschine speichert Statistiken darüber, wie viele warme / kalte / manuelle Kaffeesorten hergestellt wurden, und erhält auch die Betriebszeit vom RTC, die nach 3 Tagen nicht überläuft

2, CMWSTART - beginnt mit der Zubereitung von Kaffee und heißen Getränken mit heißem Wasser

3, CMCSTART - Beginn der Zubereitung von Eistee und kalten Getränken mit kaltem Wasser

Der Heiß- und Kaltprozess beginnt mit dem Aufrufen der Standby () -Funktion, die weitere Überprüfungen durchführt und dann einen Druck auf den Netzschalter auslöst. Danach wartet das Programm auf das grüne Licht (wenn der Heizkessel aufgeheizt ist) und emuliert dann den Tastendruck warm / kalt. Danach wartet es 50 Sekunden (das ist mehr als genug für die größte Tasse Kaffee) und schaltet dann den Strom aus. Dies wäre nicht einmal nötig, da sich diese hervorragende Maschine 5 Minuten nach dem Zubereiten des Kaffees automatisch ausschaltet, aber warum Strom verschwenden? Übrigens ist der Standby-Stromverbrauch der Maschine auch nach der Änderung weniger als 2 Watt.

Wassernachfüllung und Sicherheit

Diese Maschine wurde mit Blick auf die Sicherheit entwickelt, sodass ein Angreifer, der die Kontrolle erlangt, nicht das ganze Haus mit Wasser überfluten kann. Ein Hardwareausfall würde auch nicht zu ernsthaften Schäden führen. Neben den Hardware-Sensoren sind im Code Schutzvorrichtungen für die Nachfüllung eingebaut. Ein Zähler, der die ISR-Routine auslöst, wenn die Maschine nicht innerhalb von x Sekunden nachgefüllt wird (dies kann beispielsweise passieren, wenn der Ultraschallsensor eine Fehlfunktion aufweist und nach x Sekunden 20% ausgibt, sobald das Nachfüllen eingeleitet wird).

Es findet keine Authentifizierung statt. Jeder kann das Gerät innerhalb der Funkreichweite verwenden, der die Befehle kennt. Daher habe ich die standardmäßige Xbee-Piconetz-ID in etwas anderes geändert. Außerdem kann die ERR_INVALIDCMD auskommentiert werden und das Gerät ignoriert alle unbekannten Befehle.

Bugs

Doppelter Kaffeefehler: Das Ärgerlichste an diesem Fehler ist, dass er einige Monate nach der Verwendung des Computers mit demselben Code auftrat. Nachdem der Kaffeebefehl ausgegeben wurde, kochte er den Kaffee, schaltete ihn aus und wieder ein und kochte 1 weiteren Kaffee mit demselben Benutzer.

Ich musste mit dem Debuggen der Befehlsduplizierung auf Android-Ebene beginnen, da ich das erneute Senden an den Code im Falle eines Paketverlusts implementiert habe. Es stellte sich heraus, dass weder Android, C-Control-Software noch der Linux-Kernel auf dem raspi2 dafür verantwortlich waren, sondern das Xbee.

Nachdem auf dem Steuerknoten das Echo „CMCSTART“> / dev / ttyACM0 ausgegeben wurde, wird es zweimal am anderen Ende ausgegeben. Ich kam zu dem Schluss, dass mein 2,4-GHz-Frequenzspektrum in meinem Haus von den vielen Funkgeräten in diesem Bereich in Anspruch genommen wurde, was dazu führte, dass ein Xbee die Funkebene erneut sendete und die Daten zweimal (nicht immer) gesendet wurden. Sobald der erste Befehl in der machine-Funktion xcomm () eingegangen ist, wurde die Verarbeitung gestartet. Ein zweiter Befehl ist jedoch eingegangen, nachdem er im Xbees-Puffer gewartet hat, und als die Schleife beendet wurde, wurde mit der Verarbeitung des zweiten Befehls begonnen. Um dieses Problem zu umgehen, habe ich 3 Schwellenwerte in den Code eingefügt, die es unmöglich machen, mehr als 1 Kaffee in 2 Minuten zuzubereiten. Es gibt auch eine Begrenzung für den CMSTAT, aber um den C / Android-Steuercode nicht zu stören, werden die Antworten einfach 2 Sekunden lang unterdrückt.

Die letzte Schwelle wurde für den manuellen Kaffeezähler eingegeben, da die Maschine, sobald sie den Bereitschaftszustand erreicht hat (Kessel aufgeheizt, grünes Licht), das grüne Ereignis hunderte Male protokolliert hat, um die Kaffeezählung zu erhöhen.

Schritt 9: Überlegungen zum Design und abschließende Gedanken

Nach vielen Problemen durch die Xbee-Kommunikation würde ich Xbee für dieses Projekt nicht empfehlen. Verwenden Sie entweder das billige 433-MHz-Standardradio mit VirtualWire und niedrigeren Bps für mehr Stabilität oder binden Sie einen Raspberry PI Zero mit Wifi-Verbindung direkt in die Kaffeemaschine ein.

Wie das Datum zeigt, ist es ein altes Projekt, daher entschuldige ich mich für kleine Details, die fehlen, wie die Verbindung vom Steuerkreis zu den präzisen Pin-Beinen auf dem Motherboard. Für dieses Projekt ist ein gewisses Maß an technischem Wissen erforderlich. Wenn Sie Fehler finden oder zu diesem Tutorial beitragen möchten, lassen Sie es mich bitte wissen.

Die Steuerungssoftware, Methoden zur Sprachsteuerung, ist ein weiterer Teil, der es ermöglicht, Ihren Kaffee mit nur einem Sprachbefehl zuzubereiten, bevor Sie überhaupt aus dem Bett steigen.

Ich habe jetzt die Dokumentation meines Wasserspeichersystems (WasserStation) fertiggestellt und das aktualisiert CoffeeControlCode auf die neueste Version, die auch die automatische Nachfüllung beinhaltet. Wenn Sie dieselbe Maschine für den Bau verwenden, funktioniert die Nachfüllung einwandfrei (ohne Änderung des Codes), da die Wasserstände auf den Wassertank des Circolo kalibriert wurden.