HD44780 als "WirelessDisplay" via WiFi

  • Hallo,


    ich möchte kurz eine Idee vorstellen, die mir heute kam und um etwas Feedback bitten.


    Momentanten Situation:
    Ich habe einen Raspi2 mit OpenELEC+Kodi. Daran betreibe ich auch mein Ambilight. Außerdem hängt dort noch ein HD44780 dran, welches mir den aktuellen Titel usw. anzeigt.


    Problem:
    Einige Addons fehlen mir einfach, z.B. Spotify, Netflix, Amazon Instant Video. Bzw die Versionen, die es ggf. gibt, funktionieren nicht richtig, sind umständlich, werden nicht mehr weiterentwickelt und funktionieren irgendwann gar nicht mehr.


    Lösung:
    Den Pi durch eine Android TVBox ersetzen und Kodi, sowie Spotify, Youtube etc. darauf als App nutzen.
    Habe mir nun die Frage gestellt, welche Nachteile das denn so mit sich bringt:


    1. Bedienung mit TV-Remote via HDMI-CEC?
    Soll wohl Kisten geben, die das auch unterstützen. Müsste man beim Kauf drauf achten.


    2. Die Boxen haben doch gar keine GPIOs, funktioniert Ambilight dann noch?
    Ich würde die Kodi App + Hyperion Addon nutzen.
    Ambilight würde weiter über den Pi laufen. Hoffe ich habe das richtig verstanden, dass die Signale für das Ambilight dann von dem Hyperion-Addon, über das Netzwerk, zum Hyperion-"Server" auf dem Pi geschickt werden.


    3. Die Boxen haben immer noch keine GPIOs, kriegt man dann das LCD-Display noch irgendwie zum laufen?
    Und das ist der springende Punkt...
    Das Display ist für mich eigentlich nur nice to have. Da ich aber momentan ohnehin auf der Suche nach einem Projekt für mein Studium bin und ich da irgendwie bock drauf hab, dachte ich mir, ich könnte mich ja mal damit beschäftigen.


    Die Idee:
    Wenn keine GPIOs vorhanden sind, dann sag ich halt einem anderen Gerät, welches GPIOs hat, dass es das für mich erledigen soll.
    Das Hd44780 würde also einfach am Raspi angeschlossen bleiben. Dieser würde es weiterhin mit Daten füttern, allerdings nicht mehr mit den Daten die er direkt von Kodi erhält, sondern mit Daten, die er von einer externen Quelle, in diesem Fall also der Andoid TV-Box, erhält. Es müsste also ein Plugin für Kodi geschrieben werden, was die anzuzeigenden Daten via Netzwerk, an den "Displayserver" schickt. Dann zeigt das Display zwar nur Daten von Kodi an, das reicht mir aber auch (zumindest erstmal).
    Der "Displayserver" müsste die Daten entgegennehmen und auf dem Display darstellen. Ich schreibe extra "Displayserver" und nicht explizit RaspberryPi, weil ich mir stattdessen auch gut einen ESP8266 mit integriertem WLAN vorstellen kann. Da in meinem Fall allerdings ohnehin der Pi für das Ambilight läuft, wäre das wohl am naheliegendsten.


    Was sagt ihr dazu?
    Ist das generell machbar? Wie schätzt ihr den Schwierigkeitsgrad ein?
    Hättet ihr eine bessere Idee, wie man das Display an einer AndroidBox zum laufen kriegt?


    Oder gibt es vielleicht sogar schon eine Lösung, die ähnliches leistet?


    Vielen Dank für Euer Feedback!

    Edited once, last by s0nny ().

  • Dein Projekt scheint recht anspruchsvoll zu sein. Was für Anschlüsse hat denn die Andriod Box? Falls die Box einen USB, DVI o. zugänglichen internen I2C hat, könnte man per Portexpander GPIO Ports bereitstellen, bzw. direkt ein LCD mit I2C daran betreiben. Für so eine Aufgabe würde ich aber schon eher einen Mini-PC, Thinclient o.ä. für die Hardware in Erwägung ziehen.

  • Ich hab eine FireTV stick, seit dem läuft die Rpi nur mehr selten.
    Display Client müsste dann wohl ein Kodi-Addon sein. Keine Ahnung ob man das hin bekommt, hab bisher nur Music und Video Addon programmiert. Würde aber eher diesen weg gehen.

    Edited once, last by evil ().

  • Warum sollte das Ambilight nicht gehen?


    Android TV Stick oder Whatever an HDMI Splitter / AVR dann zum HDMI to Chinch Converter -) Grabber vom Pi und dann zu den Leds!

    Wenn's brennt 112 hilft weiter!


  • Was für Anschlüsse hat denn die Andriod Box? Falls die Box einen USB, DVI o. zugänglichen internen I2C hat, könnte man per Portexpander GPIO Ports bereitstellen, bzw. direkt ein LCD mit I2C daran betreiben.


    Typischerweise nur USB und HDMI. Allerdings hab ich die noch nicht. War erstmal nur so ein Hirngespinst, deswegen hab ich mir darüber noch gar keine Gedanken gemacht. Vll wird es auch eine GeekBox, die hätte ja wiederum GPIOs. Aber damit muss ich mich dann erstmal beschäftigen.
    Ich denke auch, das mit dem Kodi-Addon werde ich erstmal hinten anstellen. Als erstes werde ich versuchen, überhaupt mal externe Daten auf das Display geschoben zu kriegen. Werde das Projekt jetzt glaub ich erstmal unter dem Deckmantel, das HD44870 über Netzwerk zu füttern, versuchen.
    Ob ich das letztendlich unbedingt benötigen werde wird sich zeigen. Aber klingt für mich erstmal nach einer interessanten und spannenden Aufgabe.



    Warum sollte das Ambilight nicht gehen?
    Android TV Stick oder Whatever an HDMI Splitter / AVR dann zum HDMI to Chinch Converter -) Grabber vom Pi und dann zu den Leds!


    Oh stimmt, so geht das ja eigentlich, daran hab ich gar nicht gedacht :lol: . Ich nutze in meinem Setup weder HDMI Splitter, noch HDMI-Chinch Converter. Ich nutze nur Kodi selbst als Quelle und das Signal für TV, welches ich aber direkt aus dem TV über Scart geliefert kriege (zum Glück geht das, da ich einen integrierten Tuner habe würde ich sonst nicht an das Signal kommen). War billiger und andere Quellen hab ich normalerweise sowieso nicht angeschlossen.
    Aber falls ich dann auch außerhalb von Kodi Ambilight brauche, wäre das natürlich die Lösung.

  • Da ich nun erstmal das Kabellose Display bauen möchte, hab ich mich dazu entschlossen, erstmal den ESP8266 zu verwenden. Einerseits weil er kleiner ist und das Display damit wirklich mobil werden könnte. Andererseits weil ich meinen Pi nicht hinter dem TV vorholen wollte weil ich ihn ja noch als Mediacenter usw. benutze. Würde das ganze dann später ggf. nochmal auf dem Pi versuchen. Und den ESP8266 hab ich eh schon da, also kann ich direkt loslegen.
    Das ganze scheint einfacher zu sein als anfangs gedacht. Auf dem ESP8266 läuft ein Webserver an den ich Daten via URL-Parameter oder als JSON übergeben kann. Das hab ich nun erstmal in einfacher Form probiert und das funktioniert auch.
    Meine Frage bezieht sich nun auf dem Anschluss des Displays. Ich weiß, dass das hier kein ESP8266 Forum ist, aber ich bin mir sicher, der eine oder andere wird mir die Frage auch beantworten können.


    Ich hab mir ein I2C Interface für das Display und einen 4Kanal Levelshifter gekauft. Das dauert aber wohl noch, bis die da sind.
    Solange würde ich das Display gern konventionell mit 7 Leitungen, also 4Bit, anschließen.
    Allerdings hat der ESP8266 ja, wie der Pi auch, nur 3V3 I/O Logik und das HD44780 benötigt eigentlich 5V.
    Über die 5V Toleranz des ESP8266 liest man im Internet Gegensätzliches, letztendlich soll er aber wohl wahrscheinlich 5V tolerant sein. Gehen wir hier einfach mal davon aus, dass er es nicht ist.


    [Mutmaßung]
    Wenn ich das Display also konventionell als 4-bit an den ESP anschließe, sollte dem ESP nichts passieren (auch wenn er nicht 5V tolerant sein sollte), weil die 5V vom Display nicht zu dem ESP gelangen bzw. alle angeschlossenen GPIOs auf OUTPUT geschaltet sind!?
    Das einzige was passieren kann ist, dass das Display nicht funktioniert. Zerstört wird allerdings nichts.
    [/Mutmaßung]

    Ist die Aussage so richtig?
    Immerhin funktioniert das Display ja auch am Pi ohne ihn zu zerstören.
    Sollte das Display so nicht funktionieren, und das jetzt nur rein informativ, müsste ich zwischen alle 7 Leitungen (4Bit) die vom ESP zum Display führen, einen Levelshifter 3V3 -> 5V verbauen!?

    Edited once, last by s0nny ().

  • Hi,


    Solange R/W am LCD LOW ist und bleibt müsste das Display still bleiben.
    Ob es mit den 3.3v Pegeln vom ESP direkt klappt hab ich nicht getestet, vermute aber schon.
    Kaputt gehen kann beim testen aber nix. Und ja, wenn es überhaupt nicht klappt Pegelwanlder für alle Leitungen.
    Man könnte dem LCD aber auch noch etwas entgegenkommen indem man die Versorgungsspannung vom ESP auf 3.6V erhöht.
    (Oder eventuell die Versorungsspannung vom LCD senken, weiß aber gar nicht wie tolerant die ist.)


    Ich hab mir vor einiger Zeit auch ein Wlan LCD mit einem ESP gebaut. Und um da bezüglich der Pegel auf der sicheren Seite zu sein hab ich das Display nicht direkt an den ESP gehängt sondern über ein 74HC595 dessen Versorgungsspannung mit einer einfachen Diode auf ca. 4.4V gesenkt wurde.
    ESP-03(3.3V) -> 74HC595(~4.4V) -> LCD(5V)
    Das Schieberegister wird dabei vom ESP per Hardware SPI mit Daten versorgt und das ganze funktioniert soweit super zuverlässig.
    Hab inzwischen auch eine kleine Platine dafür gezeichnet aber noch nicht fertigen lassen, ist eine Art "Backpack" geworden.

    DON'T PANIC!

    Edited once, last by joh.raspi ().

  • Hi,


    Hab mal ein paar Bilder vom Schaltplan und Layout sowie einen Arduino Sketch angehängt.


    Das LCD wird mit der LiquidCrystal Lib von Adafruit angesteuert, die Idee hinter dem Sketch ist alle Funktionen welche die Lib zur verfügung stellt über eine einfache HTTP API verfügbar zu machen.
    Funkioniert soweit auch alles allerdings ist der Sketch nur schnell schnell zusammengehackt und noch nicht "fertig". Das letzte was ich gemacht habe war ein minimalistisches Webinterface um bequem die einzelnen Funktionen testen zu können. Was, neben generell nochmal alles überarbeiten, noch fehlt ist das Interface um eigene Zeichen zeichnen/definieren zu können, klappt aber mit einer lokalen .html auf dem Desktop schon.


    Um den Sketch kompilieren zu können braucht man neben der LiquidCrystal Libarary auch noch die ArduinoJson Library. (Kann beides über den "Library manager" installiert werden)


    Anpassen muss man nur die Zugangsdaten zum Wlan Netzwerk (sta_ssid und sta_password).


    Während sich der ESP dann mit dem Wlan Netzwerk verbindet wird "Connecting to AP" auf dem LCD angezeigt, ist er verbunden "Ready.".
    Anstatt einer statischen IP verwende ich MDNS um das LCD im Nerzwerk zu finden. Erscheint das "Ready" kann man sich dank MDNS über http://lcd.local dem LCD verbinden und es erscheint das erwähnte Webinterface zum testen. (Voraussetzung für MDNS: https://github.com/esp8266/Ard…ies/ESP8266mDNS/README.md)


    Werd mit dem ganzen aber erst bis frühestens in 2 Wochen weiter machen. Bis dann hab ich auch die Platinen.
    Das ganze ist aber nur die Umsetzung eine ersten Idee für so ein Wlan LCD auf ESP8266 Basis....

  • Hallo,
    hab den Prototypen soweit auch fertig. Alles noch auf Breadboard und der Code ist auch noch eher "alpha", aber die Grundsätzlichen sachen hab ich erstmal drin.
    Ich steuer das Display nun via I2C an. Auf dem ESP läuft dann der Webserver, dem ich die anzuzeigenden Daten via HTTP GET oder POST als JSON übergeben kann.
    Für die WLAN Konfiguration nutze ich diese Library: https://github.com/tzapu/WiFiManager
    Wenn der ESP sich nicht verbinden kann (kein WLAN konfiguriert oder das konfigurierte WLAN nicht in Reichweite), baut er einfach einen eigenen AP mit Webinterface auf, über welches man die WiFi-Settings vornehmen kann. Und das ganze mit gerade mal 2-3 Zeilen Code. Feine Sache!
    Im großen und ganzen war das alles einfacher als ich gedacht habe.