It’s tea time

In der Zeit der durch die Pandemie bedingten Ausgangsbeschränkungen kann man eigentlich nur „Abwarten und Tee“ trinken. Oder ein wenig kreativ sein und etwas basteln. Ich habe die letzten Tage genutzt um ein kleines Microcontroller-Projekt zu verwirklichen. Rausgekommen ist ein kleiner Roboter der beim Teekochen hilft.

Ich habe ein Servo, was mache ich damit?

Für meine Arduino-Basteleien habe ich mir ein paar Servos bestellt, einfach mal um mehr Optionen zu haben als „How to turn an LED on and off“ oder „How to make a noise with the buzzer“. Also mal die ersten Versuche mit Servo am Breadboard und gelernt wie das anzusteuern ist. Dann die Überlegung, was man damit machen kann. Ein Blick auf YouTube zeigt dann diverse Lösungen wie man mit dem Servo einen Hebelarm bewegt der beispielsweise den Teebeutel in die Tasse taucht und wieder raus holt.

Prototyp-Design

Den Prototyp für mein Bastelprojekt habe ich natürlich auf ein Breadboard gebaut. Man braucht nicht viele, einen Arduino Nano, einen Taster, 2 LEDs (rot und grün), den Active Buzzer, ein Potentiometer und natürlich das Servo das später mal den Arm bewegen wird. Auf dem Breadboard sieht das dann so aus.

Breadboard-Aufbau

Die Idee ist, das man den Taster drückt und dann das Servo den Arm nach unten bewegt um den Teebeutel einzutauchen. Danach machen wir ein paar Begewegungen nach dem Motto „auf und ab“ und dann bleibt der Teebeutel so lang in der Tasse bis die am Potentiometer eingestellte Zeit abgelaufen ist. Dann hebt sich der Arm wieder, holt den Teebeutel aus der Tasse und der Buzzer piepst drei mal.

Konstruktion des Gehäuses

Natürlich ist so ein fliegender Aufbau für den Einsatz in der Praxis total ungeeignet. Also habe ich mir ein Plastikgehäuse besorgt Außerdem ein paar 2mm Kunststoffplatten um daraus meinen „Robotarm“ zu schneiden.

Das Gehäuse in der Rohfassung

Hier ist das Servo bereits montiert und der Arm wird später nach links klappen um den Teebeutel zu bewegen. Am unteren starren Haltearm wird dabei eine Art „Umlenkrolle“ vorhanden sein über welche die Schnur des Teebeutels laufen wird. So wird verhindert, dass der Teebeutel beim Anheben nach links schwenkt und eine Sauerei auf der Arbeitsplatte macht.

Aufbau auf Lochrasterplatte

Da das Breadboard nicht für die Verwendung im Gehäuse gedacht ist habe ich dann mal gemessen wieviel Platz ich für eine Lochrasterplatte im Gehäuse habe und die Schaltung nochmal für eine Lochrasterplatte geplant. Hierbei sind dann auch die Pfostenstecker für einen Ein-Aus-Schalter (der mit der Batterie verbunden ist), dem Taster, den beiden LEDs, dem Poti und auch dem Servo eingeplant. Die Widerstände der Leuchdioden wurden im Vergleich zur Breadboard Schaltung in Richtung Arduino Nano verschoben, so haben wir am unteren Ende der Lochrasterplatte quasi eine „Masseleitung“ die mit allen Pfostensteckern dort verbunden ist.

Die Schaltung auf einer Lochrasterplatte

Da die Anzahl der Drähte hier sehr überschaubar ist und zudem evtl. höhere Stromstärken für Buzzer, LEDs und Servo fließen habe ich einfache Drahtbrücken statt Fädeltechnik genutzt und die Verbindungen auf der Löstseite hergestellt, also z.B. die Widerstände für die LEDs am Ende in Richtung Pfostenstecker umgebogen und verlötet.

Das Gerät ist fertig

Alle Bedienelemente wurden mit Litze und Steckkupplungen verbunden und ins Gehäuse eingebaut. Für das Poti habe ich mit LibreOffice Draw eine Skala von 1-10 gezeichnet die den 270° Drehbereich des Potis abdeckt. Am Ende sieht das Gerät dann so aus:

Der fertige Tee-Roboter

Man sieht die Umlenkvorrichtung am unteren Haltearm und eine kleine Wäscheklammer die am beweglichen Arm montiert wurde um den Teebeutel mit seinem Ettiket hier festzuklemmen. Unter dem Poti ist der Ein-Ausschalter angebracht. unter dem Hebel-Arm der Start-Taster. Nach dem Einschalten leuchtet die grüne LED under der Arm fährt in die „oben“ Position. Nach drücken des Tasters startet das Programm, die grüne LED ist aus und die rote LED („Programm läuft“) leuchtet. Der Teebeeutel wird gesenkt, kurz gewartet und dann fährt der Teebeutel ein paar mal auf und ab um danach wieder in der „unten“ Position zu bleiben. Nach Ablauf der eingestellten Uhrzeit fährt der Teebeutel in die „oben“ Position und der Piepser piepst drei mal. Damit ist das Programm beendet und die rote LED geht aus, die grüne wieder an.

Der Code

Der Code in der Arduoino-IDE sieht so aus:

Das ganze ist als „State-Machine“ implementiert die über die Variable „programmstatus“ gesteuert wird. Wenn diese 0 ist, dann sind wir bei grüner LED und das Programm wartet auf den Taster (Programmzeilen 127-134).

