Drei Ideen für ein lohnenswertes Teeodohr Softwareupdate

Teeodohr ist der liebenswerte Helfer bei der Teezubereitung. Obwohl er so Einiges von seinem Handwerk versteht, gibt es doch immer wieder neue Ideen für Verbesserungen und Funktionserweiterungen. Einige davon möchte ich in diesem Beitrag als ToDo-Liste bzw. Backlog festhalten. Aufgrund Teeodohrs quelloffener Software lassen sich diese bei Bedarf auch selbst umsetzen.

Bereits in den vergangenen Beiträgen habe ich über die grundlegenden Funktionen und die von mir vorgenommenen Erweiterungen berichtet. Was kann man aus dem hasenförmigen Teebot nun noch herauskitzeln?

Idee 1: Erinnerung für Schwerhörige und Vergessliche

Nach Beendigung seiner Taten ruft Teeodohr seinen Meister mittels einer lustigen Melodie herbei, damit dieser ihm Möhre und Tee entreißen kann. Was aber, wenn der Meister gerade außer Hörweite ist und seinen kleinen Freund schon längst wieder vergessen hat? Leider macht Teeodohr keine Anstalten, erneut auf sich aufmerksam zu machen. Die Konsequenz ist kalter Tee und – wenn das nicht schon schlimm genug wäre – eine schnell zur Neige gehende Batterie.

Die Lösung für dieses Problem sieht zum Beispiel so aus. Teeodohr verweilt nach erfolgter Zubereitung in einer Schleife, in der er seine Melodie alle x Sekunden wiederholt. Dies macht hoffentlich irgendwann jemanden auf ihn aufmerksam. Sollte ihm nach längerer Zeit (>y Minuten) immer noch keiner die Möhre weggenommen und die Spannungsversorgung damit unterbrochen haben, begibt er sich in einen Stromsparmodus. Dieser zeichnet sich dadurch aus, dass Servo und LEDs abgeschaltet sind und sich der Mikrocontroller in einem Sleep-Modus befindet.

Eine For-Schleife zur Wiederholung der Melodie und schließlich das Abschalten der Peripherie sollte sich programmiertechnisch relativ unkompliziert gestalten. Bei der Implementierung des Sleep-Modus müssen allerdings vorab einige Fragen geklärt werden:

  • Welcher der vielen unterstützen Sleep-Modi des ATmega Mikrocontrollers soll genutzt werden? Jeder hat seine individuellen Vor- und Nachteile hinsichtlich Stromverbrauch und Reaktivierungsmöglichkeiten. Die genauen Angaben gehen aus dem Datenblatt hervor.
  • Wie wird der Mikrocontroller wieder aufgeweckt? Eine Unterbrechung der Spannungsversorgung ist immer eine Lösung, doch vielleicht möchte man dies auch mit einem Tastendruck erreichen?
  • Wie lang hält die gesamte Schaltung im Sleep-Modus aus, bis die 9V Batterie doch endgültig leer ist? Auch im „besten“ Stromsparmodus werden Mikrocontroller, Spannungswandler, USB-UART-Bridge und Power-LED auf dem Arduino Nano Board immer noch Strom verbrauchen. Hier wäre eine Überschlagsberechnung angebracht. Zur weiteren Reduzierung der Stromaufnahme könnten auch die Power-LED und die USB-UART-Bridge ausgelötet werden – dann ist allerdings kein weiteres Umprogrammieren mit dem Arduino Bootloader möglich.

Idee 2: Multi-Tassen Support

Ein Blick in meinen Küchenschrank offenbart ein Sammelsurium verschiedener Tassen. Nicht nur farblich könnten sie unterschiedlicher nicht sein, auch in Größe und Gestalt finden sich darunter einige Unikate wieder. Gerade bei besonders großen Tassen* mit über 500 ml Fassungsvermögen oder sehr länglich geratenen Exemplaren* ist Teeodohr etwas überfordert. Hier reicht seine fest eingestellte Ohr-Bewegung nicht aus, um einen Teebeutel vollständig aus dem heißen Wasser zu ziehen.

