phyphox Forums

Full Version: ESP32 / PhyphoxBLE Sampling Rate
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hallo,
ich möchte gerne mit einem selbstgebauten Kraftsensor die Kraftkure eines Absprungs messen.
Die der ganze Vorgang ca. 300ms dauert brauche ich für diesen Zeitraum natürlich auch einige Messwerte.
Die Kommunikation über die Bluetoothschnittstelle mit dem ESP32 ist befürchte ich nicht wirklich schnell, was mir den kompletten Messvorgang dann ziemlich ausbremst.
Daher war die Überlegung die Messung vorher auf dem ESP32 in einer Schleife durchzuführen (5s lang), die Ergebnisse des Sensors und einen Timstamp in einem Array zu speichern. Erst dann sollen die Werte an Phyphox übergeben werden.

Geht das? Kann das Phyphox dann vernünftig darstellen? 
Danke!
Harald
Das sollte kein Problem sein. Erstmal kommen wir auch in Echtzeit ohne größere Probleme über die Bluetooth-Schnittstelle von phyphox durchaus auf Raten von mehreren kHz. Das allerdings nicht mit der phyphox-Bibliothek, sondern dann direkt mit dafür zugeschnittenen Bluetooth-Funktionen (d.h. im Detail: Werte als 16bit Integer statt float formatiert, mehr in einer Charakteristik parallel übertragen und MTU erhöhen).

Das spätere Übertragen ist aber auch kein Problem. Wichtig ist hierbei nur (und das gilt auch für Echtzeitmessungen mit hohen Raten), dass der Zeitstempel nicht mehr der von phyphox generierte sein darf (in den Beispielen über "setChannel(0, ...)" auf Kanal 0), denn das ist der Zeitpunkt der Übertragung, der sehr ungenau ist und auch der Optimierung der Geräte unterliegt. Stattdessen sollte dann der Zeitstempel entweder auf dem ESP32 erzeugt und mit übertragen werden oder (um Bandbreite zu sparen falls es doch Echtzeit mit hoher Rate sein soll) oder man erstellt seine eigene phyphox-Konfiguration, in der die Zeitachse dann über die Analyse-Tools von phyphox generiert wird. Am einfachsten ist vermutlich ersteres, da hier aus phyphox-Sicht die Zeitachse einfach eine andere Größe ist, die mittels "setChannel" einer Achse zugeordnet wird.
Hallo Sebastian,
danke für die schnelle Antwort, ich hab nicht alles 100% verstanden, aber...
wenn ich auf dem ESP32 zwei Arrays erzeuge (Timestamp und Force) dann kann ich die im Nachhinein. Phyphox übergeben darf dafür allerdings nicht setChannel(0,...) verwenden da 0 die Zeit der Datenübertragung ist?
Aus der Doku werde ich nicht so richtig schlau wie setChannel() verwendet wir, bzw. wie die Kanäle zugeordnet werden und wie ich meinem Schaubild dann erkläre welchen Channel er auf welcher Achse darstellen soll.
Danke schonmal!
Grüße
Harald
setChannel bezieht sich nur auf die Position der Parameter von PhyphoxBLE::write(...).

Wenn du setChannel(1,2) setzt und dann deine Daten mit PhyphoxBLE::write(a, b) reinschiebst (einmal pro Datenpaar), landet a auf der x-Achse und b auf der y-Achse.

Wenn du setChannel(4,2) setzt und Daten mit PhyphoxBLE::write(a, b, c, d) reinschiebst, trägst du d als Funktion von b auf.

Die Null ist dabei eigentlich nur die Ausnahme, die in vielen Fällen bequem ist, da sie die Übertragungszeit bezeichnet und bei nicht allzu schnellen Messungen als Zeitachse genutzt werden kann.
Super, hab ich verstanden, danke!
Hey, vielen Dank nochmal,
hat super geklappt, ich musste in der Schleife die die Daten an Phyphox übergibt ein Delay einbauen, ohne gingen in regelmäßigen abständen irgendwie Daten verloren, aber klappt top!