GUI für Mikrocontroller - GitHub ist voll davon

OP #5301228
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
Gast #5301454
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^^
OP #5301486
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.
#5301509
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
#5301965
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.
#5302090
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.
Gast #5302110
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?
Gast #5302200
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.
#5302287
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.
Gast #5302296
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.
Gast #5302319
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.
Gast #5302324
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.
Gast #5302392
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren