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
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.
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.
Python oder Lazarus wären hier wohl das Mittel der Wahl, wenn man C++ umgehen will
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
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.
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.
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... ;)
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.