Forum: Mikrocontroller und Digitale Elektronik GUI für Mikrocontroller - GitHub ist voll davon


von Holger K. (holgerkraehe)


Lesenswert?

Hallo zusammen

Auf der Suche nach einem passenden GUI, habe ich GITHub durchstöbert.
Dabei habe ich einige interessante Projekte gefunden.

Interessanterweise finden sich dazu keinerlei Ergebnise in Zusammenhang 
mit Mikrocontrollern.

Ich habe hier mal ein paar interessante GUIs gelistet.
Mich würde es interessieren, ob jemand von euch bereits versucht hat, 
eines dieser auf einen Mikrocontroller zu portieren.


- https://github.com/vurtun/nuklear (nur ein einziges File)

- https://github.com/littlevgl/lvgl (gibts für arduino, aber keine demos 
gefunden)

- https://github.com/MaJerle/EasyGUI

- https://github.com/SL-RU/MakiseGUI

- https://github.com/ryankurte/micro-gui


Gruss
Holger

: Bearbeitet durch User
von Ben W. (ben_w)


Lesenswert?

also ich kenne kein einziges davon
aber einfach um deine liste zu erweitern :D

https://ugfx.io/

von Purzel H. (hacky)


Lesenswert?

Ein GUI ... eine tolle Sache. Auf einem Controller.. ? Was soll's denn 
koennen ?

von Duck Mc Scrooge (Gast)


Lesenswert?

Holger,

ich würde den Thread gerne etwas präzisieren:
du schreibst, du suchst "eine GUI" für µC.
Wenn man von "einer GUI" spricht, meint man eine konkrete Visualisierung 
von bestimmten Inhalten. Das würde so vermuten lassen, du suchst eine 
Art Config-Wizard-GUI z.B.

>Aber ich vermute, du suchst ein Framework, mit dem man GUI´s erstellen kann?
>Wahrscheinlich am besten plattformunabhängig?

Zwar nicht unabhängig, dafür aber dokumentiert und verfügbare 
Starterkits und Demoprojekte währe GrLib von Texas Instruments.

Ist in so fern nicht plattformunabhängig, als das an manchen Stellen 
Assembler zu finden ist.
Außerdem verbieten die Nutzungsrechte ein Portieren auf anderen 
Plattformen wenn ich das richtig sehe.
Aber solange du das im stillen Kämmerlein machen würdest - könntest nur 
nix posen, ach ich meine posten^^

von Duck Mc Scrooge (Gast)


Lesenswert?

PS.:
wie schon einer vor mir fragte >was soll es denn können?
Dinge darstellen ist das eine, aber willst du auch interaktive Flächen 
wie Buttons, Slider etc darstellen?

von Holger K. (holgerkraehe)


Lesenswert?

Danke für die Antworten.

Also die Featurelist:

- Weitestgehend Hardware unabhängig (also eigene SetPixel)
- Sämtliche gängigen Widgets unterstützen (Buttons, Bargraphs etc.)
- Event management. Funktion um den x, y, punkt des touch events zu 
übergeben
- Layers: Verschiedene "ansichten" mit einer gruppe von Elementen
- KEIN Framebuffer benötigt. Da einige Mikrocontroller nicht genügend 
Platz haben um ein vollständiges Frame im RGB565 Format zu halten.

von Martin S. (strubi)


Lesenswert?

Hier hab ich noch eine:

https://github.com/achimdoebler/UGUI

Einige deiner oben Aufgelisteten habe ich evaluiert, aber kaum eine 
brauchen können.
Das 'nuklear'-Single-File-Konzept ist zwar nerdy, aber für kleine uC 
eher unbrauchbar.
Die UGUI ist schnell mal angeschmissen, aber nicht sonderlich schnell 
wegen dem sehr dünnen "SetPixel"-Abstraction-Layer.
Ansonsten läuft es bei vielen Custom-Widgets auf Selbermachen raus.
Wenn C++ eine Option ist, könntest du dir auch die GUI aus der recht 
eleganten DS203 'gabonator'-FW klauben:

https://github.com/gabonator/DS203/tree/master/Source/Gui

von Purzel H. (hacky)


Lesenswert?

> - KEIN Framebuffer benötigt. Da einige Mikrocontroller nicht genügend
Platz haben um ein vollständiges Frame im RGB565 Format zu halten.


