Terminkalender mit ESP32 mit 2,8 Zoll TFT (CYD)

Lesezeit: 13 Minuten

Ziel des Projekts

Passend zu jedem Tag sollen die anste­hen­den Ter­mine auf dem TFT angezeigt wer­den. Die Dat­en befind­en sich auf ein­er SD-Karte und wer­den täglich um Mit­ter­nacht aktu­al­isiert. Zusät­zlich wer­den Datum und Uhrzeit angezeigt.

Die Hardware

Für diese Pro­jekt wird ein CYD (Cheap Yel­low Dis­play) ver­wen­det. Auf der Rück­seite des TFTs mit 2,8‑Zoll und 320x240 Pix­eln befind­en sich ein ESP32-Wroom, ein SD-Karten-Mod­ul, eine RGB-LED und Anschlussmöglichkeit­en für Periph­eriegeräte mith­il­fe von JST-Steck­ern.

Es gibt mehrere Ver­sio­nen des CYD: ⇒ESP32-2432S028 und ESP32-JC2432W328C. Sie unter­schei­den sich im ver­wen­de­ten Grafik­treiber:

  • mit Mikro-USB-Anschluss (ESP32-2432S028)
    Grafik­treiber ⇒ILI9341
  • mit USB-C-Anschluss (ESP32-2432S028 und ESP32-JC2432W328)
    Grafik­treiber ⇒ST7789

Konfiguration des Mikrocontrollers

Der Datensatz auf der SD-Karte

Die Dat­en müssen im For­mat tt.mm./Name des Ein­trags vor­liegen. Der Dateiname ist zwin­gend Kalender.txt. Wenn Tag oder Monat ein­stel­lig sind, muss eine 0 vor­angestellt wer­den. Die Rei­hen­folge der Ein­träge darf beliebig sein. Es wer­den max­i­mal vier Ein­träge für den jew­eili­gen Tag auf dem Dis­play dargestellt. Für jeden Ein­trag muss eine neue Zeile erstellt wer­den.
Das gilt auch für mehrere Ter­mine an einem Tag.
Die Datei wird nur ein­mal um Mit­ter­nacht neu gele­sen, daher kann die SD-Karte zwis­chen­durch her­ausgenom­men und neu beschrieben wer­den.

Als Trennze­ichen zwis­chen Datum und Kalen­dere­in­trag dient der /.

Aufbau der Datei

Kalenderdaten schreiben

Mit diesem Pro­gramm kannst du Dat­en auf die SD-Karte schreiben, sie wird automa­tisch als Kalender.txt gespe­ichert. Wenn du eine neue Datei erstellen willst, musst du in Zeile 52 die // ent­fer­nen.

Du musst nach jed­er Zeile die Eingabe-Taste drück­en.
Zum Spe­ich­ern musst du nach der let­zten Zeile die Taste # drück­en.
Anschließend wird die Datei angezeigt.

So sieht es dann aus:

Natür­lich kannst du die Datei auch mit einem beliebi­gen Texte­d­i­tor erstellen oder bear­beit­en. Weil das Durch­suchen der Datei einige Zeit in Anspruch nimmt, emp­fiehlt es sich abge­laufene Ter­mine zu löschen.

Das Programm

Vorbemerkungen

  • Das Pro­gramm ver­wen­det die Schrif­tarten von ⇒u8g2. Wenn du größere Schrif­tarten ver­wen­den willst, musst du aus­pro­bieren, ob die Ein­träge noch auf das Dis­play passen.
    Einige Beispiele:
    14pt: u8g2_font_luRS14_tf
    16pt: u8g2_fnt_logisoso16_tf
    18pt: u8g2_font_luBS18_tf
    20pt: u8g2_font_fub20_tf
    22pt: u8g2_font_logisoso22_tf
    24pt: u8g2_font_helvB24_tf
    26pt: u8g2_font_logisoso26_tf
    28pt: u8g2_font_logisoso28_tf
    Die Schriften wer­den mit setFont(Name_der_Schrift) definiert.
  • Vorder­grund- und Hin­ter­grund­farbe kön­nen aus der Liste im Kopf des Pro­gramms in den entsprechen­den Vari­ablen getren­nt für den Bere­ich von Datum und Zeit und für den Bere­ich der Ter­mine fest­gelegt wer­den:
    Far­ben Datum/Zeit:
    int Hin­ter­grund­Farbe­Da­tum = SCHWARZ;
    int Vorder­grund­Farbe­Da­tum = WEISS;
    Far­ben Ter­mine:
    int Hin­ter­grund­Far­beTer­mine = SCHWARZ;
    int Vorder­grund­Far­beTer­mine = WEISS;
  • Es kön­nen höch­sten 50 Daten­sätze gele­sen wer­den. Wenn du mehr benötigst, musst du den Wert der Vari­ablen Daten­Max erhöhen.
  • Bis zu 90 Sekun­den ver­sucht das Pro­gramm eine Verbindung zum Zeit­serv­er aufzubauen und das kor­rek­te Datum und die aktuelle Zeit zu holen.
    Gelingt das nicht, wird das Pro­gramm been­det.
    Beim näch­sten Start antwortet der Zeit­serv­er zumeist in kurz­er Zeit.

Benötigte Bibliotheken

Je nach Art des USB-Anschlusses wird ein ander­er Grafik-Treiber benötigt:

TFT mit USB-C-Anschluss

oder:

TFT mit Mikro-USB-Anschluss
Zusät­zliche Schrif­tarten

Wenn du zuvor die Biblio­thek SdFat instal­liert hast kann es zu Kon­flik­ten kom­men. In diesem Fall musst du sie über die Biblio­theks­ver­wal­tung deinstal­lie­ren und statt­des­sen den Adafruit Fork instal­lieren.

Einbindung der Bibliotheken und setup-Teil

Grafiktreiber ST7789

Für den ESP-JC2432W328 gibt es eine Beson­der­heit:
Der Wert der Vari­ablen TFT_BL muss auf 27 geset­zt wer­den.

Grafiktreiber ILI9341

Beim Start des Pro­gramms zeigen die Mel­dun­gen, ob die SD-Karte ges­tartet wurde, die Datei Kalender.txt gele­sen wer­den kon­nte und ob Datum und Zeit kor­rekt sind.

Der loop-Teil

Die Funktion ZeigeDatum()

Das Datum wird beim Start des Pro­gramms und danach nur noch beim Wech­sel des Datums um Mit­ter­nacht angezeigt.

Die Funktion KalenderDurchsuchen()

Die Funk­tion wird ein­ma­lig beim Start des Pro­gramms und danach nur noch zum Datum­swech­sel um Mit­ter­nacht aufgerufen. Für den Ver­gle­ich des aktuellen Datums mit einem Ein­trag auf der SD-Karte wird der String Datum aus der vom Zeit­serv­er über­mit­tel­ten Zeit zusam­men geset­zt und dann mit dem ersten Teil des getren­nten Strings (DatumEin­trag) ver­glichen. Der zweite Teil des getren­nten Strings (Kalen­derE­in­trag) wird auf dem Dis­play angezeigt.


Quellen


Letzte Aktualisierung: Nov. 16, 2025 @ 23:02