Die einfache nicht-technische Lösung wäre hier, Teeodohr einfach etwas erhöht aufzustellen, z. B. auf ein Küchenbrettchen, oder die Länge der Teebeutel-Schnur etwas zu variieren. Das würde ich aber unter der Kategorie „Workaround“ abstempeln:

Ein Workaround (englisch für „Notlösung“, „Behelfslösung“, zu to work around sth „um etwas herum arbeiten“) ist ein Umweg zur Vermeidung eines bekannten Fehlverhaltens eines technischen Systems. Es ist ein Hilfsverfahren, das das eigentliche Problem nicht behebt, sondern mit zusätzlichem Aufwand seine Symptome umgeht.

Wikipedia

Die „richtige“ Lösung dieses Problems solltest du in zwei Schritten angehen.

1. Verschiedene Tassengrößen kalibrieren

Für die zu unterstützenden Tassen muss ermittelt werden, wie weit Teeodohr das Ohr senken und anheben muss. Dies ist einmalig für jeden Tassen-Typ zu erledigen. Das Ergebnis wird nicht-flüchtig für die spätere Wiederauswahl abgespeichert. Aber wie lässt sich das realisieren?

Einerseits könnte man die benötigten Servo-Winkel mathematisch anhand der gewünschten Tassenhöhe und Teeodohrs konstanter Geometrie berechnen. Dies wäre sehr exakt und ginge relativ schnell, wenn man nur sinnvoll die Tassenhöhe eingeben könnte. Mit zwei Tastern und drei LEDs sind Teeodohrs Interaktionsmöglichkeiten allerdings stark begrenzt. Ohne Hardwareerweiterung in Form zusätzlicher Taster oder eines Displays finde ich diese Lösung daher eher unpraktisch.

Ein praktischer Weg zur Ermittlung der Servo-Winkel liegt daher nahe. Man bringt Teeodohr in einen Kalibriermodus und kann dann den Servo manuell in die gewünschten Positionen fahren. Sind unterer und oberer Wert ermittelt, werden diese permanent für spätere Wiederauswahl abgespeichert.

Nun noch zur Frage, wie der Kalibriermodus aktiviert werden kann. Ich nehme an, dass sich der persönliche Tassenbestand nicht allzu oft ändert und die Kalibrierung daher nur selten benötigt wird. Aus diesem Grund darf der Modus auch etwas „umständlicher“ zu erreichen sein. Hier fallen mir verschiedene Möglichkeiten ein:

  • Langes Drücken auf die „Start/Stop“-Taste
  • „Start/Stop“- und „3-5-7“-Tasten längere Zeit gleichzeitig drücken
  • „Start/Stop“-Taste gedrückt halten, während Teeodohr die Möhre in die Pfote bekommt

All diese Wege lassen sich rein programmatisch lösen. Während der Kalibrierung können die beiden Tasten genutzt werden, um den Servo herauf oder herunter zu fahren. Wiederum ein längerer Druck auf einen der beiden Taster übernimmt den Wert. Die LEDs können dabei noch zusätzliche Rückmeldung geben, ob gerade oberer oder unterer Wert angelernt wird.

Die vorgenommenen Einstellungen sollten dann als „Preset“ abgelegt werden. Hier bietet es sich an, die Presets über jeweils eine leuchtende „3-5-7 LEDs“ zu identifizieren. Zum Beispiel bedeutet „3“ so viel wie „meine weiße Standard-Tasse“ und „7“ wiederum „meine extravagant hohe Giraffentasse“. Für die Auswahl des abzuspeichernden Presets könnte man vor dem Einstellen des Servo-Winkels erst einmal zwischen 3, 5, und 7 umschalten. Das lässt sich mittels einer der beiden Taster realisieren.

Wie gesagt: Der Kalibriermodus muss relativ selten betreten werden. Viel öfter steht man vor dem Problem, die gewünschte Tassengröße vor der eigentlichen Zubereitung zu wählen,

2. Gewünschte Tassengröße auswählen

