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.
Fritz G. schrieb: > und sendet die Daten dann per Bluetooth an einen PC Warum ausgerechnet BT? ESP32 kann auch WLAN, das ist programmiertechnisch deutlich einfacher zu handhaben und genauso gut galvanisch getrennt ...
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.
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
QT kann GUI und Bluetooth auf vielen Plattformen. Als Programmiersprache kommt C++ zum Einsatz, mit einer Bibliothek deren Stil stark an Java erinnert. Die stl muss man dazu nicht kennen. Für einen ersten Eindruck: http://stefanfrings.de/qt_lernen/
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.
Oder du nutzt BLELog, welches zum Aufzeichnen von vielen Daten von verschiedenen Geräten über BLE geschrieben wurde (Python). Dabei kann auch Live geplotted werden: https://github.com/ETH-PBL/BLELog
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.