Forum: Mikrocontroller und Digitale Elektronik Beste Hard- Software für ansprechendes UI


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Nicht B. (florian01)


Lesenswert?

Hallo,

ich möchte für ein Projekt ein eher ansprechendes UI entwickeln:
- 3,5 bis 5 Zoll TFT
- Touch Eingabe
- soweit mir möglich ansprechendes Design

Ich experimentiere dazu gerade mit einem ESP32 und einem auf einem ESP32 
Terminal von Elecrow:
https://www.elecrow.com/esp-terminal-with-esp32-3-5-inch-parallel-480x320-tft-capacitive-touch-display-rgb-by-chip-ili9488.html

Die Design Software dazu ist SquareLine_Studio.
Das ganze lässt sich in exportieren und in ein Arduino Projekt 
einbinden.

Allerdings für mich eher sehr fummelig und schlecht integriert. Zum 
anderen habe ich es noch nicht außerhalb der Arduino IDE zum laufen 
bekommen, die ich sehr gerne vermeiden würde.

Jetzt habe ich das ganze grundsätzlich in Frage gestellt. Ich muss neben 
dem Display nur ein bisschen I2C betreiben, was auf fast jeder Hardware 
neben einem ESP32 machbar sein wird.

Was haltet ihr für die beste Hard/Software für ein derartiges Projekt?
Ich tendiere aktuell dazu gleich auf einen Raspi zu gehen :-/

Ich bin dankbar für alle Meinungen.
LG
Flo

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Nicht B. schrieb:

> Was haltet ihr für die beste Hard/Software für ein derartiges Projekt?

Kommt darauf an, was du selber kannst. Und darauf, welches Display du 
günstig und (zuverlässig) langfristig einkaufen kanst.

Wenn es nur um eine einmalige Lösung geht, ist wahrscheinlich irgendwas 
von Nextion oder Riverdi der schnellste Weg zum Ziel.

von Joachim S. (indoctius)


Lesenswert?

Die Aufgabenstellung ist als erste Salamischeibe übergeben, jedoch ist 
ein UI imho etwas mehr als nur ein paar bunte Icons mit 
Berührungsempfindlichen Flächen...

Es sind Infos/Daten die an das UI übergeben werden - wo kommen die her 
und in welchem Format bzw. mit welchem Protokoll (sowohl physikalisch 
als auch logisch) stehen die dann zur Verarbeitung bereit? Des weiteren 
wird dann auch möglicherweise etwas eingegeben, auf welchem Weg soll das 
dann weitergereicht werden?

Bereits vor über 30 Jahren funktionierten atemberaubende UI auf einer 
8-Bit-CPU in einem Brotkasten, ein ESP32 mit 32-Bit-CPU soll so etwas 
nicht können?
Klar, man kann mit einem 40-Tonner auch Brötchen holen, das ist 
möglicherweise schon die beste Option (weil man im Auflieger wohnt und 
die Parkplätze vorm Bäcker groß genug sind).
Es ist sicherlich hilfreich für alle Beteiligten wenn noch die eine oder 
andere Salamischeibe nachgereicht wir um eine bestmögliche Lösung zu 
finden.

von Philipp K. (philipp_k59)


Lesenswert?

Ich bin mir nicht ganz sicher, aber ein wt32sc01plus ist ein esp32 mit 
lvgl unterstützung.

Es ist ein bisschen schwierig das ganze zum laufen zu bekommen, aber bei 
dem Modell wird das 3.5" Display im Rahmen über die esp32 HW LCD API als 
8080  gesteuert. 8 bit parallel bei 20mhz mit Framesync, doppel 
framebuffer etc.. alles Hardware verwaltet.

Das entspricht der Datenrate eines 160Mhz Spi.

Ich habe es noch nicht selbst ausprobiert (ich liefer selbst nur einen 
Pointer auf Bilddaten die dann per dma geschrieben werden), aber lvgl 
Beispiele habe ich auch schon gesehen.

Edit: um platformIO kommt man da aber nicht drum herum, wie bei allen 
großen lvgl Projekten auch.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Nicht B. schrieb:
> Allerdings für mich eher sehr fummelig und schlecht integriert. Zum
> anderen habe ich es noch nicht außerhalb der Arduino IDE zum laufen
> bekommen, die ich sehr gerne vermeiden würde.