Wenn ein Framebuffer nicht drinliegt ... die Datenstrukturen werden 
einiges komplizierter und aufwendiger sein. .. Vergiss es. Ein 128x64 
Display laesst sich von der Rechenleistung her nicht mehr von einem Tiny 
bemalen, wenn sonst noch etwas gemacht werden sollte.

von Alex G. (dragongamer)


Lesenswert?

Richtig. Es ist 2018. Da sollte mans ich nicht selbst in der 
Microcontroelr Größe so extrem beschneiden wenn da sowas großes wie ein 
Dispaly dran kommt.

Wenn das Dispaly nicht dauerhaft gebraucht wird, aber Akkulkaufzeit das 
allerhöchste Gebot ist, dann eventuell an eine 2-Controler Lösung 
denken.

von 50c (Gast)


Lesenswert?

Holger K. schrieb:
> Also die Featurelist:

...na dann mache einfach (auf deiner Hardware) los und melde dich, wenn 
du eine Frage hast bzw. ein Teilergebnis vorliegt...

...was erwartest du eigentlich? Wir kennen deine Hardware nicht, wir 
kennen deine Toolchain nicht, wir kennen deine Kenntnisse nicht..., was 
willst du eigentlich?

von A. S. (Gast)


Lesenswert?

Holger K. schrieb:
> nicht genügend Platz haben um ein vollständiges Frame im RGB565 Format
> zu halten.

Dann 1bit monochrom bzw. Farblayer oder explizites farbhandling

von Stefan F. (Gast)


Lesenswert?

Für mich dienen Mikrocontroller dazu, Sachen zu steuern, die ein 
normaler PC oder ein normales Tablet nicht direkt steuern kann.

Für grafische Oberflächen würde ich immer PC basierte Hardware, Tablets 
oder Smartphones verwenden. Wahlweise mit eigenem Programm/App oder Web 
Browser (also Javascript). Im letzten Fall kann der µC je nach Leistung 
entweder nur die Daten liefern oder die gesamte Webseite.

Nicht vergessen sollte man die Nextion Displays, da ist das GUI Kit im 
Display integriert.

von Rolf M. (rmagnus)


Lesenswert?

Holger K. schrieb:
> Danke für die Antworten.
>
> Also die Featurelist:
>
> - Weitestgehend Hardware unabhängig (also eigene SetPixel)

Es macht es natürlich flexibel und einfach nutzbar, aber auch ggf. 
langsam und ressourcenfressend.

> - KEIN Framebuffer benötigt. Da einige Mikrocontroller nicht genügend
> Platz haben um ein vollständiges Frame im RGB565 Format zu halten.

Auch das dürfte ziemlich Performance kosten.

Stefan U. schrieb:
> Für mich dienen Mikrocontroller dazu, Sachen zu steuern, die ein
> normaler PC oder ein normales Tablet nicht direkt steuern kann.

Für mich ist noch ein wesentlicher Aspekt, dass man nicht erst ein 
komplettes Betriebssystem booten muss, bevor es überhaupt mal anfängt zu 
funktionieren.

> Für grafische Oberflächen würde ich immer PC basierte Hardware, Tablets
> oder Smartphones verwenden.

Kann je nach Anwendungsfall aber übertrieben sein. Manchmal will man 
eben einfach ein Display mit ein paar Bedienelementen, ohne da gleich 
wieder WLAN und eine App zu brauchen.

> Wahlweise mit eigenem Programm/App oder Web Browser (also Javascript). Im
> letzten Fall kann der µC je nach Leistung entweder nur die Daten liefern
> oder die gesamte Webseite.

Ob es jetzt einfacher ist, auf einem µC einen kompletten Webserver mit 
Weboberfläche zu machen als ein Display anzusteuern?

Ich finde es auch einfacher nutzbar, wenn ich direkt ein Display einfach 
so verwenden kann, als wenn ich erst mein Handy rausholen, entsperren, 
ggf. mit WLAN oder Bluetooth verbinden, den Browser starten und die URL 
eingeben muss.

von Magnus Fidibus (Gast)


Lesenswert?

