Inhaltsverzeichnis:

JavaStation (selbstnachfüllende vollautomatische IoT-Kaffeemaschine) - Gunook
JavaStation (selbstnachfüllende vollautomatische IoT-Kaffeemaschine) - Gunook

Video: JavaStation (selbstnachfüllende vollautomatische IoT-Kaffeemaschine) - Gunook

Video: JavaStation (selbstnachfüllende vollautomatische IoT-Kaffeemaschine) - Gunook
Video: #6 RedStone-Bauten ~German~ Vollautomatischer Ofen (Minecraft) 2024, Juli
Anonim
JavaStation (Selbstnachfüllende vollautomatische IoT-Kaffeemaschine)
JavaStation (Selbstnachfüllende vollautomatische IoT-Kaffeemaschine)
JavaStation (Selbstnachfüllende vollautomatische IoT-Kaffeemaschine)
JavaStation (Selbstnachfüllende vollautomatische IoT-Kaffeemaschine)
JavaStation (Selbstnachfüllende vollautomatische IoT-Kaffeemaschine)
JavaStation (Selbstnachfüllende vollautomatische IoT-Kaffeemaschine)

Das Ziel dieses Projekts war es, eine vollautomatische, sprachgesteuerte Kaffeemaschine herzustellen, die sich automatisch mit Wasser füllt und alles, was Sie wirklich tun müssen, ist, die Gäste zu ersetzen und Ihren Kaffee zu trinken;)

Schritt 1: Einführung

Einführung
Einführung

Da dies mein zweiter Kaffee-Mod war, habe ich dabei viel gelernt, insbesondere, dass je komplexer Sie die Maschine modifizieren, desto mehr Probleme / Bugs werden Sie im täglichen Betrieb haben. Die vorherige Maschine war nur eine einfache alte 1-Schalter-Kaffeemaschine mit einem Relais-Mod.

Die Circolo (vollautomatische Version) ist die Top-Premium-Maschine von Dolce Gusto. Ich musste Stunden damit verbringen, nach der richtigen Maschine zu suchen, da alle anderen Maschinen dieser Serie den oberen mechanischen Hebel verwenden, um zwischen Kalt- und Warmwasserfluss zu wechseln, wie auf dem Bild gezeigt.

Schritt 2: Wählen Sie die richtige Maschine

Wählen Sie die richtige Maschine
Wählen Sie die richtige Maschine

Meine Basismaschine ist nicht nur vollautomatisch, sondern hat bemerkenswerte Funktionen wie das automatische Abschalten nach 5 Minuten und das Erinnern an die letzte Kaffeemenge (was später beim Modding die Dinge viel einfacher macht). Die grundlegende Bedienung der Maschine:

1, Power-Taste gedrückt

2, Kaltwassertaste gedrückt (es verteilt sofort Wasser in die Tasse)

3, Heißwasserknopf gedrückt (er heizt den Boiler ~20-60 Sek. auf und beginnt, heißes Wasser in die Tasse abzugeben) Die Power-LED blinkt während der Standby-Zeit rot und leuchtet dann dauerhaft grün, wenn der Boiler bereit ist.

Dieses Gerät kann auch die folgenden Fehler erkennen:

Wassertank ist leer

Getränkehalter ist nicht vorhanden

In beiden Fällen flackert die Netzanzeige zwischen Rot/Grün.

Schritt 3: Hardware-Änderungen

Hardware-Änderungen
Hardware-Änderungen

In diesem Schreiben werde ich nicht auf die Demontage und Wiedermontage des Gehäuses eingehen, da es Videos dazu auf YouTube gibt. Der Hauptmikroprozessor ist direkt unter der Kopfplatte versteckt, wo sich die 2 Schalter befinden. Der Kessel befindet sich auf der rechten Seite des Gehäuses getrennt von allem anderen, die Pumpen- und Stromversorgungsblende befindet sich auf der linken Seite.

