Mein papierloser Kalender 🙂!
Dokumentation eines stromsparenden ePaper-Kalenders
Ein papierloser Kalender mit ESP32-C3, 7,5-Zoll-ePaper, Wetterdaten, Kalender-Synchronisation und Batteriebetrieb.
Projektziel
Ziel des Projekts war die Entwicklung eines papierlosen, stromsparenden Kalendersystems auf Basis eines ePaper-Displays. Der Kalender sollte öffentliche Outlook- und Apple-Kalender synchronisieren und zusätzlich manuelle Termine unterstützen.
Hardware
Als Hardware wurde ein 7,5-Zoll-ePaper-Panel mit einem XIAO ESP32-C3 Mikrocontroller verwendet. Der ESP32-C3 bietet WLAN-Unterstützung und einen stromsparenden Deep-Sleep-Modus, wodurch sich das System gut für einen dauerhaften Batteriebetrieb eignet.
XIAO_ESP32C3
/dev/ttyACM0
Layout des Kalenders
Das Display wurde im Querformat gestaltet.
- Links wird das aktuelle Datum groß dargestellt.
- Darunter erscheinen die Termine des aktuellen Tages.
- Oben werden Monat, Wetterdaten und Batteriestand angezeigt.
- Rechts befindet sich eine Liste der nachfolgenden Termine.
Da das ePaper-Display ausschließlich Schwarz-Weiß-Darstellung unterstützt, wurde für dunkle Listenhintergründe ein Linienmuster verwendet. Dadurch entsteht optisch eine schattierte Fläche.
Schattierung der Terminliste
Da das ePaper-Display nur Schwarz und Weiß darstellen kann, wurde die Schattierung der rechten Terminliste nicht mit Graustufen umgesetzt. Stattdessen werden sehr dicht gesetzte horizontale schwarze Linien gezeichnet. Dadurch entsteht optisch ein dunkler Hintergrund.
Für diese dunklen Bereiche wird die Schriftfarbe auf Weiß gesetzt. Bei normalen Bereichen bleibt die Schrift schwarz. So entsteht eine gut lesbare, abwechselnd strukturierte Terminliste.
Kalender-Synchronisation
Die Kalenderdaten werden über öffentliche ICS-Kalender eingebunden. Unterstützt werden Outlook- sowie Apple-/iCloud-Kalender.
Ein PHP-Skript lädt die ICS-Dateien automatisch herunter, verarbeitet die Kalendereinträge und erzeugt daraus eine termine.json-Datei.
Das PHP-Skript wird über einen Cronjob alle zehn Minuten ausgeführt. Die erzeugte JSON-Datei wird anschließend vom ESP32 über WLAN geladen.
JSON-Format
Die Termine werden in einem kompakten JSON-Format gespeichert. Jeder Eintrag besteht aus Datum, vollständigem Text und einer Kurzfassung für die Listenansicht.
- date: Datum im Format JJJJ-MM-TT
- text: vollständiger Termintext
- short: gekürzter Text für die rechte Terminliste
Beispiel:
date: 2026-05-11
text: Restmuell
short: Restmuell
date: 2026-05-12
text: Abfahrt 16:45 Uhr
short: Abfahrt 16:45 Uhr
Das Feld text enthält den vollständigen Termintext. Das Feld short wird für die kompakte Terminliste auf der rechten Displayseite verwendet.
Batteriestandsanzeige
Die Messung des Batteriestands erwies sich als anspruchsvoll, da der ADC-Eingang des verwendeten Boards zunächst aktiviert werden muss.
- Batterie-ADC:
GPIO1 - ADC-Aktivierung:
GPIO6
Die Batteriespannung wird gemessen, in eine reale Akkuspannung umgerechnet und anschließend prozentual dargestellt.
Stromsparmodus
Nach jedem Aktualisierungsvorgang führt das Gerät folgende Schritte aus:
- WLAN-Verbindung herstellen
- Wetter- und Kalenderdaten laden
- ePaper-Display aktualisieren
- in den Deep-Sleep-Modus wechseln
Das System wacht derzeit alle 30 Minuten automatisch auf und aktualisiert die Anzeige. Dadurch wird eine lange Batterielaufzeit erreicht, da ePaper-Displays nur beim Aktualisieren Energie benötigen.