Die Auswahl der Tassengröße muss einfach vonstattengehen, da sie wahrscheinlich oft benötigt wird. Wie wäre es damit: Nachdem Teeodohr die Möhre in die Pfote bekommen hat, wartet er zunächst auf die Auswahl des Presets. Dieser lässt sich mit der „3-5-7“-Taste umschalten und mittels „Start/Stop“ bestätigen. Dann gelangt man wie gewohnt zur Auswahl der Ziehzeit.

Komfortabel wäre zweifelsfrei auch die Funktion, dass sich Teeodohr die zuletzt gewählte Tasse merkt und bei einem Neustart schon mal voreinstellt. Damit braucht man im Idealfall nur zwei Tastendrücke für die Lieblingstasse voller Lieblingstee.

Da gibt’s doch was von Kilian…

Auch andere Maker sind schon auf die Idee gekommen, Funktionserweiterungen dieser Art umzusetzen. Auf seinem Blog beschreibt Kilian beispielsweise, wie er einen Kalibrierungsmodus auf Grundlage der Original Teeodohr-Software entwickelt hat. Er nutzt dazu zwei weitere Taster, die er zusätzlich in Teeodohrs Podest integriert hat.

Idee 3: Startzeit beschleunigen

Gibst du Teeodohr die Möhre in die Pfote, genehmigt er sich eine kurze Bedenkzeit, bis er seine Begrüßungsmelodie abspielt und sein Öhrchen in aufrechte Position bewegt. Warum eigentlich?

Die Erklärung hinter diesem Verhalten ist der Mechanismus, wie du die Software des Arduino Nano updatest. Normalerweise wird der Mikrocontroller auf diesem Board über eine In-System-Programming (ISP) Schnittstelle mit neuer Software versorgt. Dafür benötigst du eine weitere Hardware, den sog. In-System-Programmer, der in diesem Fall an die 6-polige Stiftleiste des Arduino Nano angeschlossen wird.

Die Arduino-Macher wollten diese zusätzliche Hardware wohl gern sparen. Sie haben daher die Hardware durch eine Softwarelösung namens „Bootloader“ ersetzt.

Wenn du einen Arduino kaufst, ist der Bootloader bereits darauf vorinstalliert. Er tut nichts anderes als nach dem Start bzw. Reset des Boards auf eine Kommunikationsanfrage von einem angeschlossenen PC zu warten. Läuft dort die Arduino IDE und möchte ein Programm übertragen, wird dieses vom Bootloader entgegengenommen und in den Flash-Speicher geschrieben.

Ist kein PC angeschlossen, wartet der Bootloader trotzdem kurze Zeit ab, bevor er das eigentliche Programm ausführt. Daher entsteht die Zeit, in der Teeodohr scheinbar „bootet“.

So kann die Startzeit verkürzt werden

Weg mit dem Bootloader. Es klingt zunächst hart, aber alles andere wäre nur die Bekämpfung der Symptome anstatt die Lösung der Problemursache.

Investiere die paar wenigen Euro und kaufe dir einen In-System-Programmer aus China* oder einen von Amazon*. Dies ist eine lohnenswerte Investition, denn du kannst ihn auch für weitere Projekte weiterverwenden.

Bei deinem Kauf solltest du darauf achten, dass du einen Adapter von dem 10-poligen Anschluss des Programmers auf den 6-poligen Stecker des Arduino Nano mitbestellst. Die meisten Verkäufer haben Sets mit diesem „ISP-Adapter“ im Angebot.

Mit dem Programmer kannst du wie gewohnt in der Arduino IDE arbeiten und dein Teeodohr-Programm auf den Mikrocontroller flashen. Der Bootloader wird dabei überschrieben. Das ist aber kein Problem, denn du kannst ihn jederzeit wieder neu flashen und zum Originalzustand zurückkehren.

Du wirst sehen, so schnell war Teeodohr noch nie einsatzbereit.

Los geht’s!

Hat dich eine der Ideen inspiriert? Dann starte jetzt mit der Implementierung und mache deinen Teeodohr noch besser!

Als Ausgangspunkt kannst du zum Beispiel meine Implementierung nutzen, welche du hier auf GitHub findest. Ich freue mich jederzeit über Rückmeldungen per Kommentarfunktion oder Pull Requests auf GitHub.


* = Affiliate-/Werbelink

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert