ESP32 Projekt: Smart Weather E-Paper Display

Warum mein Lolin32 Lite scheiterte und der WROOM-32 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 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 einen VIN/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):

  • VCC -> VIN (5V)
  • GND -> GND
  • DIN -> GPIO 23
  • CLK -> 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.

  1. Koordinaten ermitteln:
    • Gehe auf Google Maps.
    • Klicke mit der rechten Maustaste auf deinen Wohnort.
    • Kopiere die beiden Zahlen (z. B. 50.9133, 6.8122). Die erste Zahl ist der Breitengrad (latitude), die zweite der Längengrad (longitude).
  2. Die URL im Code anpassen:
    Suche in der main.cpp die Zeile const char* weatherUrl (Siehe Bild oben)
    Du musst lediglich die Werte hinter latitude= und longitude= durch deine eigenen Zahlen ersetzen.

    Beispiel für Berlin:
    https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41...
  3. Werte kontrollieren (Optional):
    Du kannst die fertige URL einfach in deinen Browser kopieren. Wenn du ein langes Textdokument (JSON) siehst, in dem Begriffe wie temperature_2m und precipitation_probability_max vorkommen, funktioniert deine URL perfekt.
    Weitere Werte wie zum Beispiel Windgeschwindigkeit kannst du hier in Erfahrung bringen:
    Free Open-Source Weather API

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

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 für mein Logo findet ihr wie immer auf meinem GitHub-Profil (https://github.com/prilchen).

Viel Spaß beim Nachbauen!

,
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzerkomfort bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst und hilft uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.