Seit dem Erscheinen der ersten E-Book Reader war ich davon begeistert, nicht nur wegen der Technik, sondern weil ich gerne lese. Damit musste ich meine Reiseliteratur nicht mehr auf fünf schwere Bücher beschränken, sondern konnte meine gesamte Bibliothek im Format eines Notizblocks immer dabei haben. Am Strand zeigt sich ein zweiter Vorteil: Selbst im strahlendsten Sonnenlicht hat man keine Probleme – im Gegenteil, die Lesbarkeit verbessert sich!
 
Verantwortlich dafür ist der Einsatz von elektrophoretischen Displays (Stichwort: eInk/ePaper), die unterschiedlich gefärbte und geladene Kügelchen je nach angelegter Spannung an die Display-Oberseite driften lassen, und so zumeist Inhalte in Schwarz/Weiß darstellen.
Neben hohem Kontrast und praktisch keiner Blickwinkelabhängigkeit hat dieses Prinzip noch einige andere Vorteile: Da Strom nur bei der Änderung der Anzeige, aber nicht zu dessen Erhalt fließt, ist der Energieverbrauch extrem gering. Außerdem entstehen keine „Einbrenneffekte“, wenn lange der gleiche Inhalt angezeigt wird.
Natürlich gibt es auch Nachteile: Da der Bildwechsel auf mikroskopischer Ebene mechanisch abläuft, ist die Änderung eines Pixels sehr viel langsamer als bei LCDs oder OLEDs. So dauert ein „Refresh“ der Anzeige oft mehrere Sekunden, was das Abspielen von Videos unmöglich macht und die Bildschirme eher für semi-statische Anwendungen prädestiniert. Tricks wie der partielle „refresh“ beschleunigen den Vorgang etwas und opfern Kontrast und Schärfe, um für einige Blättervorgänge ein schnelleres Umschalten zu ermöglichen.
 
All das hat die möglichen Anwendungen bis jetzt größtenteils auf die besagten digitalen Reader beschränkt und auch nur in deren Bildformat für preiswerte Displays aus Massenproduktion gesorgt. Neue Trends wie das digitale „Shelf Labelling“, in dem Ladenpreise durch kleinformatige Displays angezeigt werden, haben nun eine neue Nische eröffnet und ermöglichen so den Zugang zur Technik zu günstigen Preisen durch Fertigung in großen Stückzahlen.

ePaper-Display von Waveshare

Aus genau diesem Anwendungsfeld kommt auch das hier vorgestellte Display. Es hat eine Bildschirmdiagonale von 2,9“ und bietet eine Auflösung von 296 x 128 Bildpunkten bei einer Pixeldichte von 112 dpi. Als 3-Color-Display kann jedem Punkt die Farbe Schwarz, Weiss oder Rot zugewiesen werden.
 

 
Leider lassen sich keine Graustufen oder Rotschattierungen darstellen. Auch die lange Aktualisierungszeit beim Bildwechsel von bis zu 15 s bei dreifarbigen Darstellungen und das Fehlen einer partiellen Bilderneuerung (partly refresh) ist sicherlich dem Hauptanwendungsfeld als digitales Preisschild geschuldet. Preise im Supermarkt werden ja (noch) nicht minütlich aktualisiert und müssen neben dem Preis in schwarzweiß allenfalls ein rotes Rabatt-Zeichen zeigen können.
 
Allerdings ist der kleine Bildschirm dafür recht günstig zu bekommen und bietet für Bastler einen guten Einstieg in diese Technologie.
Sehr praktisch ist, dass das Display ein fertiges Modul ist, das man im Prinzip nur mit den richtigen Pins z.B. eines Arduino verbindet, anschließend den Demo-Code aufspielt, und schon sieht man etwas. Ein weiterer großer Vorteil des Moduls ist die Flexibilität: Obwohl das kleine Display für 3,3 V ausgelegt ist, verträgt es auch 5 V, da auf der Platine ein Spannungsregler verbaut ist.

Getting Started

Der Hersteller Waveshare betreibt ein nützliches eigenes Wiki für seine Produkte, das alle relevanten Informationen und Bedienungsanleitungen übersichtlich zusammenfasst. Dort werden auch die häufigsten Fragen und Probleme beantwortet.
Neben den Links zum Democode und zur Github-Seite ist praktischerweise ein Link zu einem Forum-Post aufgeführt, in dem ZinggJM, ein fleißiges Mitglied der Arduino-Community, viele weiterführende Informationen zu Waveshare und anderen Displays aufzeigt. Besonders interessant ist seine selbst geschriebene GxEPD-Library, die unter anderem das hier vorgestellten Display unterstützt. Seine Blibliothek basiert auf einer Adafruit-Library und macht die Programmierung eines Mikrocontrollers zur Displaysteuerung sehr einfach. Die dazugehörige Github-Seite umfasst alles, was man für den Betrieb braucht.
Obwohl es mir nicht gelang, den Democode von Waveshare zum Laufen zu bekommen, war das mit der Bibliothek von ZinggJM nach deren Installation im Arduino-Editor kein Problem. Das Beispiel lief sofort.
 

 
Der Entwickler gibt auch die richtige Verkabelung an. Sein Code ist verständlich kommentiert, sodass Anpassungen für eigene Projekte schnell geschrieben sind.

Funktion drawPaged

Eine sehr wichtige Bibliotheksfunktion verdient besondere Aufmerksamkeit: Das RAM eines Arduino würde eigentlich nicht für das Zwischenspeichern eines Bildschirminhalts ausreichen. Bei 2 Bit pro Pixel kommt man auf etwa 10 kB Speicherbedarf, was einen Uno mit seinen 2 kB und selbst einen Mega mit 8 kB RAM überfordert. Mit einem Uno würde sich die Anzeige nur zu etwa einem Achtel füllen. Hier springt die Funktion drawPaged ein: Sie zerlegt das Bild in Segmente, die dann nacheinander berechnet und an das Display gesendet werden. Die Unterteilung des Bildes kann im Code festgelegt werden. Ich hatte keine Schwierigkeiten mit dem voreingestellten Faktor 8.
 
Nach etwas Ausprobieren hatte ich herausgefunden wie die Funktion am besten arbeitet. Man schreibt einfach alles was man darstellen möchte in eine eigene Funktion und ruft diese dann via drawPaged() im Hauptprogramm auf. Der Bildaufbau hat sich dadurch übrigens nicht merklich verlangsamt.

Anzeige für Strominsel

Als ich das kleine eInk-Display sah, kamen mir sofort viele kleine Projekte in den Sinn. Hauptsächlich IoT-Anwendungen mit Batteriebetrieb, die nur sporadisch neue Inhalte anzeigen. Eine kleine Wetterstation, die den Verlauf von Sonneneinstrahlung und Temperatur misst, wäre so ein Projekt.
 
Am Ende fand mein Display in meinem „Off-Grid“-Camping-Wagen Verwendung. In diesem Anhänger hatte ich diesen Sommer viel Zeit verbracht. Er wird über ein 200-W-Solar-Panel plus Autobatterie als Speicher mit Strom versorgt und macht mich so unabhängig vom Netz. Mithilfe eines Shunt-Widerstands und eines Arduinos messe ich den vom Paneel erzeugten Strom und kann mir so den Ertrag der letzten Stunde bzw. des gesamten Tages anzeigen lassen.
 

 
So kann ich am Abend ungefähr abschätzen, wie viel Energie zur Verfügung steht. Eine Ladestandsanzeige ist bei Blei-Akkus ja bekanntlich nicht sehr genau. In Planung ist der Umstieg auf Lithium-Ionen-Akkus. Der Ladezustand soll dann mit auf dem Display dargestellt werden. Die Anzeige des im Tagesverlauf erzeugten Stroms lässt mich die Ausrichtung der Solarzellen während einer sonnigen Woche optimieren.
 
Durch die Verwendung eine ePaper-Displays geht sehr wenig Energie verloren, was vor allem in bewölkten Wochen wichtig ist. Am Ende zählt hier jede Wattstunde, um das Handy noch einmal laden zu können. Weiterhin wird das Display auch nach Abschaltung der Messelektronik den letzten Ladestand der Batterie anzeigen, sodass man im Winter nach Wochen ohne Sonnenschein immer noch ablesen kann, wie viel Energie zur Verfügung steht.
 
Durch die Lesbarkeit im Sonnenlicht konnte ich das Display außerdem von innen am Fenster anbringen, sodass ich alle Daten beim nach Hause kommen ablesen und mich über die gesammelte Energie freuen kann.
 

 
Alles in allem bietet das kleine Display also viele Anwendungsmöglichkeiten und kann mit seinen speziellen Eigenschaften besondere Nischen besetzen. Das Display ist auch für Anfänger einfach zu implementieren und zu vielen Mikrocontrollern kompatibel.