The TRMNL 7.5″ DIY Kitvon Seeed Studio ist ein schlankes E-Paper-Display, das für Maker entwickelt wurde, die ihr eigenes anpassbares Smart-Terminal bauen möchten. Während die offizielle Firmware bereits einsatzbereite Widgets bietet, kannst du den TRMNL auch selbst mit der Arduino IDEprogrammieren.
In dieser Anleitung zeigen wir dir, wie du das Kit mit der TFT_eSPI libraryeinrichtest und einen einfachen Sketch schreibst, der das Display in eine digitale Uhrverwandelt. Die Uhr synchronisiert sich automatisch mit einem Internet-Zeitserver (NTP), sodass die Zeit immer genau ist, ohne manuelle Anpassungen.
Wo kaufen

TRMNL 7.5″ (OG) DIY Kit
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Das TRMNL 7.5″ DIY Kit
Das TRMNL 7.5″ (OG) DIY Kit von Seeed Studio ist ein Open-Source E-Paper-Terminal, das für persönliche Dashboards, IoT-Display-Projekte und Maker-Experimente entwickelt wurde. Es kombiniert ein 7,5-Zoll 800×480 monochromes E-Ink-Display, ein XIAO ESP32-S3 PLUS Treiberboard, einen 2000 mAh wiederaufladbaren Akku und ein 10 cm FPC-Verlängerungskabel.

Beachte, dass dieses Kit ohne Gehäuse geliefert wird, aber du findest 3D-Druckvorlagen für ein Triangular Enclosure oder ein L-shape Enclosure und weitere auf Printables.
Im Kern des Treiberboards befindet sich ein ESP32-Mikrocontroller-Modul, das Dual-Core-Verarbeitung, integriertes Wi-Fi und Bluetooth bietet. Der ESP32 verfügt über ausreichend Flash- und SRAM-Speicher, um sowohl benutzerdefinierte Anwendungen als auch die offizielle TRMNL-Firmware zu unterstützen.
Das Controller-Board ist so konzipiert, dass es über eine SPI-Verbindung mit dem E-Paper-Panel kommuniziert und per USB-C programmiert werden kann. Ein Reset- und Boot-Knopf sind für das Flashen der Firmware vorhanden. Außerdem gibt es drei Tasten für benutzerdefinierte Funktionen und einen Netzschalter für den Akku.

Das 7,5-Zoll-Display verwendet E-Paper-Technologie, die nur beim Aktualisieren Strom verbraucht und den Inhalt ohne Stromversorgung beibehält. Das macht es ideal für immer eingeschaltete Informations-Dashboards, die auch bei direktem Sonnenlicht gut lesbar bleiben.
Programmierung des TRMNL 7.5″
Der TRMNL kann auf zwei verschiedene Arten verwendet oder programmiert werden. Die erste Methode ist die Installation und Ausführung der offiziellen TRMNL-Firmware, die in das TRMNL-Ökosystem integriert ist. Mit dieser Methode kann das Gerät vorgefertigte Widgets wie Kalender, Wetter und digitale Uhr anzeigen.
Diese Methode erfordert jedoch eine BYO (Bring Your Own) license, die Zugriff auf die gehosteten Dienste und die Widget-Infrastruktur von TRMNL gewährt. Der Vorteil ist eine ausgereifte, sofort einsatzbereite Erfahrung mit Cloud-Integration, ohne dass man selbst Code schreiben muss.
Die zweite Methode ist die direkte Programmierung des TRMNL mit der Arduino IDE. Dabei kann das E-Paper-Panel mit einer geforkten Version der TFT_eSPI-Bibliothek angesteuert werden, die Zeichenfunktionen für Displays bereitstellt.
Mit dieser Methode haben Entwickler volle Freiheit, eigene Anwendungen zu gestalten, sei es eine digitale Uhr, ein IoT-Daten-Dashboard oder eine individuelle Visualisierung. Diese Methode erfordert keine Lizenz, aber Kenntnisse in der Arduino-Programmierung. Zwar fehlt das Plug-and-Play-Ökosystem der offiziellen Firmware, dafür haben Maker volle Kontrolle über die Anzeige und die Hardware-Nutzung. Genau diesen Weg gehen wir in diesem Tutorial.
Technische Spezifikationen
| Komponente | Spezifikation |
|---|---|
| Display-Typ | 7,5-Zoll E-Paper (elektronisches Papier-Display) |
| Auflösung | 800 × 480 Pixel |
| Display-Farben | Schwarz und Weiß (monochrom) |
| Controller-Board | ESP32-basiertes Mikrocontroller-Modul |
| Mikrocontroller | XIAO ESP32-S3 Plus |
| Flash-Speicher | 4 MB (abhängig vom verwendeten ESP32-Modul) |
| RAM | 520 KB SRAM (mit optionalem externem PSRAM je nach Board-Variante) |
| Konnektivität | Wi-Fi 802.11 b/g/n, Bluetooth 4.2 BLE |
| Schnittstelle zum Display | SPI |
| USB-Anschluss | USB-C (für Programmierung und Stromversorgung) |
| Stromversorgung | 5 V über USB-C oder über 2000mAh Li-Ionen-Akku |
| Zusatzfunktionen | Reset-Taste, Boot-Taste |
| Gehäuse | 3D-gedrucktes Gehäuse, passend für das 7,5-Zoll-Panel und das ESP32-Board |
| Firmware-Optionen | TRMNL-Firmware mit BYO-Lizenz oder eigene Arduino-Firmware mit TFT_eSPI |
| Schaltpläne | Schematic of XIAO ePaper Display Dev Board |
In den nächsten Abschnitten lernst du, wie du die benötigten Bibliotheken installierst und wie du eine digitale Uhr implementierst, die Zeit und Datum auf dem TRMNL 7.5″ Display anzeigt.
Bibliotheken installieren
Bevor wir Code schreiben können, müssen wir die erforderlichen Bibliotheken installieren. Seeed Studio hat eine Fork (Seeed_GFX Library) der beliebten TFT_eSPI Library erstellt, die das TRMNL 7.5″ Display unterstützt. Die originale TFT_eSPI Library funktioniert mit diesem Display nicht.
Gehe zuerst zum GitHub-Repo der Seeed_GFX Library, klicke auf den grünen « <> Code »-Button und lade die Bibliothek als ZIP-Datei herunter:

Entpacke anschließend die Bibliothek, es sollte ein Ordner namens « Seeed_GFX » entstehen. Diesen Ordner musst du in den « libraries »-Ordner der Arduino IDE kopieren. Unter Windows befindet sich der « libraries »-Ordner typischerweise hier:
C:\Users\<username>\OneDrive\Documents\Arduino\libraries
Da dieser Ordner bereits installierte Bibliotheken enthält, empfehle ich, ihn vorübergehend umzubenennen, z.B. in « _libraries », und einen neuen Ordner namens « libraries » zu erstellen. So vermeidest du Konflikte mit bereits installierten Bibliotheken und verlierst sie nicht. Das Bild unten zeigt, wie dein « Arduino »-Ordner aussehen sollte:

Danach kopiere den « Seeed_GFX »-Ordner in den « libraries »-Ordner:

Damit ist die Installation der benötigten Bibliotheken abgeschlossen.
Testcode für TRMNL 7.5″ DIY Kit
Als Nächstes starten wir mit einfachem Testcode für das Display. Erstelle einen neuen Projektordner « trmnl » mit zwei Dateien darin: « trmnl.ino » und « driver.h »:

Öffne dann « trmnl.ino » mit deiner Arduino IDE, klicke auf den Tab der Datei « driver.h » und kopiere den folgenden Code in die « driver.h »-Datei:
// driver.h #define BOARD_SCREEN_COMBO 502 // 7.5 inch monochrome ePaper Screen (UC8179) #define USE_XIAO_EPAPER_DISPLAY_BOARD_EE04
Zum Schluss kopiere den folgenden Code in die « trmnl.ino »-Datei:
#include <SPI.h>
#include <TFT_eSPI.h>
EPaper epd = EPaper();
void setup() {
epd.begin();
epd.setRotation(0);
epd.setTextColor(TFT_BLACK);
epd.setTextSize(3);
epd.fillScreen(TFT_WHITE);
epd.drawCentreString("Makerguides", 400, 220, 4);
epd.update();
}
void loop() {}
Um den Code auf den Mikrocontroller des Display-Treiberboards hochzuladen, wähle das Board XIAO_ESP32S3_PLUS wie unten gezeigt aus:

Nach dem Hochladen sollte das Display ein paar Mal flackern und dann den Text « Makerguides » zentriert anzeigen:

Wenn das funktioniert, herzlichen Glückwunsch : )
Digitaler Uhr-Code für TRMNL 7.5″ DIY Kit
Im nächsten Codebeispiel lernst du, wie du das TRMNL 7.5″ DIY Kit mit der Arduino IDE nutzt, um eine digitale Uhr anzuzeigen, die ihre Zeit automatisch aus dem Internet synchronisiert. Schau dir zuerst den kompletten Code unten an, danach besprechen wir die Details:
#include <SPI.h>
#include <TFT_eSPI.h>
#include <WiFi.h>
#include <esp_sntp.h>
const char* SSID = "SSID";
const char* PWD = "PWD";
const char* TIMEZONE = "CET-1CEST,M3.5.0/2,M10.5.0/3";
const int W = 800;
const int H = 480;
EPaper epd = EPaper();
void initTime() {
setenv("TZ", TIMEZONE, 1);
tzset();
}
void syncTime() {
WiFi.begin(SSID, PWD);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
}
configTzTime(TIMEZONE, "pool.ntp.org");
}
void initDisplay() {
epd.begin();
epd.setRotation(0);
epd.fillScreen(TFT_WHITE);
epd.setTextColor(TFT_BLACK);
epd.setTextSize(2);
}
void setup() {
initTime();
initDisplay();
syncTime();
}
void loop() {
static char buff[64];
static struct tm t;
if (getLocalTime(&t)) {
epd.fillRect(200, 100, 400, 300, TFT_WHITE);
strftime(buff, sizeof(buff), "%H:%M", &t);
epd.drawCentreString(buff, W / 2, 140, 7);
strftime(buff, sizeof(buff), "%A", &t);
epd.drawCentreString(buff, W / 2, 250, 4);
strftime(buff, sizeof(buff), "%B %d/%m/%Y", &t);
epd.drawCentreString(buff, W / 2, 320, 2);
epd.update();
}
esp_sleep_enable_timer_wakeup(30 * 1000 * 1000ULL); // 30 sec
esp_deep_sleep_start();
}
Importe
Wir beginnen mit dem Einbinden der benötigten Bibliotheken: SPI übernimmt die Kommunikation mit dem E-Paper-Display, TFT_eSPI stellt Zeichenfunktionen bereit, WiFi verwaltet die drahtlose Verbindung und esp_sntp synchronisiert die Zeit mit Netzwerkservern.
#include <SPI.h> #include <TFT_eSPI.h> #include <WiFi.h> #include <esp_sntp.h>
Konstanten
Als Nächstes definieren wir einige Konstanten. SSID und PWD werden verwendet, um den ESP32 mit deinem WLAN zu verbinden. Du musst sie durch deine WLAN-Zugangsdaten ersetzen.
const char* SSID = "SSID"; const char* PWD = "PWD"; const char* TIMEZONE = "CET-1CEST,M3.5.0/2,M10.5.0/3"; const int W = 800; const int H = 480;
Die TIMEZONE-Konstante ist für Berlin in Deutschland. Für andere Zeitzonen schaue dir die Posix Timezones Database an. Kopiere einfach den dort angegebenen String und passe die TIMEZONE-Konstante entsprechend an. Der Uhrcode holt die aktuelle Zeit von einem Internet-Zeitserver und ist daher immer genau, benötigt aber WLAN-Zugang.
Zum Schluss legen wir die Breite und Höhe des Displays fest, was uns hilft, den Text an den richtigen Stellen zu positionieren.
Objekte
Als Nächstes erstellen wir ein EPaper-Objekt, mit dem wir den Bildschirm initialisieren, Text zeichnen und den Inhalt aktualisieren können.
EPaper epd = EPaper();
Zeit-Initialisierung
Die initTime-Funktion stellt die Zeitzone ein, sodass die aus dem Internet abgefragte Zeit korrekt an die Region des Nutzers angepasst wird. So zeigt das Gerät nicht einfach UTC, sondern die lokale Zeit an.
void initTime() {
setenv("TZ", TIMEZONE, 1);
tzset();
}
Zeitsynchronisation
Die syncTime-Funktion verbindet den ESP32 mit dem WLAN und fordert dann die aktuelle Zeit von einem NTP-Server an. Der Aufruf von configTzTime übernimmt sowohl die Zeitsynchronisation als auch die Zeitzonenanpassung. Die Schleife wartet, bis die WLAN-Verbindung steht, bevor sie fortfährt.
void syncTime() {
WiFi.begin(SSID, PWD);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
}
configTzTime(TIMEZONE, "pool.ntp.org");
}
Display-Initialisierung
Bevor wir etwas zeichnen können, müssen wir das E-Paper-Display vorbereiten. Die initDisplay-Funktion startet die Hardware, setzt die Ausrichtung, füllt den Bildschirm mit weißem Hintergrund und definiert die Standardfarbe und -größe für den Text.
void initDisplay() {
epd.begin();
epd.setRotation(0);
epd.fillScreen(TFT_WHITE);
epd.setTextColor(TFT_BLACK);
epd.setTextSize(2);
}
Setup-Funktion
Die setup-Funktion verbindet alles. Sie konfiguriert die Zeitzone, initialisiert das Display und synchronisiert dann die Uhr mit dem NTP-Server. Nach Abschluss dieser Funktion ist das System bereit, die genaue, netzwerksynchronisierte Zeit anzuzeigen.
void setup() {
initTime();
initDisplay();
syncTime();
}
Loop-Funktion
In der Loop wird der Displayinhalt aktualisiert. Ein Puffer und eine tm-Struktur werden erstellt, um formatierte Zeitdaten zu halten. Der Aufruf von getLocalTime holt die aktuelle Zeit. Wenn der Aufruf erfolgreich ist, wird der Anzeigebereich zuerst durch ein weißes Rechteck gelöscht. Dann werden drei verschiedene Informationen zentriert auf dem Bildschirm angezeigt: die aktuelle Stunde und Minute, der Wochentag sowie das vollständige Datum mit Monat und Jahr.
if (getLocalTime(&t)) {
epd.fillRect(200, 100, 400, 300, TFT_WHITE);
strftime(buff, sizeof(buff), "%H:%M", &t);
epd.drawCentreString(buff, W / 2, 140, 7);
strftime(buff, sizeof(buff), "%A", &t);
epd.drawCentreString(buff, W / 2, 250, 4);
strftime(buff, sizeof(buff), "%B %d/%m/%Y", &t);
epd.drawCentreString(buff, W / 2, 320, 2);
epd.update();
}
Das Foto unten zeigt, wie das auf dem tatsächlichen E-Paper-Display aussieht:

Zum Schluss versetzt sich der ESP32 für 30 Sekunden in den Deep-Sleep-Modus. Das spart Energie, was besonders bei Akkubetrieb wichtig ist. Nach Ablauf des Timers wacht der Chip automatisch auf, führt die Loop erneut aus und aktualisiert die Zeit.
esp_sleep_enable_timer_wakeup(30 * 1000 * 1000ULL); // 30 sec esp_deep_sleep_start();
Zusammenfassung
Mit diesem Code wird dein TRMNL 7.5″ DIY Kit zu einer stromsparenden, immer genauen E-Paper-Uhr. Es verbindet sich mit dem WLAN, holt die aktuelle Zeit von einem NTP-Server und zeigt sie übersichtlich an. Dank des Deep-Sleep-Modus des ESP32 und der statischen Anzeigeeigenschaften des E-Paper-Displays verbraucht es wenig Energie, während die Informationen jederzeit sichtbar bleiben.
Beachte jedoch, dass der Code alle 30 Sekunden eine vollständige Display-Aktualisierung durchführt. Das bedeutet, dass das Display alle 30 Sekunden flackert, was störend sein kann. Leider bietet die Seeed_GFX Library keine Funktionen für eine partial redraw.
Fazit
Das TRMNL 7.5″ E-Paper ist ein großes, sehr ansprechendes Display. Das Treiberboard mit zusätzlichen Tasten, einer integrierten Akku-Ladeschnittstelle und dem 2000mAh Li-Ionen-Akku im Kit macht es einfach, ein batteriebetriebenes Dashboard zu bauen.
In diesem Tutorial hast du gelernt, wie man mit dem TRMNL 7.5″ E-Paper eine digitale Uhr baut. Für weitere Informationen schau dir auch das Getting Started with TRMNL on TRMNL 7.5inch(OG) DIY Kit an, wo du Beispiele findest, wie man die Tasten auf dem Treiberboard ausliest und den Batterieladestand misst.
Eine Einschränkung des TRMNL-Displays ist, dass es nicht vom gängigen GxEPD Library unterstützt wird, der speziell für E-Paper-Displays entwickelt wurde. Die aktuelle Unterstützung über die Seeed_GFX Library – eine Fork der TFT_eSPI Library – ist begrenzt und bietet keine partial redraws oder Steuerung der Display-Aktualisierung nach dem Aufwachen aus dem Deep-Sleep.
Wenn du nicht durch häufiges Flackern des Displays gestört werden möchtest, beschränkt sich der Einsatz auf Anwendungen, bei denen Display-Updates selten sind, z.B. mindestens alle 15 Minuten oder besser alle paar Stunden. Das bedeutet, Wetter-Dashboards oder Kalender sind geeignete Anwendungen, während Anwendungen mit schnelleren Aktualisierungsanforderungen eher ungeeignet sind. Beachte, dass dies keine Einschränkung des Displays, sondern der Treibersoftware ist.
Für die Anzeige eines Monatskalenders schau dir das Monthly Calendar on E-Paper Display Tutorial an, und wenn du mehr über Zeitsynchronisation lernen möchtest, siehe die How to synchronize ESP32 clock with SNTP server und Automatic Daylight Savings Time Clock Tutorials.
Eine weitere häufige Erweiterung für digitale Uhren ist die Anzeige von Umgebungstemperatur oder Wetterdaten. Sieh dir das Weather Station on e-Paper Display Tutorial für mehr Details an.
Wenn du lieber nichts selbst implementieren möchtest, sondern von einer großen Auswahl bereits existierender Dashboards (Plugins) für das TRMNL 7.5″ Display profitieren willst, lies die TRMNL 7.5inch(OG) DIY Kit with TRMNL Seite.
Wenn du Fragen hast, hinterlasse sie gerne im Kommentarbereich.
Viel Spaß beim Tüfteln 😉