Kaffeemaschinen sind eine Hochleistungsumgebung für die Elektronik, keine der Seiten ist perfekt geeignet, um eine Schaltung zu integrieren. Rechts am Kessel hat man mehr Platz, aber Sie werden mit Wärme umgehen, offensichtlich konnte der Kreislauf die Kesselplatte nicht berühren oder auch nur in der Nähe sein. Ich habe die Stromversorgungs- / Pumpenseite gewählt, aber hier müssen Sie sich mit starken Resonanzen auseinandersetzen, die vom Betrieb der Membranpumpe herrühren, die den Steuerkreis zerstören / dazu führen können, dass die Drähte mit der Zeit aus ihren Anschlüssen rutschen.

Das Netzteil enthält nichts Nützliches, kann aber verwendet werden, um ein stabiles +5 V (ein weiterer Daumen hoch für diese Maschine) abzusaugen, das direkt an den VIN-Pin des Arduino unter Umgehung des Bordspannungsreglers angeschlossen werden kann.

Schnelle Hardwareliste (keine 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 schlage vor, 4x SIP-1A05 Reed-Switch-Relais zu verwenden)
  3. Arduino Micro (ich schlage vor, in Zukunft SparkFun Pro Micro oder neuer zu verwenden)
  4. 2PCS 4n35 FSC Optokoppler Fototransistor
  5. 1/2" elektrisches Magnetventil für Wasserluft N/C normalerweise geschlossen DC 12V
  6. Ultraschallmodul HC-SR04 Distanzmesswandler Sensor (kaufen Sie einige Extras, Sie werden später sehen warum)
  7. 2pcs Regentropfen-Feuchtigkeitserkennungs-Sensormodul Regenerkennung für Arduino
  8. 1 Xbee
  9. Rohrfittings für Wasserblöcke (kann je nach Haus variieren, am besten im Baumarkt kaufen und vor dem Kauf dort zusammenbauen)

Schritt 4: Hauptanschlüsse und das Controller Board

Hauptanschlüsse und das Controller Board
Hauptanschlüsse und das Controller Board
Hauptanschlüsse und das Controller Board
Hauptanschlüsse und das Controller Board
Hauptanschlüsse und das Controller Board
Hauptanschlüsse und das Controller Board

Folgende Schaltungspunkte müssen angeschlossen werden:

1, heißer knopf

2, kalter knopf

3, rote led

4, Grüne LED

5, Haupteinschalttaste

6, Gemeinsamer GND

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

Die roten/grünen LEDs befinden sich beide nebeneinander am Netzschalter. Sie werden benötigt, um Maschinenzustände zu ermitteln (eingeschaltet, Kaffeebereit (Boiler aufgeheizt), Fehler). Ich habe sie direkt von der Hauptplatine abgenommen, da es schwierig ist, an der kleinen Schaltung um den Netzschalter herumzufummeln.

Ich habe die Optokoppler von 4N35 verwendet, um sicher mit dem Arduino zu kommunizieren und die Zustände der LEDs zu lesen. Die ursprüngliche Idee war, 5 davon zu verwenden und sowohl die Messwerte als auch die Schaltersteuerungen durchzuführen (eine völlig geräuschlose Schaltung zu erstellen). Leider konnte dieser Chip keinen ausreichend niedrigen Widerstand erzeugen, um einen Tastendruck zu emulieren, so dass ich gezwungen war, Relais zu verwenden. Ich habe das generische 4-Kanal-Relaismodul verwendet, das ich in der Hand hatte, aber wenn ich dieses Projekt wiederholen müsste, würde ich nur kleine Reed-Relais (SIP-1A05 Reed-Switch-Relais mit internen Flyback-Dioden) verwenden, die direkt an den Ausgang des Arduino angeschlossen werden können Pins (~ 7mA Last), damit alles auf eine 2-Ebenen-Platinenstruktur gelegt werden kann.

Die 5 kleinen Kabel lassen sich neben den Stromkabeln ganz einfach unter der Versorgungsplatine nach unten ziehen.

Um den Platz in der Maschine effizienter zu nutzen, habe ich beschlossen, die Elektronik auf 2 Hauptpanels aufzuteilen:

Die linke ist die Hauptsteuerplatine, die rechte (was ich die Kommunikationsplatine nenne) hält den Xbee und obwohl es auf dem Bild nicht gezeigt ist, sind die 2 Wassersensoren (zur Überlauferkennung) dahinter gequetscht. Oben die Echtzeituhr (optional für Uptime:)) und die 4-Kanal-Relaisplatine neben der Pumpe unten in Schwamm gewickelt, ebenfalls etwas geklebt, um die Resonanz zu schützen.

Für die Kommunikationsplatine habe ich mich nicht darum gekümmert, PCB nur mit einem normalen Steckbrett zu machen, da dort nicht viel los ist. Es hat 6 Anschlüsse zum Mainboard:

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

Schritt 5: Wasserflusskontrolle und der Nachfüllmechanismus

Wasserdurchflusskontrolle und der Nachfüllmechanismus
Wasserdurchflusskontrolle und der Nachfüllmechanismus
Wasserdurchflusskontrolle und der Nachfüllmechanismus
Wasserdurchflusskontrolle und der Nachfüllmechanismus
Wasserdurchflusskontrolle und der Nachfüllmechanismus
Wasserdurchflusskontrolle und der Nachfüllmechanismus

Ich habe diese Maschine im Hinblick auf die Sicherheit entwickelt, die es Angreifern / Fehlfunktionen unmöglich macht, ernsthafte Wasserschäden im Haus zu verursachen, da die Maschine rund um die Uhr sowohl an den Wasserhahn als auch an das Internet angeschlossen wäre. Dies ist, was die folgende 555-Schutzschaltung oben auf dem Solenoid macht.

Beachten Sie auch, dass das Solenoid mit einer 12-V-Stromversorgung betrieben wird, die ich noch neben der Pumpe und der Relaisplatine in den Boden der Kaffeemaschine quetschen konnte. Um keinen Strom zu verschwenden, schaltet die 4-Kanal-Relaisplatine das 230-V-Netz direkt auf den Adapter, der dann den Magneten einschaltet. Es gibt natürlich einige Mikrosekunden Ausschaltverzögerung, die Sie für den Zusammenbruch des Magnetfelds sowohl am Magneten als auch am Adapter beim Ziehen des Steckers einrechnen müssen.

Ich verwende eine Standard-3,5-mm-Buchse, um den externen Wasserblock mit einem langen 3 m-Kabel und einem PVC-Rohr mit kleinem Durchmesser zu verbinden, das aus dem Block zur Kaffeemaschine führt.

Die Oberseite des Wassertanks wird aufgebohrt, um dieses Rohr aufzunehmen, das dann bis zum Boden des Tanks geführt wird. Ich würde anmerken, 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 Magnetventils schaltet der Stromkreis ihn automatisch nach ~ 4 Sekunden ab (was mehr als genug Zeit sein sollte, um den Tank voll zu füllen) und bleibt in diesem Zustand bis zum nächsten Einschaltzyklus. Dieser Kreislauf ist die letzte Verteidigungslinie gegen Fehlfunktionen und funktioniert völlig autark von der Kaffeemaschine. Wenn das Relais in der Maschine ausfallen und geschlossen bleiben würde, könnte das Wasser das Haus überfluten, mit diesem Schutz kann es nie passieren.

Wem das immer noch nicht reicht oder das Wasser nicht zu schließen ist oder du nicht mit Wasserblöcken herumfummeln willst, schau dir mein WasserStation-Projekt an, das genau dafür gebaut wurde, um den kleinen Wassertank der Kaffeemaschine zu erweitern.

Schritt 6: Hochwassererkennung

Hochwassererkennung
Hochwassererkennung
Hochwassererkennung
Hochwassererkennung
Hochwassererkennung
Hochwassererkennung

Zum Schutz gibt es 2 zusätzliche Wassersensoren:

  • Sensor1: an der Rückseite des Tanks zur Überlauferkennung aus dem Tank
  • Sensor2: an der Unterseite der Kaffeemaschine zur Erkennung von Tassenüberlauf

Beide Sensoren lösen einen Interrupt aus, der das Wasser sofort abschaltet, die Fehlerlampe einschaltet und die Programmausführung abbricht, um einen Angriff wie das Kochen von Millionen Kaffees und die Überflutung des Hauses auf diese Weise zu verhindern. Nach dem Beenden des Programms reagiert die Maschine auf nichts mehr und muss manuell aus- und wieder eingeschaltet werden.

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

