ESP32 mit 7,5 Zoll epaper-Display als Anzeige

Begonnen von smmmo, 13 Mai 2018, 21:28:36

Vorheriges Thema - Nächstes Thema

smmmo

Hallo,

eine Weile lang hatte ich einen Kindle zur Darstellung von Temperatur-Werten aus fhem im Einsatz. Leider war die Lösung bei mir a) nicht sehr stabil und b) kommt man nur schwierig an jailbreak-empfängliche Geräte. Daher habe ich schon länger auf bezahlbare epaper-Lösungen gewartet, bei denen man zudem ohne Hacks an Ziel kommt.

Dann kam der c't-Artikel "Ausdauernde Infotafel - Drahtloses Türschild mit E-Paper-Display" und das damit verbundene Projekt DoorsignEPD. Damit ist es recht einfach möglich, fhem-seitig die bisherige Kindle-Lösung zu nutzen. Und noch besser: Nicht einmal Löt-Kenntnisse sind erforderlich.

Verwendete Teile:
- ESP32: AZDelivery ESP32 NodeMCU Module Wlan Wifi Development Board mit CP2102 (Nachfolgermodell zum ESP8266). ca. 15 Euro.
- epaper: Waveshare 7.5 Inch E-Paper Display HAT Module Kit 640x384 Resolution 3.3v E-ink Electronic Paper Screen with Embedded Controller. ca. 60 Euro.
- Bilder-Rahmen

Ergebnis: siehe Bild im Anhang (Die Namen meiner Geburtstagsliste habe ich geschwärzt, daher die schwarzen Balken auf dem Foto).

Vorgehen zur Installation:
- Verkabeln von ESP32 und epaper
- Software mittels "Arduino IDE" auf den ESP32 bringen: DoorsignEPD
- Genau wie bei der Kindle-Lösung ein svg-file mit Text-Variablen erstellen und in fhem per FReplacer diese Text-Variblen durch konkrete Werte ersetzen lassen. Ist alles im Kindle-Wiki-Eintrag beschrieben.
- DoorsignEPD lässt es, zu einen Pfad zum generierten png anzugeben, das dann regelmässig (Dauer konfigurierbar) neu geladen wird. Das png muss zur Darstellung für's epaper noch umgerechnet werden, aber das dazu nötige Skript kommt schon bei DoorsignEPD mit.
- Sobald alles läuft: epaper im Bilderrahmen unterbringen

Was aktuell bei mir noch verbesserungsbedürftig ist, ist die pixelige Darstellung des Texts.
Meine Lösung hängt ausserdem dauerhaft per USB am Strom. Da kann man natürlich auch schöner lösen, aber dafür fehlen mir die Bastler-Kenntnisse.

Falls jemand Interesse hat, kann ich gern noch weiter ins Detail gehen.

Grüße
smmmo

Update vom 30.06.2019:
Eine ausführliche Anleitung von bart0190 findet ihr hier: https://forum.fhem.de/index.php/topic,87778.msg953828.html#msg953828

pc1246

Moin
Sehr interessant! Warum hast du es nicht auch, wie die ct', mit einer/m Batterie/Akku geloest?
Kann man die Qualitaet nicht angeben beim Berechnen?
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

smmmo

Hallo,

bezgl. Akku/Batterie war die Beschreibung im c't-Artikel einfach zu knapp für mich bzw. und mir fehlt das KnowHow, was ich zu tun und zu beachten habe. Dachte schon daran, eine einfache Powerbank per USB dranzuhängen, aber es hat sich herausgestellt, dass die sich (wegen des niedrigen Stromverbrauchs vom ESP32?) einfach abschaltet.

Die Berechnung des png mache ich aktuell so:

inkscape -z -e /opt/fhem/www/images/Basi_generated.png -w 2560 -h 1536 /opt/fhem/www/images/Basi_generated.svg

Heraus kommt damit:

Area 0:0:640:388 exported to 2560 x 1536 pixels (380,041 dpi)

Die Auflösung noch höher zu drehen, bringt leider nichts. Evtl. muss ich eine andere Schriftart nehmen, die sich besser skalieren lässt?