in den Links ist doch eine ausführliche Beschreibung wie es auch mit PIO 
geht: 
https://www.elecrow.com/wiki/index.php?title=ESP_Terminal_3.5-inch_Display_PlatformIO_Tutorial

lvgl ist eine sehr gute GUI Library, da gibt es nicht viel 
vergleichbares. Man kann auch ohne das SLS eigene GUIs erstellen, lvgl 
ist sehr gut dokumentiert und zu jedem Widget gibt es Beispiele.
SLS gehört auch nicht direkt zu lvgl, da gibt es gerade etwas Zoff im 
Paradies und die beiden arbeiten nicht mehr zusammen.

von Michael B. (laberkopp)


Lesenswert?

Nicht B. schrieb:
> ich möchte für ein Projekt ein eher ansprechendes UI entwickeln

Es gibt sehr ansprechende UI durch photorealistisch designte Backgrounds 
'sieht aus wie der emulierte Taschenrechner' oder 'das Cockpit eines 
Flugzeugs' die aber an Software nur Bitmaps und Klickpositionen 
erfordern.

Ein gutes UI ist also keine Frage der

Nicht B. schrieb:
> beste Hard/Software

sondern des eigenen Könnens.

von Philipp K. (philipp_k59)


Lesenswert?

Michael B. schrieb:
> Es gibt sehr ansprechende UI durch photorealistisch designte Backgrounds
> 'sieht aus wie der emulierte Taschenrechner' oder 'das Cockpit eines
> Flugzeugs' die aber an Software nur Bitmaps und Klickpositionen
> erfordern.

Eben.. ich suche mir sämtliche Bitmaps auf freepik oder so selbst 
zusammen, schneide und bearbeite die Photos in Gimp.. Speichere die als 
Raw in einer Datenpartition im Flash, lade diese teils ins 
PSRam(Transparenzbilder vorweg berechnen) und habe dann eigene Text und 
Grafikroutinen die am Ende einfach nur mit nem Pointer,width,height,x,y 
ins Display schreiben.. dabei bleibt sogar noch Rechen Zeit für 2 Layer 
und Transparenz.

Was natürlich bei SquareLine etc. cool ist das man sich alles selbst 
zusammenklicken kann und das ganze dann Schick und Performant wie ein 
Gui im Handy läuft.

Allerdings fand ich den Weg mit Squareline für eigene Spielereien zu 
aufwendig. Tut auch so.

von J. S. (jojos)


Lesenswert?

eine gute GUI hängt ja nicht nur an schönen Bitmaps, die lvgl Widgets 
bieten da einiges mehr. Es gibt die ganzen Standard Eingabemöglichkeiten 
wie DropDown Lists, Spinner, Picker, Buttons, Slider, usw. Da stecken 
zig Mannjahre Entwicklung drin, das kann mehr nur als ein paar Bitmaps 
anzeigen.

von Lothar J. (black-bird)


Lesenswert?

Michael B. schrieb:
> Ein gutes UI ist also keine Frage der
>
> Nicht B. schrieb:
>> beste Hard/Software
>
> sondern des eigenen Könnens.

Nicht nur das, auch ein ergonomisches und intuitives Design der Elemente 
und eine logische Bedienerführung sind wichtiger als der Prozessor.

Nicht B. schrieb:
> ich möchte für ein Projekt ...

Alles nur per "Touch"? Was ist das für ein Projekt, wo wird es 
eingesetzt und wer benutzt es?


Blackbird

: Bearbeitet durch User
von Nikolaus S. (Firma: Golden Delicious Computers) (hns)


Lesenswert?

Nicht B. schrieb:
> Hallo,
>
> ich möchte für ein Projekt ein eher ansprechendes UI entwickeln:
> - 3,5 bis 5 Zoll TFT
> - Touch Eingabe
> - soweit mir möglich ansprechendes Design
> Ich tendiere aktuell dazu gleich auf einen Raspi zu gehen :-/

Also das geht auf dem RasPi sehr schmerzlos zu realisieren. Habe erst 
vorgestern ein Waveshare 3,5 Zoll mit Touch an einen RasPi3B+ angehängt. 
Läuft out-of the box und bei Linux kann man dann viele verschiedene 
GUI-Toolkits und Programmiersprachen verwenden.

Ob das der richtige Weg ist hängt aber von ganz anderen Faktoren ab und 
läßt sich nicht pauschal beantworten:

- wird das ein Einzelstück oder ist es für Serienfertigung gedacht, wo 
es auf jeden Cent ankommt?
- was kostet Dich die Entwicklungszeit?
- womit möchstest Du Dich bevorzugt beschäftigen: Treiber&Low-Level und 
knapper Speicher oder Gestaltung der GUI?
- was kostet Dich die jeweilige Hardware?
- wie schnell/langsam darf das booten?
- willst Du was lernen oder ein System möglichst schnell fertigstellen?
- spielt Stromverbrauch eine Rolle oder nicht?

: Bearbeitet durch User
von Nicht B. (florian01)


Lesenswert?

J. S. schrieb:
> in den Links ist doch eine ausführliche Beschreibung wie es auch mit PIO
> geht:
> 
https://www.elecrow.com/wiki/index.php?title=ESP_Terminal_3.5-inch_Display_PlatformIO_Tutorial

Danke für den Link. Das Tutorial kannte ich in der Tat noch nicht. Wie 
hast Du das gefunden? Selbst wenn ich nach dem genauen Titel suche, 
kennt google diese Seite nicht :-/

Das hat mich tatsächlich sehr zügig zu einer kompilierbaren Version 
gerbracht. Allerdings auch wirklich nur mit exakt den Versionen aus dem 
Tutorial, die zum Teil nicht mehr aktuell sind - aber das passt für den 
Moment.

Was mir hier noch nicht ganz klar ist: Wieso wird hier parallel 
LovyanGFX und LVGL verwendet? Ersetzt das eine nicht das andere?

Ansonsten versuche ich gerade LVGL von SPI auf das RGB Interface 
umzustellen... ich bin dran, falls es jemand sofort weiß auch gerne :-)

von Nicht B. (florian01)


Lesenswert?

Alles was sonst geschrieben wurde stimmt schon auch großteils. Ich weiß, 
dass zu einem ansprechenden UI mehr gehört als ein paar Bilder. Ich 
wollte damit zum Ausdruck bringen, dass ich ungern auf absolutem 
Low-Level aufsetzen möchte und selbst einzelne Linien zeichnen muss.

Thema Preis, Bootzeit, ewiges "Kanonen auf Spatzen" Argument:
Es ist ein Einzelstück und wird es vermutlich auch bleiben. Daher nehme 
ich auch gerne einen 100€ Pi mit Display statt einem 40€ ESP mit 
Display, wenn ich das Problem damit in der halben Zeit lösen kann.
Das Thema Bootzeit ist hier natürlich ein Faktor.

von J. S. (jojos)


Lesenswert?

Nicht B. schrieb:
> Wie
> hast Du das gefunden?

du hast das Wiki verlinkt, das muss man nur lesen und ein- oder zwei 
Links weiter folgen...

Nicht B. schrieb:
> Ersetzt das eine nicht das andere?

LovyanGFX oder Bodmer/TFT_eSPI liefern nur die Basis für den lvgl 
Treiber. Für das Schreiben auf das Display braucht man eine Routine die 
schnell den (partiellen) Framebuffer in das Grafik RAM überträgt, und da 
haben die genannten Libs gut optimierte Funktionen für viele 
verschiedene Displays. Oder auch das Auslesen der Touch Koordinaten wird 
aus diesen Libs verwendet und im lvgl Input Treiber eingebunden.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Nicht B. schrieb:

> Das Thema Bootzeit ist hier natürlich ein Faktor.

Denn spezifiziere diesen Faktor!

Grob: du kannst die Bootzeit eines RasPi vom PowerUp bis zum Start 
deiner Anwendung auf ca. 10s bringen. Alles darunter ist illusorisch.

Du kannst während dieser 10s nichts eigenenes anzeigen, höchstens in der 
letzten Sekunde (aber immerhin über die ganze Zeit für einen neutralen 
"schwarzen Bildschirm" sorgen).

Wenn das für dich reicht, dann entwickelst du halt einfach eine eigenen 
App mit dem GUI-Framework, was du am besten beherschst. Da du vermutlich 
überhaupt keines beherrschst: such' dir irgendeines raus...