Wird der Taster gedrückt, startet das Programm, der programmstatus wechsel auf 1 und die aktuelle „Startzeit“ in Millisekunden wird in der Variable „startMillis“ hinterlegt.

Beim nächsten Schleifendurchlauf wird dann der Teebeutel eingetaucht und 5 Sekunden dort belassen (Programmzeilen 119 -125). Der Programmstatus wird auf 2 weitergeschaltet.

Nächster Schleifendurchlauf mit Programmstatus 2 führt nun dazu, dass der Teebeutel 5x auf und ab gefahren wird. Danach geht der Status auf 3, also das Warten auf den Ablauf der eingestellten Zeit. (Programmzeilen 113-118)

Bei Programmstartus 3 nehmen wir den Wert des Potis (0-100), 100 würden 10 Minuten, also 600 Sekunden entsprechen. Das ganze in Millisekunden umgerechnet wäre als 6000x dem Wert von 0-100 den das Poti aktuell hat. In Programmzeile 100 berechnen wir hier die „Endzeit in Millisekunden“, wichtig ist hier das Casting auf „unsigned long“ vor der Multiplation des Poti-Wertes wäre wird das Ergebnis dieser Multiplikation nur im Bereich von 0-32767 was dann natürlich falsch wäre.

Wenn die aktuelle „Zeit“ (in Millisekunden) größer ist als die errechnete Endzeit fährt der Beutel nach oben, drei Piepser werden ausgegeben und der Programmstatus wechsel wieder nach 0. (Programmzeilen 105-110).

Da das Poti in jedem Schleifendurchlauf ausgelesen wird kann man das Programm auch vorzeitig abbrechen wenn man das Poti einfach nach Links auf Null dreht. Das Poti wird in den Programmzeilen 82-83 ausgelesen und skaliert.

Der Bereich von Zeile 85-94 steuert die LEDs. Programmstatus 0 schaltet die grüne an und die rote aus, ansonsten leuchtet rot und grün ist aus.

Die Servobewegungen wurden im Code für „servobewegung“ schrittweise durchgeführt, da sonst das Servo ziemlich „rumfetzen“ würde.

Im Zeilenbereich 16-18 sind die jeweiligen Drewhinkel für die Postitionen „Oben“, „Mitte“ und „Unten“ des Beutels definiert.

Debugging läuft im Zweifelsfall über die Serielle Konsole, ein paar Debugging-Meldungen habe ich schon auskommentiert.

Fazit

Natürlich ist das Ganze pure Spielerei, aber es hat sehr viel Spaß gemacht, dieses Projekt von der Idee bis zum fertigen Gerät durchzuführen. Ein paar Dinge habe ich dabei über Servos, das Auslesen von Potis usw. gelernt.

Und natürlich auch über „Design“ der Benutzeroberfläche. Theoretisch hätte ich ja auch ein numerische Tastatur zur Eingabe der Tee-Ziehzeit und ein Punktmatrixdisplay usw. einbauen können, aber dann wäre das Ding eigentlich viel komplizierter zu bedienen. Jetzt ist die Bedienung denkbar einfach:

  1. Gerät einschalten
  2. Teebeutel in „oben“ Position einhängen
  3. Tasse mit heißem Wasser hinstellen
  4. Ziehzeit am Poti einstellen
  5. Gerät starten und abwarten
  6. Am Ende Teebeutel entsorgen und Tee trinken.

In diesem kurzen YouTube-Video hab eich mal einen „trockenen“ Testlauf mit dem Gerät gemacht.

Update: Gerade den ersten Produktivtest mit Wasser in der Tasse gemacht. Funktioniert, aber im Gegensatz zum „Trockentest“ mit leerer Tasse versinkt der Teebeutel nicht schnell genug in der Tasse, so dass der Faden keine Spannung mehr hat und sich aufrollt, evtl. sogar aus der Umlenkrolle springt. Ich denke, beim nächsten Batterie-Wechsel werde ich mal ein „Firmware-Update“ machen welches die Geschwindigkeit mit der der Beutel gesenkt wird geringer macht. Das ist ja das schön an der Implementierung mit einem Microcontroller, wenn was nicht so ist wie man es will kann man es problemlos anpassen.

Dieser Eintrag wurde veröffentlicht in Elektronik, Hobby von Rainer. Setze ein Lesezeichen zum Permalink.

Über Rainer

Diplom-Informatiker, Baujahr 1961, Vater von 2 Kindern, Hundehalter, Sportschütze und Vereinsvorstand, Hobbymusiker (mit zweifelhaftem Erfolg), politisch interessiert, Leseratte, Freizeit-Philosoph und letztlich Blogger.

3 Gedanken zu „It’s tea time

  1. Hallo Rainer,
    im YouTube Video hätte ich eigentlich noch erwartet, dass Du vom fertigen Gebräu noch einen Schluck probierst, so wie sich das für einen Testingenieur gehört 😉
    Gruß, Josef

    • Den Testflug durfte meine Frau machen. Funktioniert, aber ich habe schon ein paar Ideen für Firmware-Updates im Kopf.
      Und natürlich kam auch gleich die Anfrage „Gibt es das auch in schöner..?“

  2. Noch einen kleinen Tipp: Ein kleiner Untersetzteller unter der Teetasse verhindert die Schweinerei, welche ein tropfender Teebeutel anrichten kann.
    Also das Projekt scheint ja richtig „Fahrt aufzunehmen“ 😉

Kommentare sind geschlossen.