Grüße
smmmo

gloob

Ich hänge mich mal zum lauschen mit dran.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

nils_

lese auch mal mit....


das display hab ich auch zu Hause rumliegen, aber bisher noch keine zeit gehabt damit was zu basteln  :-\
viele Wege in FHEM es gibt!

rabehd

Auch funktionierende Lösungen kann man hinterfragen.

Bapt. Reverend Magersuppe

Könnte man nicht den ESP selber die Anzeige rendern lassen?
Der soll doch recht potent sein.
--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

pc1246

Zitat von: smmmo am 14 Mai 2018, 13:16:10
Hallo,

bezgl. Akku/Batterie war die Beschreibung im c't-Artikel einfach zu knapp für mich bzw. und mir fehlt das KnowHow, was ich zu tun und zu beachten habe. Dachte schon daran, eine einfache Powerbank per USB dranzuhängen, aber es hat sich herausgestellt, dass die sich (wegen des niedrigen Stromverbrauchs vom ESP32?) einfach abschaltet.

Die Berechnung des png mache ich aktuell so:

inkscape -z -e /opt/fhem/www/images/Basi_generated.png -w 2560 -h 1536 /opt/fhem/www/images/Basi_generated.svg

Heraus kommt damit:

Area 0:0:640:388 exported to 2560 x 1536 pixels (380,041 dpi)

Die Auflösung noch höher zu drehen, bringt leider nichts. Evtl. muss ich eine andere Schriftart nehmen, die sich besser skalieren lässt?

Grüße
smmmo
Moin
Mal ne kurze Frage: Warum vervierfachst du die Aufloesung, oder verstehe ich da etwas falsch? Wer rechnet das zurueck?
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

smmmo

Zitat von: pc1246 am 15 Mai 2018, 06:57:41
Warum vervierfachst du die Aufloesung, oder verstehe ich da etwas falsch? Wer rechnet das zurueck?
Wenn ich mein svg (640*384) per inkscape mit exportiere, wird es sehr blurry. Durch das Vervierfachen erhalte ich eine schärferes png. Ich kann es dir nicht begründen, aber es hat geholfen.
Das Runterrechnen übernimmt static_image.php.

Grüße
smmmo

pc1246

Moin
Und Danke fuer die Info!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Laffer72

Hallo smmmo,

danke für Deinen Post. Ich habe die Teile für das Türschild auch schon länger zuhause liegen, bin aber bisher noch nicht wirklich dazu gekommen das ganze zu verwirklichen.
Aufgrund habe ich mich jetzt endlich drangemacht.
Wie funktioniert das mit dem Bild übertragen. Irgendwie werd ich da aus dem ct-Artikel nicht richtig schlau.
Muß ich einen eigenen Server aufsetzen oder kann das auch über FHEM funktionieren?
Ich habe gesehen Du speicherst Das Bild im FHEM/www/images-Verzeichnis ab, wie erfolgt die Umwandung mit staticimage?

Danke schonmal für Deine Mühe.

Viele Grüße

Reinhard
Raspberry Pi Rev.B, FB7390 (FHEM2FHEM), Sonos, Smarter Coffee
Osram Lightify:2m LED-Streifen, 5m-LED-Streifen, Gartenspot, Surface 28W, Classic E14,E27, Classic RGBW E27, PAR16 GU10, Plug
CUL868:FS20-ST, FS20-DI, FS20-FMS, FS20-ES1
HMUSB:HM-Sec-RHS,HM-Sec-MDIR2
Jeelink868:TX-29-IT, TFA30.315

tomster

Zitat von: smmmo am 13 Mai 2018, 21:28:36
Was aktuell bei mir noch verbesserungsbedürftig ist, ist die pixelige Darstellung des Texts.