Es gab ein paar Tage lang so einen Wasserstand zurück, aber selbst nachdem es ausgetrocknet war, war es nie wieder genau und ich musste es ersetzen. Die Maschine wurde so konzipiert, dass sie mit kaltem Leitungswasser betrieben wird, so dass kein Dampfen von heißem Wasser den Sensor beschädigen würde. Dieser Sensor ist nur genau, bis der Wasserstand 2-3 cm davon entfernt ist.

Die elliptische Form des Tanks erschwerte die Berechnung des Wasserstands, so dass sie gemessen und in das Programm hartcodiert wurden, um den Prozentsätzen zu entsprechen.

Schritt 7: Testen und Endmontage

Prüfung und Endmontage
Prüfung und Endmontage
Prüfung und Endmontage
Prüfung und Endmontage
Prüfung und Endmontage
Prüfung und Endmontage

Die Maschine in ihrem endgültigen Zustand, der die Spuren von Hacking fast vollständig verbirgt, und wenn die 3 Statusanzeige-LEDs und der USB-Debug-Port nicht vorhanden wären, könnten Sie nicht sagen, dass im Inneren noch etwas vor sich geht, obwohl es sogar ein angeschlossenes Wifi enthalten könnte Quake-Server:)

Wenn ich Geräte ändere, habe ich immer die manuelle Verwendung oberste Priorität. Nach dem Hacken ist die Maschine für jedermann so wie sie war, vollständig benutzbar, außer dass der Wassertank nicht einfach entfernt werden kann. Sofern Sie nicht den kompletten Teil der Wasserautomatisierung fertigstellen, kann die Maschine an dieser Stelle nur mit einer kleinen Kombination aus Rohr + Trichter befüllt werden.

Schritt 8: Kaffeesteuercode

Kaffeesteuerungscode
Kaffeesteuerungscode

Den vollständigen Arduino-Quellcode finden Sie unten im Anhang.

Kurze Erklärung des Codes:

Die Hauptschleife ruft die Funktion xcomm() auf, die für die Befehlsverarbeitung, die Kaffeezubereitung und das Ein- und Ausschalten der Maschine verantwortlich ist.

Der darunter liegende Code wird nur bei manueller Steuerung erreicht. Es erhöht einen Statistikzähler, um zu verfolgen, wie viele Kaffees zubereitet 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 die Kommunikation von einem der beiden eingeht, blinkt die orangefarbene LED eine Sekunde lang, um die Netzwerkaktivität anzuzeigen. Folgende Befehle sind implementiert:

1, CMSTAT – Statistik vom Gerät abfragen

Die Maschine speichert Statistiken darüber, wie viele heiße/kalte/manuelle Kaffees zubereitet wurden und erhält auch die Betriebszeit von der RTC, die nach 3x Tagen nicht überläuft und somit Jahre dauern kann:P

2, CMWSTART – beginnt mit der Zubereitung von Kaffee und Heißgetränken mit heißem Wasser

3, CMCSTART – beginnt mit der Zubereitung von Eistee und kalten Getränken mit kaltem Wasser

Die heißen und kalten Prozesse beginnen mit dem Aufrufen der Standby()-Funktion, die weitere Prüfungen durchführt und dann einen Einschaltknopfdruck auslöst. Danach wartet das Programm auf das grüne Licht (wenn der Kessel aufgeheizt ist) und emuliert dann das Drücken der Heiß/Kalt-Taste. Danach wartet es 50 Sekunden (was selbst für die größte Tasse Kaffee mehr als genug ist) und schaltet dann den Strom aus. Dies wäre nicht einmal notwendig, da sich diese ausgezeichnete Maschine 5 Minuten nach der Kaffeezubereitung automatisch abschaltet, aber warum Strom verschwenden? Der Standby-Stromverbrauch der Maschine liegt übrigens auch nach dem Umbau unter 2 Watt.

Wassernachfüllung und Sicherheit

