Welches Framework für GUI mit Bluetooth?

#7937129
Lesenswert?

Ich soll ein Studentenprojekt betreuen, in dem ein einfaches EKG entwickelt werden soll. Dabei soll der Hardwareaufwand auf ein Minimum begrenzt werden. Ein AD8233 übernimmt die Signalverstärkung, ein ESP32 wandelt sie ins Digitale, macht eine digitale Vorfilterung und und sendet die Daten dann per Bluetooth an einen PC. Dadurch wird eine galvanische Trennung der batteriebetriebenen Hardware vom PC erreicht, was aus Sicherheitsgründen hier unbedingt notwendig ist. Der PC soll dann das Ganze graphisch darstellen, speichern und eventuell auswerten (Herzfrequenz/Herzvektor).

Mit der Hardwareentwicklung und ESP-Programmierung kenne ich mich gut aus, doch welche Programmiersprache und welches Framework soll ich auf dem PC verwenden? Die Studis haben Java und Python gelernt. Ich tendiere zu Java FX und BlueCove, doch beides scheint inzwischen veraltet zu sein.
Wäre es besser, das Frontend als Browser-App zu implementieren? Wenn ja womit? Es müssen ca. 400 Messwerte pro Sekunde verarbeitet werden, sonst ruckelt die Grafik. Ich befürchte, dass Browser-Apps damit schon überfordert sein könnten. der Vorteil wäre die Lauffähigkeit auf beliebigen Zielsystemen (Android, Linux, Windows). Das muss aber nicht sein, MS Windows würde für das Projekt ausreichen.

#7937181
Lesenswert?

Fritz G. schrieb:

Mit der Hardwareentwicklung und ESP-Programmierung kenne ich mich gut aus, doch welche Programmiersprache und welches Framework soll ich auf dem PC verwenden? Die Studis haben Java und Python gelernt. Ich tendiere zu Java FX und BlueCove, doch beides scheint inzwischen veraltet zu sein.

Für Linux nimmt man bluez-dbus (mit Windows kenne ich mich nicht aus): https://github.com/hypfvieh/bluez-dbus

Wäre es besser, das Frontend als Browser-App zu implementieren? Wenn ja womit? Es müssen ca. 400 Messwerte pro Sekunde verarbeitet werden, sonst ruckelt die Grafik. Ich befürchte, dass Browser-Apps damit schon überfordert sein könnten. der Vorteil wäre die Lauffähigkeit auf beliebigen Zielsystemen (Android, Linux, Windows). Das muss aber nicht sein, MS Windows würde für das Projekt ausreichen.

Für nähere Details zur Datenrate: https://novelbits.io/bluetooth-5-speed-maximum-throughput/ https://punchthrough.com/maximizing-ble-throughput-on-ios-and-android/

Falls WLAN möglich ist, wie Harald K. auch angemerkt hat, wäre die Datenübertragung per Websockets die Lösung.

(Firma: Privat) #7937184
Lesenswert?

Ich würde das kostenlose B4J empfehlen. Kann Apps- und auch Web Apps erstellen. https://www.b4x.com/ Das beruht auch auf Java-Libs. Da die Studis ja JAVA gelernt haben, wäre das doch schon mal ein Anfang. Und auch mit dem kostenlosen B4A könnte man mit wenig Änderungen auch eine Smartphone-App erstellen. BT-Libs sind da auch jeweils dabei.

: Bearbeitet durch User
#7937209
Lesenswert?

Ich würde eine statische Browser-Seite nehmen, zusammen mit WebBluetooth. Für was kleines brauchst du da kein framework, kannst auch in vanilla-javascript + html machen.

WebBluetooth ist halt super simpel zum nutzen und geht perfekt auf allen Computer (client seitig) (Windows, Linux, macOS)

Guide zu WebBLE ist hier: https://developer.chrome.com/docs/capabilities/bluetooth?hl=de

Ich hab sowas mal für eine Demo gebraucht (PPG + Temperatur), siehe Anhang (slayer.js welches ich für peak-detection genutzt habe fehlt aus Lizenzgründen. Kannst du aber mit browserify in ein browser-side slayer.js umwandeln wie ich es gemacht habe).

Das kannst du dann mit allen chrome basierten browser (Chrome, Chromium, Edge, Brave, ...) öffnen (musst eigentlich nur das index.html im browser öffnen) und WebBLE nutzen.

Mit v0.dev kannst du auch ziemlich schnell was funktionierendes nach deinem Geschmack aufbauen, nutzt dann React.

Wenn du die Daten speichern willst, kommts halt drauf an wie lange eine Messung geht: Entweder lässt du alles im Cache vom Browser, und am Ende exportierst du es als CSV, ... (geht dann wie normaler 'download' einer Datei im Browser); oder du lädst schon währenddessen in Chunks runter, die du dann aber lokal zusammensetzen musst.

Angehängte Dateien:
Moderator #7937426
Lesenswert?

Meine persönlichen Präferenzen, um mit minimalem Programmieraufwand zu einem sehr ansprechenden Ergebnis zu kommen:

Fritz G. schrieb:

Programmiersprache

Python

Framework

NiceGUI (Darstellung wahlweise in einem Web-Browser oder nativen Fenster)

Der PC soll dann das Ganze graphisch darstellen

Plotly (ist in NiceGUI integriert), alternativ Matplotlib (ebenfalls in NiceGUI integriert)

speichern und eventuell auswerten (Herzfrequenz/Herzvektor).