Das Problem kenne ich von anderer Stelle. Um wirklich die Darstellungsfähigkeiten eines Displays auszunutzen, MUSS man pixelgenaue Graphiken; sprich am Besten native Graphikengines benutzen. Das generierte PNG ist auf Grund der hohen Auflösung für das Auge schön scharf. Da aber das dafür verwendete Raster nicht mit dem Pixelraster des Displays übereinstimmt, werden bei der Darstellung eben in Teilbereichen 2 (oder mehr) nebeneinanderliegende Pixel angesprochen. Das Problem wird durch das "Runterrechnen" sogar noch verstärkt. Insgesamt "franst" der Text dann aus. Bei Ebook-Reader kann man das Phänomen ganz gut sehen. Text ist eigentlich immer recht scharf wenn man die Standard-Schrift und -größe verwendet, weil der Schriftsatz genau auf das Pixelraster des Readers ausgelegt ist. Bei anderer Schriftart oder bei Graphiken schaut es hingegen immer leicht ausgefranst aus.

Ich hab vor einiger Zeit an einem OLED-Display am ESP8266 gefrickelt:
https://forum.fhem.de/index.php/topic,50697.0.html

Dabei war es notwendig den kompletten Zeichensatz für die Textausgabe (also wirklich jeden einzelnen Buchstaben und jede Ziffer) in den Sketch zu miteinzukompilieren. Nur so konnte ich wingfighter eine einigermaßen scharfe Darstellung von Text erreichen. Lediglich der knappe Speicher des ESP8266 hat den dabei verwendbaren Umfang begrenzt. Aber zumindest dieses Problem dürfte beim ESP32 etwas geringer ausfallen.


smmmo

Zitat von: Laffer72 am 18 Mai 2018, 09:30:05
Wie funktioniert das mit dem Bild übertragen. Irgendwie werd ich da aus dem ct-Artikel nicht richtig schlau.
Muß ich einen eigenen Server aufsetzen oder kann das auch über FHEM funktionieren?
Ich habe gesehen Du speicherst Das Bild im FHEM/www/images-Verzeichnis ab, wie erfolgt die Umwandung mit staticimage?
Sorry, habe deine Frage erst jetzt gelesen.

Ja, da muss tatsächlich noch ein Server laufen, bei mir ist das ein nginx. Meine config sieht so aus:

upstream php-handler {
    server unix:/var/run/php/php7.2-fpm.sock;
}

server {
        server_name xxx;
        listen 80;

        root /var/www;
        index index.html index.htm;

        location /ardu {
                root   /var/www;
                index  index.php;

                allow 192.168.178.0/24;
                deny all;

                location ~ ^/ardu(/.+?\.php) {
                        root /var/www;
                        fastcgi_index index.php;
                        fastcgi_param PATH_INFO $1;
                        include fastcgi.conf;
                        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                }
        }
}
[...]


Dann habe ich einen symbolic link zum generierten file angelegt und alle anderen files in static_image gelöscht (sonst wird zufällig irgendeines der images verwendet):

root@xxx:/var/www/ardu/DoorsignEPD/server/contents/static_image# ls -l
insgesamt 0
lrwxrwxrwx 1 root root 39 Mai  1 14:28 basi.png -> /opt/fhem/www/images/Basi_generated.png


Grüße
smmmo

gerhardg

Waveshare hat auch ein esp8266 Board, bzw findet man dort passenden Beispielcode um die Bilder direkt am ESP zu rendern.

https://www.waveshare.com/wiki/E-Paper_ESP8266_Driver_Board


kennymc.c

Etwas zum Them Batteriebetrieb: Andreas Spiess hat auf YouTube eine ganz gute Zusammenfassung von ESP32 Boards mit LiPo Batterie-Anschluss und USB Ladefunktion erstellt. Dazu gibt es auch eine Tabelle mit nützlichen Infos wie dem Stromverbrauch. Leider fehlt das relativ neue Wemos D32, wo man noch herausfinden muss, ob die verbauten LEDs auch in Deep Sleep aktiv sind. Mit Batteriebetrieb kann das die Dauer ja recht massiv beeinflussen. Im Prinzip kann man dann aber alles mit einem 3,7V LiPo Akku betrieben. Müssten dann eigentlich auch in einen entsprechenden Rahmen, z.B. IKEA Ribba, passen.

Wird das Display während des Deep Sleeps noch mit Strom versorgt? Ansonsten müsste man das ja noch mit zum Verbrauch dazu rechnen.