Tutorial wie Wetterdaten online abgerufen werden und auf einen stromsparenden E-Ink Display fortwährend angezeigt werden können.
Und warum mein Lolin32 Lite scheiterte und der ESP32 WROOM rettete.

Heute möchte ich euch von einem Projekt berichten, das mich ein paar Nerven gekostet hat, am Ende aber mit einem Erfolgserlebnis belohnt wurde: Ein E-Paper Weather Dashboard für meinen Standort in Köln.
Eigentlich sollte das Ganze kompakt auf einem Lolin32 Lite laufen. Doch wie das beim Basteln oft so ist: Die Theorie und die Praxis der Spannungsversorgung liegen manchmal weit auseinander.
Das Ziel: Ein stromsparendes Info-Display
Die Idee war simpel: Ein Waveshare 4.2 Inch E-Paper soll mir morgens beim Kaffee alles Wichtige anzeigen:
- Aktuelles Datum, Wochentag und Kalenderwoche.
- Aktuelle Temperatur, sowie Tages-Minima und Maxima aus der Open-Meteo API.
- Die Regenwahrscheinlichkeit für den Tag.
- Jede Stunde aktualisiert
Die Stolperfalle: Lolin32 Lite vs. E-Paper
Beim erste Versuch, um erstmal nur das E-Paper Display mit dem Arduino Uno in der Arduino IDE zu testen, funktionierte das Display einwandfrei.
Doch die Idee stromsparend einmal stündlich ins Internet zu gehen, um Wetterdaten abzurufen an einem Lolin32 Lite tat sich gar nichts: Das Display blieb unverändert, obwohl der Code im Seriellen Monitor von Visual Studio Code (VS Code) „Update abgeschlossen“ anzeigte. Auch die Debug-Informationen zu den einzelnen erwarteten Schritten waren im Seriellen Monitor alle korrekt, aber das Display blieb trotzdem weiß.
Die Diagnose:
Das Waveshare E-Paper Modul ist zwar laut Herstellerinfo für 3,3V Logikpegel geeignet, benötigt für seine interne Ladungspumpe (die die E-Ink Kügelchen bewegt) aber eine stabile Versorgungsspannung. Der Lolin32 Lite bietet keinen direkten 5V-Ausgang vom USB-Port an. Die 3,3V des Lolin waren wahrscheinlich schlichtweg zu schwachbrüstig, um das Panel physikalisch zu aktualisieren.
Die Rettung: Wechsel auf den ESP32 WROOM-32
Nach dem Wechsel auf ein klassisches ESP32 WROOM-32 Kit C V4 klappte es sofort. Warum? Weil dieses Board laut Belegungsplan einen 5V-Pin besitzt, der direkt die USB-Spannung abgreift. Damit bekommt das Display genug „Saft“, um die Anzeige sauber umzuschalten.
Das Setup & Der Code
Ich habe das Projekt komplett in Visual Studio Code mit PlatformIO umgesetzt. Hier ist der finale Stand der Verkabelung und der Software-Logik.
Verkabelung (WROOM-32):
| E-Paper Pin | ESP32 Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| DIN (MOSI) | GPIO 23 |
| CLK (SCK) | GPIO 18 |
| CS | GPIO 5 |
| DC | GPIO 17 |
| RST | GPIO 16 |
| BUSY | GPIO 4 |
Der „Wetter-Kalender“ Code-Ausschnitt
Hier seht ihr, wie ich die Daten von der API abrufe und das Logo sowie das Wetter kombiniere:

Bevor ihr meinen Sketch/Code verwendet müsst ihr noch die secrets.h anlegen mit euren WIFI Daten. Beispiel Datei liegt bei.
So findest du die Wetter-URL für deinen Ort
Damit das Display nicht das Wetter von Köln, sondern von deinem eigenen Garten anzeigt, musst du die Koordinaten in der API-URL anpassen. Wir nutzen dafür Open-Meteo, da dieser Dienst kostenlos ist und keine Registrierung oder API-Keys erfordert.
- Koordinaten ermitteln:
- Gehe auf https://open-meteo.com/en/docs
- Gewünschte Datenquelle (zB DWD)
- Suche dort im Bereich „Ort und Zeit“ nach deinen Wohnort.
- Nach der Auswahl zeigt das Tool oben (über der Grafik) etwas wie: 52.52°N 13.42°E 38m above sea level → Diese Werte brauchst du später in der URL.
- Zeit & Vorhersage-Länge einstellen
- Wetterwerte auswählen. Zum Beispiel „Stündliche Wettervariablen“ wie
- Temperatur: temperature_2m
- Wettercode: weather_code
- Niederschlag: precipitation
- Einheiten & Format wählen im Block „Settings“:
- Temperature Unit: celsius (Standard) → temperature_unit=celsius
- Wind Speed Unit: z.B. kmh → wind_speed_unit=kmh
- Precipitation Unit: mm → precipitation_unit=mm
- API-URL erzeugen und kopieren
- Nach unten zum Bereich „API Response → Chart & URL“ scrollen.
- Unter der Grafik steht „API URL (Open in new tab or copy this URL into your application)“.
- Diese URL kopieren – das ist genau die fertige URL, die alle deine Einstellungen enthält. Diese nun in den Quellcode einfügen
Wie kommen die Wetterdaten eigentlich auf das Display?
Wenn unser ESP32 die Wetter-URL aufruft, schickt der Server kein fertiges Bild, sondern eine strukturierte Textnachricht im JSON-Format. Das sieht für uns Menschen erst einmal wirr aus, ist aber für Computer perfekt sortiert.
Ein Ausschnitt der Antwort sieht in etwa so aus:
{
"latitude": 50.94,
"longitude": 6.9599996,
"generationtime_ms": 0.0380277633666992,
"utc_offset_seconds": 0,
"timezone": "GMT",
"timezone_abbreviation": "GMT",
"elevation": 60,
"current_units": {
"time": "iso8601",
"interval": "seconds",
"temperature_2m": "°C",
"rain": "mm"
},
"current": {
"time": "2026-02-15T10:00",
"interval": 900,
"temperature_2m": 1.5,
"rain": 0
}
}Einfach erklärt: Das ist wie eine Liste mit Etiketten. Hinter dem Etikett "temperature_2m" steht der Wert 1.5 oder „rain“ : 0. Also aktuell 1,5 °C Grad und kein Regen zu erwarten.
Unser Programm (der Sketch) nutzt eine Bibliothek namens ArduinoJson. Es führt immer wieder folgende Schritte aus:
Umwandeln: Da die Zahl vom Server oft mit vielen Nachkommastellen kommt (z.B. 1.5342), sagen wir dem ESP32: „Nimm nur die erste Stelle nach dem Komma.“
Abholen: Der ESP32 lädt den kompletten Textklumpen aus dem Internet in seinen Arbeitsspeicher.
Durchsuchen: Das Programm geht die Liste durch und sucht nach den Etiketten, die wir im Code festgelegt haben.
Extrahieren: Wenn wir im Code schreiben float currentTemp = doc[„current“][„temperature_2m“]; dann wird die Zahl 1.5 in der Variablen currentTemp gespeichert.
Sobald der ESP32 die reinen Zahlen (1.5, …) im Speicher hat, übergibt er beim Befehl display.print dies an das Display:
- „Schreibe an Position X=180, Y=180 den Text ‚1.5‘ mit zusätzlich einem Leerzeichen und einem Buchstaben C in Schriftgröße 4.“

Erstellung und Einbindung Eures Logo/Bildes
Mit image2cpp habe ich mein schwarz/weiß Logo das als PNG-Datei vorlag in ein fertiges Byte‑Arrays für GxEPD erstellt. Hier weitere Details: Nützliche Software Apps und Tools
Weitere interessanter Datenquellen (Beispiele für Deutschland) die eingebunden werden könnten
- Wetter (Open‑Meteo)
- Warnungen (warnung.bund.de)
- Abfallkalender (suche in eigener lokaler Umgebung)
- Luftqualität (UBA)
- Pegelstände
- Öffentlicher Personennahverkehr Abfahrtzeiten
- Verkehrslage (Overpass API)
und Infektionslage und Feuerwehr Einsatzmeldungen und…
Fazit für eure Projekte
Wenn ihr mit E-Paper Displays arbeitet und diese an einem ESP32 betreiben wollt, achtet penibel auf die Spannung am VCC-Pin. Wenn das Log sagt „Fertig“, das Display aber weiß bleibt, „verhungert“ eure Hardware wahrscheinlich gerade an zu wenig Spannung.
Den kompletten Code und das Hex-Array Beispiel mit meinem Logo findet ihr wie immer auf meinem GitHub-Profil (https://github.com/prilchen).
Die gezeigte 4 Farb E-PAPER Variante ist hier zu finden.
Youtube-Video:
Gehäuse für 3D Druck:

Ich habe ein individuelles Display-Gehäuse erstellt, das bei Makerworld downloadbar ist.
Start-Beispiel für dieses Projekt ist 110x93x50mm groß, für das 4.2 Inch E-Paper.
Es kann aber individuell angepasst und verändert werden für andere Displaygrößen oder weitere Modulergänzungen.

Wegen der vielen Eventualitäten wird das Entwicklungsboard und Display per Double Sided Adhesive Tabe angebracht, wie auf dem Bild zu sehen ist.

Für Deckel Fixierung wurden Selbstschneidende M2.6*6 Schrauben verwendet.