NumPy und SciPy

Lauffähigkeit auf beliebigen Zielsystemen (Android, Linux, Windows).

Linux und Windows gehen auf jeden Fall, bei Android weiß ich es nicht.

Bluetooth

Es gibt zwar mehrere Bluetooth-Module für Python (bspw. Bleak, PyBluez2, bluepy, python‑bluezero, pygatt und BTZen). Da ich aber keine Erfahrung damit habe, würde ich – wie auch einige andere in diesem Thread – WLAN (bspw. über TCP-Sockets) präferieren.

Ich tendiere zu Java FX und BlueCove, doch beides scheint inzwischen veraltet zu

Das Alter der Software sollte kein Ausschlusskriterium sein, solange sie gut funktioniert.

#7937759
Lesenswert?

Vielen Dank für die Antworten.

Es wird wohl auf Python mit NiceGUI hinauslaufen. Die Studenten lieben Python, weil es so einfach ist - zumindest was den Einstieg angeht.

Ich als alter C/C++/Java Hase habe zugegebenermaßen Python nie so richtig ernst genommen und eher als eine modernere Version von BASIC betrachtet. Inzwischen gibt es da wohl richtig gute Bibilotheken, z.B. für lineare Algebra und sogar KI.

WLAN wollte ich eigentlich nicht verwenden, weil der ESP32 damit ein ziemlicher Schluckspecht ist und laut Datenblatt 240mA braucht, in Spitzen sogar noch mehr. Mit BT/BLE soll er mit etwa der Hälfte auskommen. Nichtsdestotrotz, für einen Probebtrieb sollten 3 AA-Batterien auch für WLAN reichen.

Moderator #7937944
Lesenswert?

Fritz G. schrieb:

Die Studenten lieben Python

Nicht nur die Studenten:

https://www.tiobe.com/tiobe-index/

Ich als alter C/C++/Java Hase habe zugegebenermaßen Python nie so richtig ernst genommen und eher als eine modernere Version von BASIC betrachtet.

Es ist sehr viel mehr als BASIC und wird ständig noch mehr. Wie viel mehr, erkennt man aber erst so richtig, wenn man sich schon eine Weile damit beschäftigt hat. Trotzdem ist die Sprache auch gut für Anfänger und Gelegenheitsprogrammierer geeignet.

Inzwischen gibt es da wohl richtig gute Bibilotheken, z.B. für lineare Algebra und sogar KI.

Es gibt Bibliotheken für fast jeden Anwendungsbereich. Auch für viele beliebte C/C++-Bibliotheken gibt es Python-Bindings. Ein wesentlicher Teil der Python-"Programmierung" besteht oft darin, ein paar für die Anwendung geeignete Bibliotheken zu finden und diese dann mit relativ wenig eigenem Code zusammenzukitten. Der Python-eigene Paketmanager (pip) macht es leicht, Bibliotheken herunterzuladen, zu installieren, upzudaten und bei Nichtgefallen wieder zu löschen.

Außerdem ist Python für viele Plattformen verfügbar (Linux, macOS, Windows, ...) und als MicroPython und CircuitPython sogar für etwas bessere Mikrocontroller verfügbar. Prinzipiell könntet ihr also auch den ESP32-Part in Python programmieren (inwieweit das sinnvoll ist, ist eine andere Frage).

: Bearbeitet durch Moderator
#7937948
Lesenswert?

Yalu X. schrieb:

Nicht nur die Studenten:

https://www.tiobe.com/tiobe-index/

Dieser Index gibt mitnichten Programmiersprachen wieder, die am meisten benutzt werden, sondern Programmiersprachen, nach denen im Netz die meisten Fragen gestellt werden. Und damit sind es ergo die Programmiersprachen, die überwiegend von Anfängern genutzt werden, denn naturgemäß stellen die die meisten Fragen.

Wer schon zehn, zwanzig Jahre lang Java/Delphi/Go/C# oder was auch immer benutzt, wird von diesem Index entsprechend nicht berücksichtigt.

Moderator #7937964
Lesenswert?

Harald K. schrieb:

Yalu X. schrieb:

Nicht nur die Studenten:

https://www.tiobe.com/tiobe-index/

Dieser Index gibt mitnichten Programmiersprachen wieder, die am meisten benutzt werden, sondern Programmiersprachen, nach denen im Netz die meisten Fragen gestellt werden.

Nicht nur Fragen.

Und damit sind es ergo die Programmiersprachen, die überwiegend von Anfängern genutzt werden, denn naturgemäß stellen die die meisten Fragen.

Bei der Art und Weise, wie Tiobe die Daten erhebt, spielen Anfängerfragen eine eher untergeordnete Rolle.

Natürlich ist das nur eine Statistik, in die man – wie bei jeder anderen Statistik auch – nicht zu viel hineininterpretieren sollte. Den rapiden Anstieg der Kurve während der letzten paar Jahre finde ich dennoch bemerkenswert.

#7940996
Lesenswert?

Harald K. schrieb:

Yalu X. schrieb:

Nicht nur die Studenten:

https://www.tiobe.com/tiobe-index/

Dieser Index gibt mitnichten Programmiersprachen wieder, die am meisten benutzt werden, sondern Programmiersprachen, nach denen im Netz die meisten Fragen gestellt werden. Und damit sind es ergo die Programmiersprachen, die überwiegend von Anfängern genutzt werden, denn naturgemäß stellen die die meisten Fragen.

C++ als klassische Anfängersprache, soso... ;)

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