DIY TeaMaker

1
DIY TeaMaker
Eichhorn, Philipp Ploner, Alexander
I. Einführung
Tea. Early Grey. Hot.
– Jean-Luc Picard
Kaffeemenschen haben es gut. Es ist nicht nur
mega Hip ein Kaffeeliebhaber zu sein, sondern es gibt
auch eine ganze Reihe cooler Gadgets, die das Herz
eines jeden Kaffeetrinkers höher schlagen lassen. Angefangen bei bunten Coffee-to-go Bechern, bis hin zu
vollautomatischen Kaffeemaschinen, die einem schon
morgens ohne eigenes Tun mit dem herrlichen Geruch
von frisch gemahlenen Bohnen aufwecken.
Teeliebhaber hingegen müssen sich damit begnügen,
frühmorgens mit verschlafenen Augen vor dem Wasserkocher zu stehen und die Ziehzeit abzuwarten, nur
um sich anschließend an einem noch viel zu heißen Tee
die Zunge zu verbrennen.
Wir wollen das ändern! Im Rahmen der Vorlesung
DIY an der FAU Erlangen-Nürnberg haben wir den
ersten Prototypen einer entsprechenden Teemaschine
entworfen: den TeaMaker. Bequem per Smartphone
lässt sich bei ihm eine frische Tasse Tee “bestellen”.
Im Folgendem wird beschrieben, wie der TeaMaker
funktioniert, und welche Bauteile notwendig sind, um
diesen nachzubauen.
Abbildung 1: Der TeaMaker
II. Hardware
In diesem Abschnitt werden die zentralen Hardwarebestandteile des TeaMakers vorgestellt. Die Beschriftungen in Abbildung 1 entsprechen dabei den
nachfolgenden Abschnittsbezeichnern.
A. Teebeutel-Spender
Hier kommen die Teebeutel rein. Durch Drehen des
Spenders fallen die Teebeutel, durch ein Loch in der
Bodenplatte, direkt in die Tasse. Durch Links- bzw.
Rechtsdrehen des Spenders lässt sich dabei jederzeit
zwischen zwei verschiedenen Teesorten wählen.
Der Spender besteht im Wesentlichen aus drei Bauteilen: einer Bodenplatte, einem stehenden Zylinder
mit zwölf Fächern für Teebeutel und einem Schrittmotor. Unter einem der Fächer ist ein Loch, weshalb
effektiv nur elf Fächer genutzt werden können.
Abbildung 2: Der Teebeutelspender an der Maschinenoberseite
2
1) Bodenplatte: Die Bodenplatte ist ein einfaches
Stück Holz mit einem Loch in der Form eines stehenden Teebeutels. Es empfiehlt sich das Loch deutlich
größer als der eigentliche Teebeutel zu gestalten, da
diese sonst leicht beim Drehen des Zylinders stecken
bleiben.
2) Teebeutel-Halter: Der Teebeutel-Halter wurde
im 3D-Drucker am FabLab der FAU entwickelt. Verwendet wurde ein Ultimaker 2 mit Einstellungen auf
“normaler Qualität”. Bei einer Fülldicke von 20%
ergab sich ein Gewicht von 75 Gramm. Die auf
GitHub befindliche Datei teebeutelspender_rad.scad
wurde mit OpenSCAD erstellt und beschreibt die
Form des Halters. Neben dem Hauptzylinder befinden
sich am Rand noch drei kleinere Zylinder mit jeweils
einem Loch. Diese waren ursprünglich als eine Art
Kugellager gedacht, für den Fall, dass die Verbindung
zwischen Teebeutel-Halter und Motor zu instabil ist.
In der Praxis war dies allerdings nicht nötig.
3) Motor: Beim Motor handelt es sich um einen
Schrittmotor 28BYJ-48 mit angeschlossener Antrieb
Modulplatine ULN2003. Die sechs Pins (siehe Tabelle
I) der Steuerungsplatine lassen sich direkt über einen
Raspberry Pi ansteuern.
Pin
+ und IN 1-4
Beschreibung
5 bis 12 V Versorgungsspannung
Ansteuerung der Spulen im Schrittmotor,
siehe auch Datenblatt
Tabelle I: Pin-Belegung am Songle SRD-05VDC-SL-C
Der Motor verfügt über acht Spulenzustände und
besitzt dazu noch ein Getriebe mit einer Getriebeübersetzung von 1 zu 64 (engl. “gear-reduction-ratio”). Für
eine volle Umdrehung sind damit 360◦ /(5.625◦ /64) =
4096 = 512 ∗ 8 Schritte notwendig.
B. Teebeutel-Auffang-Sieb
Damit die Teebeutel nach der Ziehzeit wieder aus
der Tasse entfernt werden können, befindet sich zwischen Tasse und Teebeutel-Spender ein bewegliches
Sieb, welches in die Tasse getaucht werden kann.
Die Teebeutel fallen dort hinein und können nach
der Ziehzeit mittels Schwenkung des Siebes in einen
Auffangbehälter transportiert werden.
1) Servomotor: Ein Servomotor wird verwendet,
um das Teesieb in die Tasse zu schwenken und dieses
wieder herauszunehmen und den Inhalt zu leeren. Der
verwendete Servo benötigt mindestens 135◦ Aktionsradius und genügend Kraft, um den Beutel auswerfen
zu können. Dabei zu beachten ist, dass ein mit Wasser
vollgesogener Teebeutel deutlich schwerer ist, als ein
Abbildung 3: Teebeutel-Auffang-Sieb
Teebeutel direkt aus der Verpackung. Hinzu kommt
natürlich das Gewicht des Siebes.
2) Sieb: Der Sieb stammt aus einer alten Teekanne
und war ursprünglich für loose Teeblätter gedacht. Die
Halterung für das Sieb ist eine dünne Sperrholzplatte
mit passendem Loch in der Mitte, in dem das Sieb mit
Hilfe von kleinen Drähten befestigt wurde. Für das
große Loch im Holz kam eine Lochsäge zum Einsatz,
das Holz selbst wurde mit einer Tischsäge in Form
gebracht.
C. Wasserkocher
Für das heiße Wasser haben wir eine alte Kaffeemaschine zerlegt, die über einen Schlauch heißes Wasser
direkt in die Tasse leitet. Wie die meisten einfachen
Kaffeemaschinen besitzt diese einen Durchlauferhitzer, welcher das Wasser direkt beim Durchlaufen des
Schlauches erhitzt, und anschließend über den dabei
enstandenen Druck durch den Schlauch pumpt.
1) Die Kaffeemaschine: Wir haben eine gebrauchte
Kaffeemaschine über ebay-Kleinanzeigen gekauft und
zerlegt. Diese bestand zunächst aus einem Wassertank, einem An-/Ausschalter, einer beheizten Platte
für den Kaffeepot und einem Kaffeefilter, durch den
das Wasser in den Pot läuft. Für den TeaMaker
wurde alles was nicht zur Elektronik bzw. dem Durchlauferhitzer gehört mit einer einfachen Handsäge abgeschnitten, und anschließend das Ende des Schlauches
freigelegt. Dieser wurde mit einem lebensmittelechtem
und hitzebeständigem Schlauch aus Silikon verlängert,
3
Abbildung 4: Detektorplatte mit Taster (vorne) und
Status-LED (mittig)
und somit das Wasser in die Tasse gelenkt. Ein einfacher PVC-Schlauch aus dem Baumarkt funktioniert
an dieser Stelle nicht, da dieser bei hohen Temperaturen zu biegsam wird und Schadstoffe an das Wasser
abgibt.
2) Steuerung: Die Kaffeemaschine verfügt über
einen Schalter der direkt den Durchlauferhitzer ansteuert und dafür sorgt, dass heißes Wasser durch den
Schlauch gepumpt wird. Damit sich das Wasser direkt
über den Raspberry Pi steuern lässt, ohne manuell
den Schalter bedienen zu müssen, haben wir uns
von einem erfahrenen Elektriker (Vorsicht, 230 V!) ein
Relais in die Kaffeemaschine einbauen lassen, welches
den Strom an der Kaffeemaschine ein- und ausschalten
kann. Bei dem Relais handelt es sich um ein Songle
SRD-05VDC-SL-C mit 2 Kanälen und den in Tabelle II
dargestellten Anschlüssen.
Abkürzung
COM
NC
NO
Volle Bezeichnung
Common
Normally Closed
Normally Open
Pi verbunden. Die Stromversorgung erfolgt über die
3.3 V des Rasperry Pi. Um Fehlinterpretationen durch
eine fehlende Masseverbindung bei offenem Taster zu
verhindern, wurden die 3.3 V nicht direkt über den
Taster mit dem GPIO-Eingang verbunden. Stattdessen wurden die 3.3 V über den Widerstand mit dem
GPIO-Pin verbunden, so dass diese immer anliegen.
Im geschlossenen Zustand des Tasters wird der GPIOPin mit einer Masseleitung verbunden, so dass das
Signal auf 0 V gezogen wird. Dies erfordert zwar eine
negation bei der Auswertung mittels Software, garantiert dafür aber zu jeder Zeit ein definiertes Signal.
2) Statusanzeige: Als Design-Element, und um den
Maschinenstatus direkt am Gerät ausgeben zu können, wurde in die transparente Plexiglasscheibe eine
LED integriert. Die möglichen Zustände sind in Tabelle III aufgeführt.
LED-Status
Aus
Blitzt selten
Blinkt schnell
An
Tabelle III: LED-Stati
Angeschlossen ist die LED über einen GPIO-Pin des
Raspberry Pi. Zusätzlich wird ein Vorwiderstand verwendet, um weder LED noch Raspberry Pi durch zu
hohe Ströme zu beschädigen. Die Werte für ULED und
ILED erhält man aus dem Datenblatt der jeweiligen
LED. Den Wert des benötigten Vorwidertandes erhält
man mit folgender Berechnung, die unsere Daten als
Beispiel nimmt:
Uges − ULED
ILED
3.3 V − 3.2 V
=
20 mA
= 5W
RV =
Bedeutung
Gemeinsamer Leiter
Öffner
Schließer
Tabelle II: Pin-Belegung am Songle SRD-05VDC-SL-C
D. Tassen-Detektor und Status-LED
Die Tasse wird auf eine drucksensitive Platte gestellt, die über einen Taster erkennt, ob sich eine Tasse
im TeaMaker befindet. Eine LED-Anzeige visualisiert
den Tassen- und Bearbeitungsstatus.
1) Tassen-Detektor: Zur Tassen-Erkennung wurde eine einfacher, sich unter einer Plexiglasscheibe
befindlicher Taster verwendet. Der Taster ist über
einen 1 kW Wiederstand mit den GPIOs des Raspberry
Bedeutung
Keine Tasse auf dem Detektor
Leere Tasse erkannt
Tasse ist derzeit in Verwendung
Teezubereitung ist abgeschlossen
ULED
ILED
Uges
RV
LED-Spannung [V]
LED-Strom [A]
Versorungsspannung [V]
Vorwiederstand [Ω]
E. Zentrale
Alle Komponenten sind mit einem Raspberry Pi
verbunden, auf dem die Software zur Steuerung der
Maschine läuft. Eine kleine Platine enthält die zum
Anschluss benötigten Schaltungen und verteilt die
3.3 V des Raspberry Pi und die 5 V des zweiten Netzteils an die jeweiligen Komponenten.
4
(a) Herstellung der Platine
(a) Raspberry Pi in der Bodenplatte
(b) Pinbelegung an der Platine
Abbildung 6: Die Hauptplatine
(b) Pinbelegung am Raspberry Pi
Abbildung 5: Die Zentrale: Ein Raspberry Pi
1) Raspberry Pi: Der Raspberry Pi kommt für
die Steuerung der Elektronik sowie zur Bereitstellung
der REST API zum Einsatz. Die vom TeaMaker
verwendete Pinbelegung ist in Abbildung 5b grafisch
dargestellt.
2) Hauptplatine: Die Bezeichnung “Hauptplatine”
bezieht sich nicht auf deren Größe, sondern auf deren
“zentrale” Rolle im Hinblick auf die Steuerung der
Peripheriegeräte. Es handelt sich bei der Platine um
eine kleine, von Hand gelötete Rasterplatte. Nicht alle
Komponenten lassen sich direkt an den Raspberry Pi
anschließen, da entweder Widerstände vorgeschalten
werden müssen, zusätzliche 3.3 V bzw. Masse-Pins erforderlich sind oder eine externe 5 V Stromversorgung
angeschlossen werden muss.
Um die Platine möglichst klein und einfach zu
gestalten, werden einige Modulkabel direkt mit dem
Raspberry Pi verbunden und nicht alles zentral über
die Hauptplatine angeschlossen. Dies betrifft z. B. die
GPIOs für den Schrittmotor, da dieser in seiner Ansteuerungselektronik bereits selbst die erforderlichen
Abbildung 7: Bodenplatte mit versenktem Kabel
Widerstände enthält.
Eine weitere wichtige Aufgabe der Platine ist das
Überbrücken der Masse beider Netzteile (1x 3.3 V
Raspberry Pi und 1x 5 V für die Motoren). Dies ist
erforderlich, damit die komplette Anlage ein gemeinsames Masse-Potential hat.
Die Pinbelegung der Platine ist in Abbildung 6b
dargestellt.
F. Bodenplatte
Die Bodenplatte besteht aus einer stabilen Holzschicht, sowie einer darüber liegenden StyrodurPlatte. Während das Holz in erster Line dafür sorgt,
dass das gute Stück nicht auseinander fällt, werden
im Styordur die Elektronik-Kabel und Komponenten
versteckt und vor Spritzwasser geschützt.
5
III. Software
Die Steuerung des TeaMakers erfolgt über zwei
Software-Komponenten: einem REST-basiertem Server, entwickelt mit NodeJS, welcher auf dem Raspberry Pi läuft und einer Android-App, welche über diesen Server Befehle an den TeaMaker schicken kann.
Zusätzlich bietet der Server die Möglichkeit an, über
Google Cloud Messaging (GCM) Push-Nachrichten
direkt an die App zu schicken, etwa wenn der Tee
fertig ist.
A. Server
In diesem Abschnitt wird der TeaMaker-Server beschrieben. Er ist für die Steuerung und Überwachung
der Elektronik zuständig und stellt eine REST API
bereit, über die Steuerbefehle und Statusabfragen erfolgen können. Ein besonderes Feature ist die Anbindung an das Google Cloud Messaging, welches dem
Server ermöglicht Pushnachrichten an registrierte Clients zu versenden. Die nachfolgenden Inhalte sind für
einen Raspberry Pi Model B, Revision 2 geschrieben,
sollten aber nahezu ohne Anpassung auch auf neueren
Modellen und mit etwas mehr Anpassung auch auf
ähnlichen Geräten lauffähig sein.
1) Steuerung
Motoren:
Der
Servomotor
und Schritttmotor werden jeweils über kleine,
eigenständige Python-Skripte angesteuert, was sich
in der Praxis als Vorteilhaft erwiesen hat, da einzelne
Komponenten rudimentär auch ohne Server gesteuert
werden konnten.
Zur Steuerung des Servomotors ist ein konstantes
Signal notwendig, welches angibt, welchen Winkel
der Motor anfahren soll. Da der Raspberry Pi von
Haus aus allerdings nicht echtzeitfähig ist, und somit
Programme, inklusive der Motorsteuerung, jederzeit
vom UNIX Scheduler pausiert werden können, kommt
es zu vielen kleinen Verzögerungen vom Signal an den
Servomotor, was zu einem “Zittern” führt. Die im
Rahmen vom TeaMaker eingesetzte Lösung besteht
darin, das Signal an den Motor auszuschalten, sobald
eine finale Position angefahren wurde, wodurch der
Motor seine Position an dieser Stelle hält.
2) Schnittstelle: Tabelle IV zeigt die RESTSchnittstelle des Servers. Die wesentlichen Punkte
sind: Teesorten bearbeiten, Tee zubereiten, Status abfragen und Teepläne anlegen. Mit Hilfe von Teeplänen
kann der TeaMaker eigenständig Tee zu einem bestimmten Zeitpunkt zubereiten, ohne, dass ein Nutzer
vorher den Vorgang manuell starten muss.
GET
GET
PUT
DELETE
POST
/ teas
/ t e a s /{ i d }
/ t e a s /{ i d }
/ t e a s /{ i d }
/ teas
POST
/ t e a s /{ i d }/ brew
GET
/ status
GET
GET
PUT
DELETE
POST
/ schedules
/ s c h e d u l e s /{ i d }
/ s c h e d u l e s /{ i d }
/ s c h e d u l e s /{ i d }
/ schedules
Tabelle IV: Server REST-Schnittstelle
Auf Tasse warten
Tasse erkannt
Sieb herunterfahren
Teebeutel einwerfen
Wasser einschalten
Ca. 50 Sekunden warten
Wasser ausschalten
Ziehzeit warten
Sieb herausnehmen
Fertig
Abbildung 8: Teezubereitung
3) Teezubereitung: Die zur Teezubereitung notwendingen Schritte sind in Abbildung 8 aufgezeigt. Die 50
Sekunden zwischen Ein- und Ausschalten der Kaffeemaschine sind dabei so gewählt, dass genug Wasser
für eine Tasse produziert wird. Die Ziehzeit ist variable und kann über die REST-Schnittstelle für jeden
Teeart separat eingestellt werden.
B. Android-App
Zur bequemen Steuerung des TeaMakers wurde eine
Android App entwickelt. Der Quellecode und eine
genaue Anleitung zur Installation befinden sich auf
6
(a) Teesorten mit Ziehzeiten
(b) Pläne für die Zeitsteuerung
(c) Anzeige des Maschinenstatus
(d) Pushbenachrichtung
zu fertigem Tee
Abbildung 9: Screenshots unserer Android-App
GitHub.
Im wesentlichen verfügt die App über drei Features:
existierende Teesorten bearbeiten und neue anlegen,
Teezubereitung starten und Tee-Zeitpläne erstellen
und bearbeiten. Wärend der Teezubereitung sieht der
Benutzer eine Reihe von Animationen die den aktuellen Zustand der Teemaschine darstellen.
Sobald ein Tee fertig ist wird der Nutzer per PushNotification davon in Kentniss gesetzt.
IV. Ausblick
Der erste Prototyp des TeaMakers hat gezeigt, dass
Teemaschinen im DIY-Manieren bauen durchaus realistisch und machbar ist. Allerdings bedarf es für einen
zuverlässigen und sicheren Betrieb der Teemaschine
noch eine Reihe von Änderungen.
Eine davon ziehlt auf den Stromverbrauch ab: Zum
einen werden zwei getrennte 5V-Netzteile für den
Raspberry Pi und die Motoren verwendet, und zum
anderen zieht der Servo auch in der Ruhelage konstant
Energie. Hier könnte man entweder beide Netzteile
zusammenlegen und die Stromversorgung der Motoren im Ruhezustand unterbrechen, oder das MotorenNetzteil über das derzeit freie Relais abschalten, wenn
die Motoren nicht benötigt werden. Beide Motoren
behalten ihre Position auch ohne Strom.
Im Nachhinein hat sich die Steuerung und Führung
des Wassers als besonders problematisch erwiesen, da
aufgrund des Durchlauferhitzers das Wasser in sehr
sporadischen Schüben, und meist unter viel Druck,
durch die Leitung fließt, was im aktuellen Aufbau wiederholt zu Spritzwasser geführt hat. Eine Möglichkeit
um diese Problematik zu beheben wäre die Verwendung eines zweiten Servos, der den Wasserschlauch
unmittelbar über die Tasse fährt. Alternativ wäre
auch eine Integration des Schlauches in das bereits
motorisierte Teesieb denkbar. Damit der Tassenfüllstand durch äußere Einflüsse und die fixe Einschaltzeit
des Heizelements nicht schwankt, wäre zudem eine
Detektion des Wasserstandes in der Tasse sinnvoll.
Weiterhin wäre es wünschenswert, nicht nur eine
sondern mehrere Tassen auf Vorrat im TeaMaker zu
haben, damit nicht nach jedem Tee eine neue Tasse
eingestellet werden muss. Eine mögliche Lösung wäre
hier, die Tassen auf einer drehbaren runden Scheibe
zu platzieren, damit je nach Orientierung der Scheibe
eine andere, neue Tasse befüllt werden kann.