Touch Wecker

Privatprojekt

Dieses Projekt entstand, nachdem ich aus meinem Auslandssemester in Finnland nach Deutschland zurückgekehrt war und das Thema Schlafhygiene etwas ernster nehmen wollte. Ziel war es, mein Handy nicht mehr als Wecker zu benutzen und stattdessen einen physischen Wecker zu verwenden. Um diese Anforderungen mit einem meiner Hobbys zu verbinden, entschied ich mich, einen solchen Wecker selbst zu bauen.

Hardware

Der Wecker basiert auf einem ESP32-S3 Development Board mit einem 3,5” IPS Panel, das ich zufällig online gefunden habe. Faszinierend finde ich vor allem, dass es möglich ist, mit so wenig Ressourcen eine komplexe UI anzeigen zu können. Insgesamt hat der ESP gerade einmal 512KB internen RAM, 8MB PSRAM und 4MB Flash.

Zusätzlich zum Display sind eine Real Time Clock (RTC), ein Lautsprecher mit Verstärker und zwei Taster verbaut: Komponentendiagramm eines DIY-Weckers: Ein Touchscreen-Display mit MicroSD-Karte ist per I2S mit dem MAX98357-Audioverstärkermodul verbunden, das zwei kleine Lautsprecher ansteuert. Über I2C ist zusätzlich ein PCF8523-Echtzeituhrmodul (RTC) angeschlossen. Zwei Taktschalter sind direkt mit dem Display verbunden.

Das Gehäusedesign wurde mit Fusion 360 erstellt und anschließend 3D-gedruckt: 3D-Explosionsdarstellung eines Weckergehäuses: Weißes Oberteil mit zwei schwarzen Druckknöpfen, schwarzes Innenrahmen-Mittelteil mit Displayhalterung, abklappbare schwarze Frontblende sowie ein goldenes Lautsprecherelement und Gummifüße als separate Bauteile

Software

Die UI des Weckers wurde mit der C-Bibliothek LVGL entwickelt, die es ermöglicht, auch mit begrenzten Ressourcen ansprechende Benutzeroberflächen zu erstellen. Obwohl das Programmieren von Mikrocontrollern nichts Neues für mich war, war die Entwicklung einer UI mit LVGL eine neue Herausforderung. Mit LVGL ist es im Vergleich zu den mir bekannten Frameworks aus der App- und Webentwicklung deutlich schwieriger, Dinge wie z.B. State Management zu realisieren.

Insgesamt gibt es 3 Bildschirme:

  • Wecker Screen: Hier wird die aktuelle Uhrzeit, das Datum und die eingestellten Weckzeiten angezeigt. Smarter Wecker mit schwarzem Display, zeigt die Uhrzeit 08:38 in roten Ziffern sowie das Datum Dienstag, 7. April an.

  • Home Screen: Hier kann die Weckzeit eingestellt werden und Smart Home Geräte gesteuert werden. Home-Screen des Weckers: Zwei Tabs oben, darunter zwei Alarme – „Wake up" um 09:00 Uhr täglich (aktiviert) und „Other" um 00:00 Uhr (deaktiviert).

  • Settings Screen: Hier können allgemeine Einstellungen vorgenommen werden. Einstellungsmenü des Weckers, geöffneter Bereich „Wi-Fi": WLAN ist aktiviert, Verbindungsstatus „Connected", Signalstärke –74 dBm, IP-Adresse 192.168.178.168.

Neben einer Weckfunktion wollte ich unbedingt auch eine Integration mit Home Assistant, um den Wecker in mein Smart Home einzubinden. Dazu habe ich den Wecker via MQTT über Mosquitto angebunden.

Fazit

Dieses Projekt hat wirklich Spaß gemacht und hat mir gezeigt, dass man auch mit begrenzten Ressourcen funktionale UIs entwickeln kann. Umso mehr schätze ich jedoch jetzt die Funktionen, die moderne Frameworks aus der App- und Webentwicklung zu bieten haben.

2026/03