← Alle Beiträge Blogbeitrag

E-Paper-Display mit ESP8266 — WeAct 4,2" Verkabelung & Einrichtung

Viktoria Builds

Ein WeAct 4,2-Zoll-E-Paper-Display per SPI mit dem ESP8266 verbinden und ein Bild anzeigen, das nach dem Ausstecken erhalten bleibt — kein Strom nötig.

Auf YouTube ansehen

E-Paper ist eine Display-Technologie, die sich etwas anders anfühlt als gewöhnliche Bildschirme. Das Bild bleibt ohne jeglichen Stromverbrauch erhalten — kein Refresh, keine Hintergrundbeleuchtung, nichts. Einmal gezeichnet kann man alles ausstecken und das Bild bleibt. Das macht es nützlich für alles, was sich nicht ständig aktualisieren muss: Namensschilder, Dashboards, Sensorwerte, die man gelegentlich abliest.

Dies ist das WeAct 4,2-Zoll-Modul. Acht Pins, läuft auf 3,3 V und kommuniziert über SPI — obwohl die Beschriftungen SDA und SCL lauten, was nach I2C aussieht. Ist es nicht. Das hat mich kurz verwirrt, bevor ich das Datenblatt überprüft habe.

Bauteile

  • ESP8266 (NodeMCU oder ähnliches)
  • WeAct 4,2" E-Paper-Display-Modul
  • Jumperkabel

Verdrahtung

Das Display hat acht Pins. Sie werden wie folgt mit dem ESP8266 verbunden:

  • VCC → 3,3 V
  • GND → GND
  • SDA → D7 (MOSI)
  • SCL → D5 (CLK)
  • CS → D8
  • D/C → D3
  • RES → D4
  • BUSY → D2

Trotz der SDA/SCL-Beschriftung handelt es sich um SPI, nicht I2C. Chip Select, Data/Command, Reset und Busy-Pin werden alle benötigt — keinen davon offen lassen.

Bibliotheken

Zwei Bibliotheken aus dem Arduino Library Manager: GxEPD2 und Adafruit GFX. Beide installieren. GxEPD2 übernimmt den Display-Treiber und die seitenbasierte Render-Schleife. Adafruit GFX stellt Schriften und Zeichenprimitive bereit.

Sketch

Die GxEPD2-Bibliothek verwendet einen seitenbasierten Pufferansatz — man zeichnet innerhalb einer do { ... } while (display.nextPage())-Schleife. Hier ein minimaler Sketch, der Text auf das Display ausgibt:

#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h>

GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(
  GxEPD2_420_GDEY042T81(/*CS=*/ D8, /*DC=*/ D3, /*RES=*/ D4, /*BUSY=*/ D2));

void setup() {
  display.init();
  display.setRotation(1);
  display.setFont(&FreeMonoBold9pt7b);
  display.setTextColor(GxEPD_BLACK);
  display.setFullWindow();
  display.firstPage();
  do {
    display.fillScreen(GxEPD_WHITE);
    display.setCursor(10, 30);
    display.print("Hello, World");
  } while (display.nextPage());
}

void loop() {}

Upload und Ergebnis

Den Sketch hochladen, einige Sekunden warten, während sich das Display initialisiert, und das Bild erscheint. Beim Refresh gibt es ein Flackern — das ist normal. E-Paper setzt alle Pixel vor dem Zeichnen eines neuen Bildes zurück, was das schwarz-weiße Flimmern verursacht. Danach ist das Bild eingefroren. Strom trennen und es bleibt.

Den vollständigen Code gibt es auf meinem GitHub und verlinkt auf meiner Website. Wer sein Display verkabelt oder etwas damit baut, kann es im Discord teilen — ich würde gerne sehen, was die Leute mit dem persistenten Bild anstellen.

Hat dir dieses Tutorial gefallen?

Unterstütze den Kanal auf Patreon und erhalte frühen Zugang zu Projekten, Build-Logs und mehr.

Auf Patreon unterstützen →