Das eigentliche Problem "Display" hast du damit aber noch nicht gelöst. 
Du hast die Wahl zwischen (vergleichweise teuer, aber einfach durch was 
anderes ersetzbar) einem HDMI-Display oder unzähligen "parallelen" LCDs, 
die du allerdings erst mal am RasPi zum Laufen bringen musst. Ohne ein 
ausführliches DB des Displays meist ziemlich hoffnungslos. Es sei denn, 
du nimmst eines, wo andere Leute diese Arbeit bereits erledigt haben und 
benutzt deren Setup. Also z.B. diverse Displays von Waveshare.
Oder letztlich: irgendwelche SPI-Gülle. Das ist aber für ein brauchbares 
GUI mit hohen grafischen Anforderungen (animierte Effekte) typisch viel 
zu langsam.

von Purzel H. (hacky)


Lesenswert?

Ich empfehl auch Nextion als Start. Ein GUI ist dort schnell und 
guenstig zusammengeclickt.
Alternativ sollte man das GUI auf dem PC Simulieren, ob die Bedienung 
ueberhaupt Sinn macht.

von Andreas R. (noobsen)


Lesenswert?

Wir haben auch bei vielen Projekten Nextion LCDs im Einsatz. Die kann 
ich auch nur empfehlen.
Kommunikation läuft über UART und alle "Bilder und Schrift" ist im LCD 
selbst gespeichert. Es muss also nur die UART Kommunikation im 
Mikrocontroller laufen.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

J. S. schrieb:

> eine gute GUI hängt ja nicht nur an schönen Bitmaps

Das ganz sicher nicht, eine "schöne" hingegen schon.

Das Problem: Die ganzen Deppen wollen erstmal nur "schön", nicht gut. 
Das gut auch wichtig ist, fällt diesen Honks immer erst viel später 
auf...

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich nutze seit ein paar Jahren TouchGFX von ST und habe damit bereits 
mehrere Projekte realisiert.

Als Hardware kann man eines der vielen ST Demo Boards verwenden, beim 
TouchGFX wählt man das Board aus und schon geht es los.

Relativ reinfach gemacht und funktioniert gut. Der Bildaufbau 
funktioniert gut und die bereitgestellte Steuerelemente reichen für mein 
Anwendungsfall aus. (Text, Buttons, Grafiken, Chat, Listen, Container 
für komplexere zusammengesetzte Elemente)

Als Board nutze ich das STM32H7B3I-DK da es relativ kompakt ist.

Programmieroberfläche:
- STM32CubeIDE
- STM32CubeMX
- TouchGFX
gibt es alles kostenlos von ST zum Download.

Unterstützung gibt es dazu viel im Internet, gute Doku, Forum und YT 
Demos.

Nachteil: Begrenzt auf STM32 Boards, bzw. Boards auf dem man einen STM32 
drauf hat, also kein ESP32.

von Philipp K. (philipp_k59)


Lesenswert?

Nicht B. schrieb:
> Was mir hier noch nicht ganz klar ist: Wieso wird hier parallel
> LovyanGFX und LVGL verwendet? Ersetzt das eine nicht das andere?

Jaein, lvgl nutzt Treiber (inkludierte Datei in der alles für das 
Display festgelegt wird). In Arduino möchte wohl keiner stundenlang in 
den Lvgl Sourcen rumwühlen, also ist lovyan quasi ein Wrapper auf den 
Treiber in Arduino Style. Lovyan ist optimierte e_spi mit erweiterten 
Funktionen aus adafruit gfx

Sonst müsste man den Displaytreiber ohne Arduino in IDF anpassen.

> Ansonsten versuche ich gerade LVGL von SPI auf das RGB Interface
> umzustellen... ich bin dran, falls es jemand sofort weiß auch gerne :-)

Mit RGB meinst du die parallele Schnittstelle? (16 bit parallel?)

Das könnte das im esp32 integrierte lcd HW Interface hinbekommen, da 
müsste es vielleicht irgendwo ein Beispiel für lovyan geben. Das ist 
Doppel so schnell wie mein 8bit parallel.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Markus M. schrieb:
> Nachteil: Begrenzt auf STM32 Boards, bzw. Boards auf dem man einen STM32
> drauf hat, also kein ESP32.

Obwohl es technisch natürlich auch ginge, nur wird das nicht unterstützt 
und ist wahrscheinlich auch lizenztechnisch nicht erlaubt.
Bevor ST sich Draupner einverleibt hat war touchGFX offen und es gab 
Beispiele für NXP oder andere Controller. Dafür war ein Teil der Lib 
geschlossener Binärcode und hat ein Wasserzeichen in die GUI gemalt.
touchGFX sieht auch sehr gut und innovativ aus, aber ich mag lvgl wegen 
der Offenheit lieber.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.