Diese Maschine wurde im Hinblick auf die Sicherheit entwickelt, so dass es für einen Angreifer, der die Kontrolle erlangt, unmöglich ist, das ganze Haus mit Wasser zu überfluten. Auch ein Hardwareausfall würde keine ernsthaften Schäden nach sich ziehen. Neben den Hardwaresensoren sind in den Code für das Nachfüllen Schutzmaßnahmen integriert. Ein Zähler, der die ESR-Routine auslöst, wenn die Maschine nicht innerhalb von x Sekunden nachgefüllt wird (dies könnte beispielsweise passieren, wenn der Ultraschallsensor eine Fehlfunktion hat und nach x Sekunden nach Einleitung des Nachfüllens 20% ausgibt).

Es gibt keine Authentifizierung, jeder kann die Maschine in Funkreichweite verwenden, die die Befehle kennt, also habe ich die Standard-Xbee-Piconet-ID in etwas anderes geändert, auch ERR_INVALIDCMD kann auskommentiert werden und die Maschine ignoriert alle unbekannten Befehle.

Fehler

Doppelter Kaffee-Bug: Das nervigste an diesem Fehler ist, dass er einige Monate nach der Verwendung der Maschine mit dem gleichen Code auftrat. Nachdem der Kaffeebefehl ausgegeben wurde, kochte es den Kaffee, schaltete es aus und wieder ein und kochte 1 weiteren Kaffee mit demselben Patroon.

Ich musste mit dem Debuggen der Befehlsduplizierung auf Android-Ebene beginnen, da ich das erneute Senden an den Code bei Paketverlust implementiert habe. Es stellte sich heraus, dass dafür weder der Android, die C-Steuerungssoftware oder der Linux-Kernel auf dem raspi2 verantwortlich waren, sondern der Xbee.

Nach der Ausgabe des Echos „CMCSTART“>/dev/ttyACM0 auf dem Kontrollknoten kommt es zweimal zum anderen Ende. Ich kam zu dem Schluss, dass mein 2,4-GHz-Spektrum in meinem Haus durch die vielen Funkgeräte in diesem Bereich gesättigt wurde, was dazu führte, dass ein Xbee eine Art erneutes Senden in der Funkschicht aufrief und die Daten zweimal gesendet wurden (nicht immer). Sobald der erste Befehl in die xcomm()-Funktion der Maschine einging, begann er mit der Verarbeitung, aber ein zweiter kam direkt danach, der im Xbees-Puffer wartete und als die Schleife beendet war, begann er mit der Verarbeitung des zweiten Befehls. Um dieses Problem zu umgehen, habe ich 3 Schwellenwerte in den Code eingeführt, die es unmöglich machen, mehr als 1 Kaffee in 2 Minuten zuzubereiten. Auch der CMSTAT ist begrenzt, aber um den C/Android-Steuercode nicht zu stören, werden die Antworten einfach 2 Sekunden lang unterdrückt.

Der letzte Schwellenwert wurde für den manuellen Kaffeezähler eingegeben, da die Maschine nach Erreichen des Bereitschaftszustands (Boiler aufgeheizt, grünes Licht) das grüne Ereignis Hunderte Male protokolliert hat, um die Kaffeezählung zu erhöhen.

Schritt 9: Designüberlegungen und abschließende Gedanken

Nach vielen Problemen mit der Xbee-Kommunikation würde ich Xbee für dieses Projekt nicht empfehlen. Verwenden Sie entweder das standardmäßige günstige 433Mhz-Funkgerät mit VirtualWire und abgesenkten Bps für Stabilität oder betten 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 wie die Verbindung von der Steuerschaltung zu den präzisen Stiftbeinen auf dem Motherboard fehlen. Dieses Projekt erfordert ein gewisses Maß an technischem Wissen, um es in Eigenregie durchzuführen. Wenn Sie Fehler/Probleme 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 fertig zu haben, noch bevor Sie aus dem Bett steigen.

Ich habe nun die Dokumentation meines Wasserspeichers (WasserStation) abgeschlossen und den CoffeeControlCode auf die neueste Version aktualisiert, 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.

Empfohlen: