ePaper Dashboard
Das POE betriebene ePaper Dashboard als Smart Home Display
Nach 3 Jahren Erfahrung mit meinem WLAN Display sollte es eine Neuentwicklung meines ePaper Dashboard geben. Die Haupterkenntnis war, dass eine solche Anzeige einen festen Platz bekommt und somit als stationäres Gerät gesehen werden kann. Ein Akku-/WLAN-Betrieb erschien mir somit mittlerweile als unnötig, bzw. sogar nervig. Selbst wenn der Akku nur einmal im Monat geladen werden muss, empfindet man dies irgendwann als lästig. Die neue Version sollte also Kabelgebunden sein. Hierfür gibt es natürlich wieder mehrere Optionen für die man sich entscheiden kann. Entweder mit WLAN und Steckernetzteil, oder gleich per Netzwerk. Da ich mich ohnehin schon länger mit dem Thema POE (Power Over Ethernet) beschäftigen wollte, war die Entscheidung schnell getroffen.
Umsetzung des Projekts
Die Herausforderung war es also ein Netzwerkbetriebenes ePaper Dashboard zu bauen, welches gleichzeitig per POE mit Strom versorgt wird. Weiter war es mir wichtig eine möglichst schnelle Umschaltzeit zu erreichen, da der Refresh von einem ePaper optisch nicht unbedingt angenehm anzusehen ist. Das schaffen aktuell nur sogenannte RAW Displays. Zum Einsatz kommt also ein 6 Zoll RAW Display. Ich kaufte mir die Version von Waveshare, mit entsprechender Ansteuerplatine. Mittlerweile gibt es dort nur noch die 6″ HD Version mit wesentlich höherer Auflösung. Das klingt natürlich erstmal gut, die Datenmenge ist im Vergleich aber viel höher, dazu später mehr.
Komponenten und Platine
Als erstes musste nun eine Platine erschaffen werden, die alle gewünschten Funktionen bereitstellen kann. Die erste Idee war die Waveshare Platine mitzubenutzen. Zum Testen ist so ein Produkt ja recht schön, dies aber Kompakt unterzubringen ist kaum möglich. Ich musste also alles auf meiner eigenen Platine unterbringen. Der Aufwand war dadurch erheblich höher, das Ergebnis entlohnt aber definitiv. Ich war mir nicht sicher welcher Controller nötig ist um einen ordentlichen Datendurchsatz über Netzwerk zu bewerkstelligen. Am Ende wurde es ein Teensy 4.0, der 600Mhz leisten kann. Ein ESP32 wäre eventuell auch ausreichend, den kannte ich zu beginn des Projekts allerdings noch nicht. Nach vielen Tests bezüglich Stromverbrauch und Geschwindigkeit läuft der Teensy nun mit 450Mhz.
Die Netzwerkanbindung wird von dem bekannten Wiznet w5500 umgesetzt. Für die POE Integration gibt es fertige Module, das hätte aber die Bauhöhe meiner Platine eventuell beeinflusst. Meine Motivation war auch das selbst zu lösen. Dazu fand ich eine Application Note basierend auf dem LTC4267 Chip, die ich übernehmen konnte. Die ePaper Ansteuerung entspricht 1:1 der des Waveshare Modul.
Der erste Prototyp der Platine funktionierte tatsächlich auf anhieb. Die Hardware stellte somit relativ wenige Hürden dar und es konnte mit der Software weitergehen.
Software und Systemkonzept
Bei der Software war für mich klar, dass ich wie beim WLAN Display das Bild nicht vom Mikrocontroller, sondern vom Server rendern lassen will. Dieses Konzept hat sich für mich bewährt und bietet für mich einfach mehr Flexibilität. Klar war aber auch, dass die Datenmenge durch 4bit Graustufen und eine Auflösung von 800×600 Pixel relativ hoch sein würde. Als unkomprimiertes Bild sprechen wir hier von 240KiB Daten. Bei der neueren 6″ Version mit 1448×1072 Pixel wären das sogar an die 800KiB. Deshalb ist die ältere Variante deutlich besser geeignet, zumal die Auflösung völlig ausreichend ist.
Das Anzeigebild wird wie bei meinem alten ePaper Dashboard als HTML/PHP Seite angelegt und kann so sehr einfach und flexibel gestaltet werden. Zum Übertragen wird die Seite diesmal mit dem Chrome headless Browser gerendert und als PNG Bild abgespeichert. Um die Daten nicht unkomprimiert übertragen zu müssen, dekomprimiert der Teensy das Bild selbst. Ein Skript schickt die Bilddaten per POST Request zum Display wo sie verarbeitet und auf dem Display angezeigt werden.
Stromverbrauch
Der Stromverbrauch sollte nach Möglichkeit auch gering gehalten werden. Eine Netzwerkverbindung ist allerdings recht Stromintensiv, deshalb bewegen wir uns gesamt bei 0,5W. Trotzdem habe ich auch hier versucht möglichst viel einzusparen.
Ich habe sehr viele Tests in Sachen Strombrauch gemacht. Am meisten Strom verbraucht tatsächlich der Netzwerkchip selbst. Eine Option wäre den Netzwerkchip schlafen zu legen und zyklisch nach neuen Daten zu fragen. Diese Variante hätte am meisten Stromsparpotential, ich wollte aber lieber dauerhaft Zugriff auf das Display haben. Es bringt aber auch schon extrem viel die Netzwerkverbindung auf 10Mbit runterzusetzen. Allein hiermit spart man einiges ein.
Die zweite Stelle an der noch etwas zu sparen geht ist der Prozessor selbst. Die Grundidee ist den Prozessor dauerhaft schlafen zu legen und vor der Bildübertragung per Wake on Lan über den Netzwerkchip aufzuwecken. Das funktioniert auch genau so, dennoch liegt der Verbrauch bei aktivem Netzwerk bei ~100mA. Wenn man den Power Down Mode des Netzwerkchip nutzt, kommt man auf ~45mA runter. Dennoch macht das ganze Sinn, denn wenn man ohnehin POE Geräte nutzt, wird sich das auf den Verbrauch des Switches nicht sonderlich auswirken und es sind keine weiteren Steckernetzteile nötig.
Eine weitere Idee ist es, den POE Port des Switches in der Nacht, bzw. während keiner zu Hause ist abzuschalten. Hierfür ist allerdings ein professioneller Switch mit SNMP nötig, bei dem über ein Protokoll einzelne POE Ports geschaltet werden können.
Timings
Der letzte wichtige Punkt ist natürlich wie lang es dauert ein Bild darzustellen. Hier hat meine Idee die größte Schwäche gegenüber anderen Ansätzen. Andererseits spielt es am Ende keine so große Rolle, da ein Dashboard keine häufigen Updates benötigt. Um die Zeiten einordnen zu können sei angegeben, dass ich mit einem Raspberry Pi 4 als Server arbeite. Alle Zeiten basieren auf dessen Leistung. Zum Darstellen des Bildes sind prinzipiell drei Schritte notwendig.
Für das Rendern der HTML Seite in ein PNG Bild habe ich mich wie schon beschrieben für den Chromium Browser entschieden. Ich habe verschiedene Screenshot Tools ausprobiert, die auch teilweise schneller waren. Es gab aber irgendwo immer Probleme ob Darstellung, oder Langzeit Kompatibilität. Beim Chromium bin ich mir sicher, dass er das ausgibt was ich will und das auf Dauer. Für das Rendern des Bildes werden ca. 1,6s benötigt.
Da der Chromium Browser es scheinbar nicht ermöglicht eine Farbtiefe für das Bild vorzugeben, wird ein 32bit Bild ausgegeben. Um die Datenmenge zu reduzieren ist also ein weiterer Schritt nötig. Dazu wird das Bild mit ImageMagick aufs nötigste reduziert.
Der nächste Schritt ist die Übertragung zum Display. Hier hatte ich erst sehr langsame Übertragungsraten. Die Hauptfaktoren für eine schnelle Übertragung sind CPU Takt des Mikrocontrollers und vor allem der SPI Takt zwischen Netzwerkchip und Mikrocontroller. Bei 450Mhz CPU Takt sind kaum Zeitverluste vorhanden. Wenn man weiter runter geht, bremst der Prozessor die Verbindung irgendwann ein. Den SPI Takt habe ich aktuell auf 60Mhz. Der Wiznet w5500 kann zwar bis zu 80Mhz, bei über 60 hatte ich allerdings irgendwann Probleme.
Sind die Daten auf dem Microcontroller angekommen wird das PNG decodiert und zum Display übertragen. Auch das dauert noch einen gewissen Moment. Insgesamt kann man von ca. 3 Sekunden für den Kompletten Prozess ausgehen. Das ist ordentlicher wert, wenn man bedenkt, dass normale ePaper Displays diese Zeit allein für den Bildwechsel brauchen.
Layout und Rahmen
Zu guter Letzt sollte das ganze auch noch schön aussehen. Ein grafisches Layout ist eine Herausforderung für sich. Ich habe versucht Ideen aus allen Projekten die ich kannte als Inspiration für ein schlichtes aber dennoch anschauliches Design zu nutzen. Mit vielen Informationen kann es leicht überladen aussehen, gesamt bin ich aber recht zufrieden mit dem ersten Layout. Es wird sich mit der Zeit sicher noch verändern, oder dynamischer werden. Durch die gewählte Technologie, kann man auch beliebig zwischen verschiedenen Ansichten wechseln.
Den Rahmen habe ich aus einem abgelagerten Eichenstamm gebaut. Entsprechend 4 Kanthölzer aus dem Stamm geschnitten und als Rahmen verleimt. Die Feinarbeit hat die CNC Fräse übernommen.
Fazit zum ePaper Dashboard
Ein für mich aufwendiges, aber erfolgreiches Projekt welches seinen Nutzen in der Anwendung auf jeden Fall findet. Durch längere Pausen lief das Projekt von der Idee bis zur Fertigstellung ca. 2 Jahre. Wirklich aktiv habe ich vielleicht 2 Monate am ePaper Dashboard gearbeitet.
Technische Daten
Display Typ: 6″ 800x600px 4bit Graustufen RAW (ED060SCT), 90,6×122,4mm
Platine: 100x80mm 2 Layer
Epaper Controller: IT8951E-64
µController: Teensy 4.0
POE chip: Linear Technology LTC4267
Netzwerkchip: Wiznet w5500
Rahmen: Eichenholz 156x127x25mm
Stromverbrauch
ePaper Peripherie: 20mA
Teensy 4.0 im sleep: 7mA
w5500 10Mbit: 75mA
w5500 PowerDown: 20mA
Gesamt: 101mA / 45mA
Downloads
folgen…