Dreifarbiges EPaper Display mit 2.9 Zoll an ESP8266, Update durch Web-Interface
EPaper, auch eInk, für "elektronisches Papier" bzw. "elektronische Tinte" ist eine Displayart, die sehr stromsparend und sehr gut bei Licht ablesbar ist, bei der man aber auch ein paar Nachteile in Kauf nehmen muss. Der für mich bisher am meisten ausschlaggebende war dabei der hohe Preis.Doch nun habe ich ein ePaper-Display unter 10 Euro von AliExpress aus China entdeckt und das gleich bestellt. Die Preise waren sonst immer sehr viel höher und von Amazon Deutschland kostet ein vergleichbares Display immer noch um die 25 Euro (Preise stand Anfang März 2024).
Mit dem Preis konnte ich gut leben und habe mir eins bestellt. Es ist sogar ein dreifarbiges, das heißt, es kann auf dem weißen Hintergrund nicht nur schwarz, sondern auch rot darstellen. Es besitzt eine ordentliche Größe und Auflösung von 296 x 128 Pixeln. Der Gag an ePaper-Displays ist, dass sie ihren Inhalt auch weiterhin anzeigen, selbst wenn sie keinen Strom mehr bekommen.
Das schaffen sie, indem sie durch elektrostatistische Aufladen positiv bzw. negativ geladenen, kleine Farbkügelchen, die in einer öligen Flüssigkeit im Display umherschwimmen, in den Vordergrund oder Hintergrund bugsieren. Mal ganz vereinfacht ausgedrückt: stellt euch eine Schale voll mit Milch vor, in der schwarze, magnetische Eisen-Kügelchen auf dem Boden liegen. Die Milch bedeckt sie, sodass ihr sie nicht sehen könnt, ihr seht nur das weiß der Milch. Doch wenn ihr jetzt einen Magneten über die Milchoberfläche haltet, dann kommen die schwarzen Kügelchen nach oben und werden sichtbar.
Das sieht in der Realität für ein ePaper allerdings sehr viel komplizierter aus und es muss einiges an Aufwand im Display betrieben werden, um die richtigen Kügelchen sichtbar zu machen. Darum dauert die Darstellung eines einzigen Bildschirm in der schwarz/weiß-Variante auch gute 3 Sekunden und bei der hier vorliegenden schwarz/weiß/rot-Variante sogar 19 Sekunden. Das ist eine Menge Zeit. Und das macht ein ePaper Display auch nur für einige Anwendungen interessant.
Nämlich alle, bei denen die Anzeige nur selten, vielleicht ein paar Mal pro Tag oder jede Stunde, aktualisiert werden muss. Man stelle sich eine Uhr vor, die 19 Sekunden braucht, um die Zeit anzuzeigen. Da wäre eine minütliche Aktualisierung schon zu viel, denn dann würde man ein Drittel der Zeit auf der Uhr nicht die Zeit ablesen können.
Ein weiterer Nachteil ist, dass die Displays UV-empfindlich sind. Man sollte sie also nicht draußen verwenden, weil sie dort mit der Zeit kaputt gehen. Normale Fensterscheiben schirmen die UV-Strahlung genügend ab. Indoor sollten die ePaper-Display also ein langes Leben haben, die Spezifikation nennt eine Lebensdauer von einer Million Aktualisierungen. Bei stündlicher Aktualisierung wären das 114 Jahre. So schnell bekommt man die ePaper-Displays also nicht durch neu beschreiben kaputt.
Anwendungsgebiete von ePaper-Displays
ePapers brauchen nur Strom, wenn sie aktualisiert werden. Danach zeigen sie, fast wie Papier, den Inhalt beliebig lange ohne weitere Stromzufuhr an. Die Aktualisierung dauert allerdings lange, bei dem hier vorliegenden Dreifarb-Modell sehr lange. Für schnelle Anzeigen sind ePaper darum nichts. An eine Wiedergabe von Videos ist erst gar nicht zu denken.Dennoch gibt es ein paar Anwendungsgebiete, für die ePaper wie geschaffen sind. Da wären zum einen die ePaper-Reader wie zum Beispiel das bekannte amazon Kindle, dass aufgrund des großen ePaper-Displays nicht ganz billig ist. Dafür hat es die Größe einer Taschenbuchseite und lässt sich fast genauso angenehm lesen. Und hier ist die Bedingung der geringen Aktualisierung gegeben. Die muss nämlich nur beim Seitenwechsel ausgeführt werden. Außerdem reicht schwarzer Text auf weißem Hintergrund vollkommen fürs Lesen aus.
Ein anderes Anwendungsgebiet, dem ihr sicher schon begegnet seid, sind die Preisschilder in den Supermärkten und Discountern. Hier verdrängt ePaper langsam die Preisschilder aus Papier, die in Klarsicht-Einschüben unter oder über (kann man sich nicht irgendwann mal supermarktübergreifend einigen?) den Waren hängen. Das Personal bei Preisänderungen die neuen Schilder ausdrucken und austauschen zu lassen ist wohl teurer geworden als langfristig ein ePaper-Preisschild aufzuhängen, dass eine kleine Batterie hat und das man über Funk aktualisieren kann. Wenn man die Preise nur selten aktualisiert, dann hält die Batterie sehr lange, denn sie wird eigentlich nur bei Aktualisierung beansprucht.
Das ePaper neuerdings auch über eine dritte Farbe (manche sogar über noch mehr) verfügen, haben wir wohl den Preisschildern zu verdanken. Die zusätzliche Signalfarbe in rot (oder auch gelb) eignet sich natürlich besonders gut, um auf Sonderangebote und -Aktionen aufmerksam zu machen.
Da ePaper-Displays auch grafikfähig sind, kann man sich sogar soetwas wie ein Fotorahmen mit wechselnden Schwarz-Weiß-Bildern vorstellen. Aber irgendwie sind die ePaper-Displays dafür noch zu teuer und farblos.
Ansonsten ist natürlich jeder Inhalt sinnvoll, der sich nur stündlich oder täglich aktualisiert. Wie wäre es mit der täglichen Wettervorhersage? Oder den nächsten Terminen, die man hat? Einem Kalender? Das Zitat des Tages? Das Fernsehprogramm für den Abend? Der Börsenkurs der Lieblings-Aktie? Einer Anzeige, wieviele Youtube-Abonnenten man gerade hat? Das war doch auch mal sehr populär...
Meine Anwendungsidee
Was genau angezeigt wird, wird nur durch eigene Fantasie und Bedürfnisse begrenzt und bestimmt. Da ich mir irgendwie selbst noch nicht sicher bin, welche Daten ich genau auf dem ePaper anzeigen lassen will, will ich ein System entwickeln, dass diesbezüglich offen ist.Ich will das ePaper mit einem ESP8266 ansteuern und das Display flexibel ansteuerbar machen. So wie in meinem bereits realsierten Projekt Laufschrift mit 4fach 8x8-LED-Matrix. Beim Einschalten soll sich der ESP8266 einen Webserver bei mir im Netzwerk bereitstellen, bei dem ich über ein Web-Interface den Text einfach eingeben kann. Samt Farbe und Textgröße.
Diese Web-Schnittstelle könnte ich dann auch automatisiert durch meinen PC updaten und so zum Beispiel jeden Morgen, wenn ich meinen PC hochfahre, die Daten aktualisieren. Oder ich halte es ganz individuell und stelle das Display irgendwo hin, damit jemand anderes meine Nachrichten darauf später ablesen kann, sei es meine Sekretärin (die ich nicht habe) oder meine Frau (die ich auch nicht habe). Naja, okay. In der Zeit, wo jeder ständig sein Smartphone dabei hat, täte es auch eine SMS oder WhatsApp-Nachricht. Aber hey, das ePaper-Display ist viel cooler und außerdem abhörsicherer, solange ich HTTPS benutze.
Die Hardware
Der Aufbau und die Qualität des ePaper-Moduls sagt mir sehr zu. Hier hat man echt mitgedacht. Es wurde an Schraublöcher zur Befestigung an den vier Ecken gedacht und an eine Aussparung, die das Flex-Flachkabel versenkt und so gegen Beschädigung schützt.
Das mattschwarze Finish sieht toll aus und es ist alles direkt auf der Platine beschriftet. Selbst die Spannungsversorgung (VCC: 3.3-5V) und die Pegelspannung der Signale (I/O: 3.3V) wurde angegeben. Vorbildlich! Da hatte jemand wirklich Ahnung und hat sich Mühe gegeben.
Wir haben zwei Möglichkeiten, das Modul anzuschließen und für beide ist das passende Zubehör gleich dabei. Am einfachsten wird der JST-Stecker mit einem Pin-Abstand von ca. 1 mm sein, in den man die mitgelieferte Kabelpeitsche einsteckt, die in acht Dupont-Buchsen (weiblich) endet. Oder man verwendet einen 2 x 4 Pfostenstecker, den man noch einlöten müsste. Das wäre sicher die praktikabelste Möglichkeit, wollte man ein eigenes PCB huckepack mit dem ePaper Modul bestücken.
Das Ganze kam übrigens vorbildlich verpackt an: das Display noch einmal in einer Luftpolsterfolie und zusammen mit dem Kabel und Pfostenstecker in einem kleinen Klappetui aus Plastik. Das sollte selbst beim langen Transport aus China ein guter Schutz sein. Auf der kleinen Plastikbox findet sich auch ein Aufkleber auf das Github-Repository von WeActStudio zum ePaper-Modul.
Dort findet isch dann auch noch einmal ein DataSheet mit genauen Angaben zur Hardware und wie diese softwreseitig anzusprechen ist.
Die Specs
Hier noch einmal eine Auflistung der Features des Displays:- 2.9 Zoll, 296×128 Pixel Anzeige
- Displaygröße: 29.056 x 66.896 mm aktiver Bereich, 36.7 x 79.0 x 1.2 mm gesamter Bereich
- Pixelgröße von 0.227 x 0.226 mm
- Hoher Kontrast, Hohe Reflexion, tapisch 35% Weißreflexion und ein Kontrastverhältnis von 8 zu 1.
- typische Aktualisierungszeit bei s/w: 3 s; bei s/w/r: 19 s.
- Ultraweiter Betrachtungswinkel. Extrem geringer Stromverbrauch.
- Reiner Reflexionsmodus. Bistabile Anzeige.Gewerblicher Temperaturbereich.
- Landschaftsporträtmodi
- Hartbeschichtete, entspiegelte Displayoberfläche
- Ultra-Stromspar-Tiefschlafmodus
- On-Chip-Display-RAM
- Die Wellenform kann im On-Chip-OTP gespeichert oder von der MCU geschrieben werden
- On-Chip-Oszillator
- On-Chip-Booster- und Reglersteuerung zur Erzeugung von VCOM-, Gate- und Source-Antriebsspannung
- Eingebauter Temperatursensor; I2C-Signal-Master-Schnittstelle zum Auslesen des externen Temperatursensors
- Lagertemperatur: -25 bis 70 °C (bzw. 50 °C bei hoher Luftfeuchtigkeit)
- Betrieb beim Temperaturen von 0 bis 50 °C, bei hoher Luftfeuchtigkeit bis 40 °C
- UV-Empfindlich. Resistent getestet 765W/m² für 168hrs
Das Display selbst benutzt eine Spannungsversorgung von 1.8 Volt und Signalpegel von 0.2 und 0.8 Volt. Auf dem Modul befinden sich auf der Rückseite die entsprechenden Bauteile zur Spannungswandlung.
Im Tiefschlafmodus verbraucht das Display nur ca. 1 µA, im normalen Sleep Modus nur 20 µA und bei der Aktualisierung um die 9 Milliwatt. Die Spannungswandler auf dem Modul haben natürlich nochmal eine eigene, geringe Verlustleistung.
Das Datenblatt mahnt zum sorgsamen Umgang mit dem Display: das Glass kann unter Belastung oder wenn es herunterfällt brechen. Kontakt mit evtl. austretendem elektrophoretischen Material, so heißt die Flüssigkeit, in der die Farbkügelchen schwimmen, ist zu vermeiden und ggf. mit Wasser und Seife abzuwaschen.
Die Software
Im Github-Repository von WeActStudio zum ePaper-Modul gibt es ein Beispielprogramm für den ESP8266, welches ich für einen ersten Test und als Vorlage für meine erweiterte Anwendung hernehmen werde.Im Sourcecode dort finden sich auch folgende Zeilen, die uns dabei helfen, wie wir das Display-Modul an unseren ESP8266 anzuschließen haben:
// ESP8266 CS(SS)=15,SCL(SCK)=14,SDA(MOSI)=13,BUSY=16,RES(RST)=5,DC=4
// 2.9'' EPD Module
// GxEPD2_3C display(GxEPD2_290_C90c(/*CS=5*/ 15, /*DC=*/ 4, /*RES=*/ 5, /*BUSY=*/ 16)); // GDEM029C90 128x296, SSD1680
#include <GxEPD2_BW.h>
#include <GxEPD2_3C.h>
Die Library GxEPD2 by Jean-Marc Zingg ist auch kompatibel zum ESP8266, wunderbar. Fügen wir sie zum Projekt hinzu. Die GxEPD2 braucht wiederum die Adafruit_GFX, also fügen wir auch diese zum Projekt hinzu.
Meine Konfigurationsdatei für das Projekt sieht dann so aus:
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino
upload_port = COM17
monitor_port = COM17
monitor_speed = 115200
lib_deps =
zinggjm/GxEPD2@^1.5.6
adafruit/Adafruit GFX Library@^1.11.9
Arduino Display Library for SPI E-Paper displays from Dalian Good Display and Waveshare. Requires HW SPI and Adafruit_GFX. Caution: the bare e-paper panels require 3.3V supply AND data lines!
Verkabelung
Der SourceCode gibt leider nur die absoluten Header-Pin-Nummern an. Auf unserem D1 Mini 8266 Board sind allerdings die Pins mit D0 bis D8 beschriftet. Das ist aber nicht weiter schlimm, denn eine Übersetzung findet ihr im Pinout in meinem Artikel Vorstellung des ESP8266-Boards D1 mini.
Ich zeige euch das Pinout als Grafik nocheinmal rechts an. Ihr könnte sie aber auch auf der eben genannten Seite als PDF herunterladen und ausdrucken, dann habt ihr das Pinout immer zur Hand.
Es ergibt sich folgende Verkabelung:
ePaper Modul Pin Kabelfarbe Source-Pin ESP 8266 Pin
1 Busy violett 16 D0
2 RES (Reset) orange 5 D1
3 D/C weiß 4 D2
4 CS (SPI Select) blau 15 D8
5 SCL (SPI Clock) grün 14 D5
6 SDA (SPI Data) gelb 13 D7
7 GND schwarz G
8 VCC rot 3V3
Die Verkabelung sollte dann so aussehen, wie auf dem folgenden Foto. Hab ihr den Pin-Header auf der anderen Seite eures ESP8266 D1 Mini angelötet, entsprechend spiegelverkehrt.Später kann man mit doppelseitigen (nicht leitenden) Klebeband das ESP8266-Modul auf die Rückseite des ePaper-Moduls kleben, um ein kompakteres Paket zu bekommen, für das wir später noch ein Gehäuse mit dem 3D-Drucker entwerfen wollen.
Ein schöner Platz dafür ist auf der Rückseite links von der weißen JST-Buchse. So kann von oben der USB-Stecker für Strom und Programmierung erreicht werden und von links der Reset-Taster. Wer Will, kann die kleinen Dupont-Stecker auch entfernen und die Kabel direkt anlöten; dann kann das Gehäuse kleiner ausfallen.
Meine Software-Lösung
Den ESP8266 habe ich als Mikrocontroller für die Ansteuerung ausgewählt, weil er klein und günstig ist, genügend Speicher hat und über WLAN verfügt. Ein ESP32 kann das natürlich auch, ist aber gar nicht nötig (und teurer).Obwohl ich reichlich platzfressende Fonts eingebunden habe, reicht der Speicher des ESP8266 locker aus:
RAM: [===== ] 52.2% (used 42744 bytes from 81920 bytes)
Flash: [=== ] 32.9% (used 344119 bytes from 1044464 bytes)
Außerdem bietet er mehr Speicher als ein Arduino oder STM32 und davon sollte es schon ein bisschen sein, damit man genügend Speicher hat, um die Fonts zu speichern und nicht zuletzt auch einen Fullscreen-Buffer hat, um den ePaper-Bildschirm in einem Rutsch zu aktualisieren. Das dauert auch so schon lange genug.
Das Definieren eines Textes über das Web-Interface sollte möglichst einfach sein. Aber trotzdem wollte ich ein paar Möglichkeiten, mit dem Design der Texte spielen zu können. Zu Zeit sind drei Haupt-Schriftarten eingebunden: Monospaced, was sehr gut für Daten ist, die untereinanderstehen sollen; Sans ohne Serifen, was sehr gut lesbar ist und Serif mit Serifen, was ebenfalls ganz gut lesbar ist. Mir gefällt aber Sans besser, weil das Schriftbild irgendwie klarer ist.
Diese drei Schriftarten gibt es normal und in fett, wobei ich fett den Vorzug gebe, weil es hervorragend ablesbar ist. An Schriftgröße gibt es 9 und 18 Punkt. Sans in fett außerdem in 24 Punkt. Das ist aber schon riesig. Da passen nur 10 oder 11 Zeichen nebeneinander und von der Höhe her ist mit einer Zeile auch schon fast das halbe Display voll.
Und dann gibt es noch eine winzige Schriftart, die PicoPixel. Die ist so klein wie möglich und davon passen sage und schreibe 78 Zeichen in eine Zeile. Man kann sie schon lesen, aber richtig Spaß macht das nicht. Taugt aber für Anmerkungen und Hinweise.
Pro Textzeile auf dem Display muss man in einem Textfeld eine Textzeile eingeben und zwar mit 3 führenden Zeichen, die Schriftfarbe, Schriftart und Position angeben, aber das steht auch dort, wo es hingehört: Im Web-Interface selbst:
Das Textfeld ist schon mit einer Beispiel-Definition vorausgefüllt, die dann zu folgendem Ergebnis führt:
Mit genügend Umgebungslicht ist das ePaper-Display wirklich hervorragend abzulesen. Das Aktualisieren des Displays dauert ca. 20 Sekunden. Danach wird das Display in den Tiefschlaf versetzt und die Stromversorgung, bei mir USB-C, kann gekappt werden; das Bild bleibt trotzdem vorhanden.
Beim Einstecken des ESP8266-ePaper-Moduls loggt sich der ESP in mein lokales Netzwerk ein und kann über WLAN über eine im Router fest zugewiesene IP angesprochen werden. IP- und MAC-Adresse gibt die Firmware dabei über den seriellen Port aus, so dass man einfach im Router eine feste DHCP-Adresse zuweisen kann. Bei mir ist das 93, EP für EPaper spiegelverkehrt. Irgendwie muss man sich das ja merken. Oder man schreibt sich das als "ePaper.internal" oder so in seine HOSTS-Datei, geht natürlich auch.
Gibt man dann die IP des ESP8266 im Browser auf PC oder Smartphone ein, bekommt man die Webseite mit dem Interface. Klickt man dort auf "Update" wird per AJAX die Definition an den ESP8266 gesendet. Vorteil dabei: es passiert keine Weiterleitung auf eine neue URL, der eingegebene Text bleibt erhalten, wie er ist. Falls man das zwei, dreimal abschicken muss, bis das Design passt. Denn Zeilen, die zu lang sind und über den rechten Rand hinaus gehen, mag er z. B. gar nicht.
Die Firmware erkennt dann, dass eine Aktualisierungsanfrage eingegangen ist und kümmert sich darum, das ePaper-Display entsprechend zu aktualisieren. 20 Sekunden später ist der neue Text auf dem Display und das Stromkabel kann wieder abgezogen werden.
Oder man lässt es dran, wenn es in Intervallen aktualisieren will. Das kann man auch von anderen Programmen auf dem PC machen lassen, einfach indem man eine URL wie
http://epaper.internal/?TXT=sD Hallo!§sD Neuer Text!
Das Laufenlassen des ESP8266 benötigt beim Warten auf neue Befehle ca. 80 mA bzw. 0.4 Watt. Auch beim Updaten des Epapers ändert sich dieser Stromverbrauch nicht sonderlich. An einer 20 Ah Powerbank sollte das Gespann aus ESP8266 und ePaper-Modul 185 Stunden, also eine gute Woche durchgehend funktionieren. Natürlich kann man das noch stromsparender programmieren, aber im Moment sehe ich keine Veranlassung für den Mehraufwand.
Ein Gehäuse für unser ePaper-Modul
Fehlt noch ein Gehäuse für das Modul, damit es vor äußeren Einflüssen geschützt ist, Kurzschlüsse vermieden werden und es anständig auf dem Tisch stehen kann.Auf der GitHub-Seite von WeActStudio gibt es auch eine Abbildung der Platine (neudeutsch PCB) mit Maßen, die hilfreich beim Entwurf sein könnte:
Weil ich dann doch kein so tiefes Gehäuse wollte, sondern eher eine kompakte Variante, habe ich noch einmal die Stiftleisten aus dem ESP8266 ausgelötet, die Dupont-Stecker von den Kabel des JST-Steckers gezwackt und diese direkt an den ESP8266 angelötet.
Dabei habe ich die Kabel auch gleich gekürzt. Erfreulicherweise passt der ESP8266 D1 mini von den Ausmaßen sehr schön auf die Rückseite links neben den Stecker und schließt fast in der Höhe ab. Er steht lediglich links ein bisschen über. Aber das wird man später nicht mehr sehen, wenn das Gehäuse zu ist. Ich klebe den ESP8266 mit ein wenig doppelseitigem Silikon-Klebeband der Stärke 1mm also an die Rückseite des ePaper-Moduls und stecke den Stecker ein und befestige das Kebel mit ein bisschen Klebeband.
Nun geht es an das eigentliche 3D-Design. Dazu benutze ich - wie eigentlich fast immer OpenScad, mehr Programmiersprache denn klassisches Design-Programm wie die meisten 3D-CAD-Programme.
Zuerst einmal mache ich mich an das Gehäuse ansich, das bekommt dann später noch einen Deckel. Aber das Grundgehäuse ist so gestaltet, dass ich das komplette ePaper-Modul samt Huckepack ESP8266 mit dem Display nach unten in eine quaderförmige "Schachtel" schieben kann, so ähnlich wie ein nach oben offener Schuhkarton.
Dabei muss ich natürlich an ein paar Aussparungen denken: eine große auf der Unterseite für das Display selbst (70 x 32 mm), eine oben links für die USB-C-Buchse des ESP8266 und eine links oben für den Reset-Taster, für alle Fälle, falls man den mal braucht.
Der ESP8266 muss natürlich oben abschlüssig zu dem ePaper-Modul ausgerichtet sein, damit man auch später gut einen USB-Stecker einstecken kann.
Damit das Einstecken des USB-Steckers nicht etwa den ESP8266 verrutscht, bekommt der unten noch eine kleine Stütze. Die hängt bereits an dem Deckel, in der 3D-Grafik rechts sieht man die Stütze unten links. der ganz nach unten reichende, schmale Absatz stützt das ESP8266-Board nach unten ab und der breitere Absatz darüber drückt von oben auf das ESP8266-Board und damit links auch auf das ePaper-Modul, damit dies im Gehäuse nicht verrutscht oder kippelt.
Dafür sind auch die anderen Stützen, die von oben auf den USB-Port bzw. auf die Rückseite des Display-Moduls drücken.
Dabei muss alles sehr genau passen, eventuell muss ein wenig nachgefeilt werden, wenn doch etwas zu lang ist bzw., wenn es zu kurz ist, mit Klebeknete aufgefüllt werden. Genaues Messen und zweimal nachdenken, ob man nicht vielleicht einen Spiegel-Fehler (seitenverkehrt weil oben in real gleich unten im Design) gemacht haben, zahlt sich damit aus, denn so ein 3D-Druck dauert mehrere Stunden.
Zum Schluss noch ein paar Lüftungsschlitze rein-designt, damit der ESP8266 ein wenig "atmen" kann und die Sache kann zum 3D-Drucker geschickt werden. By the way: Ich benutze dafür OctoPrint mit OctoPi auf einem Raspberry Pi. Dann muss ich nicht immer mit einer SD-Karte zu meinem Anycubic i3 mega rennen.
Mein Druck hat erfreulicherweise gleich gepasst. Der Deckel wird dann ein Stück weit von oben in das innere des Gehäuses geschoben. Oben schließt eine Abschlussplatte dann wieder bündig ab. Das muss gut passen. Im Idealfall hat man einen "Friction Fit", sprich: der Deckel sitzt so eng, dass er von alleine hält. Ansonsten hilft wieder Klebeknete.
Das Ergebnis ist ein kompaktes Kästchen mit den Maßen 9.8 x 4.1 x 19.4 cm, das ich mir jetzt beliebig irgendwo hinstellen kann und bei Bedarf Strom per USB-C anstöpsele. Oder ich lasse es angeschlossen und aktualisiere den Inhalt über die Web-Interface-URL auf dem ESP8266. Über den PC oder meinetwegen auch über einen anderen Mikrocontroller oder Raspberry Pi.