Rolf M. schrieb:
> Ich finde es auch einfacher nutzbar, wenn ich direkt ein Display einfach
> so verwenden kann, als wenn ich erst mein Handy rausholen, entsperren,
> ggf. mit WLAN oder Bluetooth verbinden, den Browser starten und die URL
> eingeben muss.

... dafür geht das aber von überall!
So ein billiges Tablet kann man ja als ständige Anzeige auch verwenden. 
Wichtig ist allein die Abrufbarkeit des Inhalts als Webseite.

von Pete K. (pete77)


Lesenswert?

Ein China-Handy oder Tablet kostet heute <100€ inkl. Quad-Core Prozessor 
und HD-Display. Da würde ich mal schauen, ob man diese Geräte nicht 
geeignet nutzen kann.
Von Deiner Anwendung hast Du ja leider nichts erzählt.

von Wolfgang (Gast)


Lesenswert?

Holger K. schrieb:
> Ich habe hier mal ein paar interessante GUIs gelistet.
> Mich würde es interessieren, ob jemand von euch bereits versucht hat,
> eines dieser auf einen Mikrocontroller zu portieren.

Ein GUI setzt eine Anzeige- und Bedieneinheit voraus. Gemeinhin brauchst 
du dafür ein bisschen Speicherausstattung. Mit einem ATtiny kann das 
also schnell eng werden. Woran denkst du also konkret?
Und was bezeichnest du in diesem Zusammenhang ams "Mikrocontroller"?

Und selbst ein Raspberry Pi ist da schon deutlich gefordert, wenn man 
sich nennenswert von Klötzchengraphik abheben möchte.

von Johannes S. (Gast)


Lesenswert?

Es gibt aber sicher immer noch Gerätchen die autark laufen sollen und 
bei denen eine lokale Bedienung und Statusanzeige sinnvoll ist. Ein QVGA 
TFT mit Controller und Touchscreen kostet ca. 10€, ein direkt steckbares 
Prozessorboard wie Arduino mega2560 oder ein STM32F407 kostet noch einen 
10er dazu. Das ist schon spottbillig und genug Power für Steuer und 
Messaufgaben hat man damit auch.
Ich hatte auch Software für ein Chart gesucht, bin aber beim selber 
schreiben gelandet. Als Basis die AdafruitGFX, dafür gibt es schon 
einige Aufsätze (einfache Bargauges zB: 
https://github.com/pljakobs/Arduino_Gauges) und einen Ansatz mit Canvas 
und Button ist auch drin.

von Stefan F. (Gast)


Lesenswert?

> Manchmal will man eben einfach ein Display mit ein paar Bedienelementen

Ja schon, dann braucht man aber auch kein aufwändiges GUI Framwork. Ein 
einfacher Display Treiber, der neben Text auch Linien, Rechtecke, Kreise 
und Bitmaps zeichnen kann, genügt.

> Ob es jetzt einfacher ist, auf einem µC einen kompletten Webserver mit
> Weboberfläche zu machen als ein Display anzusteuern?

Ich dachte eher eine statische HTML Seite mit Javascript, welches das 
eigentliche "Zeichnen" übernimmt. Entsprechende Server-Seitige Libraries 
sind im Arduino Framework z.B. enthalten. Wer Arduino nicht mag, könnte 
meinen Plain-C Ansatz als Vorlage verwenden: 
http://stefanfrings.de/net_io/index.html

Oder man installiert die HTML+Javascript Dateien auf seinen PC bzw 
Smartphone, so dass der µC wie gesagt nur die Daten liefert. Siehe 
https://de.wikipedia.org/wiki/Ajax_(Programmierung). Dazu langt schon 
ein sehr minimalistischer HTTP Service, der den Namen "Server" nicht 
wirklich verdient.

> Ich finde es auch einfacher nutzbar, wenn ich direkt ein Display
> einfach so verwenden kann, als wenn ich erst mein Handy rausholen,
>  entsperren, ggf. mit WLAN oder Bluetooth verbinden, den Browser
> starten und die URL eingeben muss.

So meinte ich das nicht. Das Handy/Tablet als Display wäre fest montiert 
und würde über Bluetooth, WLAN oder USB mit den µC kommunizieren. Das 
müsste man nur einmalig einrichten.

> ... dafür geht das aber von überall!

Das wäre der angenehme Nebeneffekt, den man dann zusätzlich hätte.

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.