DIY Telemetrie / Data Acquisition System

nollak

Ich weiss auch nicht was ich hier mache.
Registriert
14. Dezember 2009
Reaktionspunkte
28.464
Ort
Gute Frage
Bike der Woche
Bike der Woche
Servus miteinander,

ich hab ja schon ein 1-2 Stellen hier im Forum erwähnt das ich da grad was am planen dran bin! Bzw. auch schon vieles in die Tat umgesetzt habe.
Ich hab auch schon mit ein paar Leuten so über das Projekt gesprochen und es auch mal auf VitalMTB angeteasert. Letztlich hab ich gestern mal ein wenig mit @Ale_Schmi über das Projekt gesprochen und mich dann dazu entschlossen doch mal was im Forum dazu zu schreiben. Ich könnte mir vorstellen das es für ein paar Leute hier interessant ist.

Bin mir nicht sicher ob das ganze hier im Forum oder besser in der Elektronik Ecke aufgehoben ist aber zur Not kann ein Mod das mit Sicherheit noch verschieben.

Wie unschwer im Titel des Beitrages zu erkennen ist geht es um ein selbstgebautes/programmiertes "Telemetrie" System. Ich hab das bewusst mal in Anführungsstriche gesetzt, da sich der Begriff in unserem Sport zwar durchgesetzt hat aber es eigentlich eher ein Data Acquisition System (DAS) ist. Kann auch passieren das ich die Begriffe mal durcheinander schmeisse im Text, da ich von Berufs wegen eher den Namen DAS nutze.

Erstmal ein wenig Hintergrund, ihr könnt scrollen jetzt kommt erstmal TL;DR.

BYB oder Motion Instruments ist ja mit Sicherheit vielen ein Begriff. Ich war auch schon länger geil drauf mal so ein System zu haben, aber im Grunde nicht bereit den Preis dafür zu zahlen, da ich immer wusste, das kann ich auch selbst bauen. Irgendwie hat mir aber neben dem Job immer die Motivation gefehlt tatsächlich noch zu programmieren, da ich das eben schon 8h am Tag für Geld mache.
Das Projekt, bzw die Idee reift aber schon so 2 Jahre in meinem Kopf. Die Beschaffung von Wegmessern war auch immer ein Thema.
Jetzt kamen aber Ende des Jahres und Anfang dieses Jahres mehrere Sachen zusammen. Zum einen hat meine Hilfe beim Rudelfully begonnen und ich wollte gerne ein System zum messen des Rades haben. Zum andern habe ich meinen Job gekündigt und im März einen neuen Job begonnen. Dazu kam dann im Januar noch meine Corona Infektion und eine lange Phase Erkältungen Ende letzten Jahres in denen mir schlicht langweilig war.

Also mal nochmal geschaut was man für günstige Mikrocontroller Boards, bevorzugt mit WiFi an Board bekommen kann. Dann bin ich auf den Raspberry Pi Pico aufmerksam geworden. Das Board kostet 6€ inkl. WiFi/BLE Modul und hat scheinbar nen gutes SDK. Mal 2 Stück, 2 uSD Karten Halter und normales Potis bestellt um mal schauen was geht. Das ganze ging dann ziemlich schnell und ich hab noch mehr Teile geordert. GPS war mir erstmal wichtig, da ich auch sehen wollte wo ich bei der Messung denn her gefahren bin und evtl. Ereignisse im Log einem Ort zuordnen zu können.
Ansonsten hab ich mir mal das BYB System angeschaut, da ich es für das aktuell technisch beste zu erwerbenden System halte. Die 1000Hz Abtastfrequenz standen also schnell fest. Zunächst wollte ich Gabel-, Dämpferweg und GPS aufnehmen. Beschleunigungswerte (ja mehrere nur einer ist meiner Meinung nach recht nutzlos), Bremssensoren, Gyroscope und evtl. Radgeschwindigkeiten stehen aktuell auch noch auf der Liste der möglichen Features.

Nach ein wenig Gebastel und festellen das ich das ganze nicht so einfach mit einer Powerbank speisen kann wurde noch ein LiPo inkl. kleinem Chip integriert und das ganze sieht jetzt mal wie auf den folgenden Bildern aus:

IMG_7811.jpg


Noch ein paar Bilder der Hardware so zur Anschauung.
IMG_7780.jpgIMG_7809.jpgIMG_7810.jpg

Wie man sieht ist erstmal alles in ein Gehäuse geschmissen, wenn das funktioniert und das Controllerboard bestehen bleibt mache ich da wahrscheinlich auch noch eine Platine für um das ganze kompakter zu bekommen.

Im Hintergrund des einen Bildes kann man schon die Auswertung erahnen, da ist hier nochmal ein größeres Bild, allerdings ohne GPS Daten, da man meine Adresse sehen könnte :D
Screenshot 2023-03-23 at 18.00.30.png



Die Daten sind auf dem Balkon aufgenommen und ich habe die beiden Wegsensoren einfach nur bewegt. Aktuell ist das ganze noch relativ rudimentär und es sollen auch noch Features in SW folgen. Ich musste aber auch feststellen, das die Auswerte Software einen immens größeren Aufwand bedeutet, als die SW/FW um die Daten aufzunehmen. Aktuell habe ich noch eine kleine GUI gebaut um Kalibrierwerte, Bikes, Setups anzulegen und in einer Datenbank zu speichern mit einem Setup und einer Session kann dann eine log Datei ausgewertet werden. Da ich etwas Probleme mit den 3D Druck Teilen, zur Befestigung am Rad, hatte und aktuell auch wieder mehr zu tun habe wegen meinem neuen Job konnte ich das System noch nicht Probefahren. Dazu kommt noch, dass ich grad wieder krank bin nachdem ich Samstag mal seit langem wieder auf dem MTB saß. Aber so hab ich am Wochenende mal noch Zeit wieder was am System zu machen.

Was aktuell akut ist sind mal folgende Punkte:
  • WiFi Transfer ans laufen bekommen (Das ist wohl ein größeres Problem da mit neuem SDK entweder SD Karte oder Wifi funktioniert)
  • SW Doku der GUI/Auswertung schreiben.
  • Das ganze mal testen.

Das sind zumindest die wichtigsten Punkte.
Falls sich wer für den Code oder ein paar mehr Details interessiert das ist alles hier zu finden:
https://github.com/n0ll4k/bahama-mama-telemetry
Meine Pläne damit sehen aktuell nur vor das ich es selbst halt auch nutzen möchte um Leuten den Service des Vermessens anzubieten und Fahrwerke damit einzustellen. Dafür hab ich für den Sommer schon im Freundeskreis einige Leute angesprochen um das ganze mal zu testen.

Ansonsten möchte ich das ganze eher als Open Source Projekt laufen zu lassen, da ich davon eh nie leben kann und es mit Sicherheit Leute gibt die da auch Interesse dran haben. Falls sich hier im Forum noch Mitstreiter finden, die an dem Projekt mitarbeiten wollen gerne.

So jetzt aber die großen Fragen ans Forum.

Was fehlt euch an Features?
Wer Bock hat in den Code zu schauen, was ist dort zu verbessern? Gerade beim Python bin ich nicht so wirklich fit, da ich das immer nur nebenher gemacht habe.
Sonstige Ideen, Kritik, Liebesbekundungen sind natürlich auch herzlichst willkommen.

Falls ihr Fragen habe, immer raus damit. Teileliste kann ich die Tage auch mal noch ins Github packen. Dort habe ich auch ein Project angelegt mit Sachen die noch zu erledigen sind.
Mit @Ale_Schmi hab ich auch noch 2-3 Ideen, die aber erstmal noch unter uns bleiben.
 
Sehr schön! Jetzt musst du mir noch noch verraten, mit welchem Skript du die Grafiken erstellt hast! :daumen:

Wir haben ja eh schon etwas mehr darüber geschrieben. Ich bin gespannt, was die anderen noch dazu sagen!
 
Sehr schön! Jetzt musst du mir noch noch verraten, mit welchem Skript du die Grafiken erstellt hast! :daumen:

Wir haben ja eh schon etwas mehr darüber geschrieben. Ich bin gespannt, was die anderen noch dazu sagen!
Die Grafiken hab ich mit Bokeh erstellt.
Das ist nen Framework für so Dashboards.
Da hab ich aber auch bisher nur die Oberfläche angekratzt. Das hatte ich durch Zufall letztens gefunden.

Was ich ja auch noch vergessen habe für die Allgemeinheit.
Falls der Prozessor nicht ausreicht weiche ich evtl. auf einen Raspberry Pi Zero aus.
 
Die Grafiken hab ich mit Bokeh erstellt.
Das ist nen Framework für so Dashboards.
Da hab ich aber auch bisher nur die Oberfläche angekratzt. Das hatte ich durch Zufall letztens gefunden.

Was ich ja auch noch vergessen habe für die Allgemeinheit.
Falls der Prozessor nicht ausreicht weiche ich evtl. auf einen Raspberry Pi Zero aus.
Sehr cool! Schaue ich mir mal an!
 
Die Süßfrucht (Himbeere) hat doch eigentlich "nur" die Aufgabe, die Daten der Sensoren auf ne SD zu schieben, oder? Ist das so anspruchsvoll für die CPU? Frag für einen Digital-Nixblicker...

Weil: Auswertung erfolgt doch daheim mit potenter Hardware...
 
Und so mein laienhaftes Verständnis: Falls die PI-CPU die Rohdaten der Sensoren noch irgendwie umrechnen muss: Ist das nötig?
Kann man das nicht die Heim-CPU erledigen lassen und unterwegs tatsächlich ausschließlich den Rohdatenstrom aufzeichnen?
 
Die Süßfrucht (Himbeere) hat doch eigentlich "nur" die Aufgabe, die Daten der Sensoren auf ne SD zu schieben, oder? Ist das so anspruchsvoll für die CPU? Frag für einen Digital-Nixblicker...

Weil: Auswertung erfolgt doch daheim mit potenter Hardware...
Genau so ist es!

Ich habs nie gemessen aber die Last der CPU dürfte recht gering sein.
Die Pico Himbeere hat auch den Vorteil von 2 Kernen. Heisst einer sammelt, einer schreibt. Problem ist halt aktuell das WiFi weil ich nicht jedes mal den Kasten aufmachen möchte. Aber da hab ich noch 1-2 Lösungen im Kopf.

Und so mein laienhaftes Verständnis: Falls die PI-CPU die Rohdaten der Sensoren noch irgendwie umrechnen muss: Ist das nötig?
Kann man das nicht die Heim-CPU erledigen lassen und unterwegs tatsächlich ausschließlich den Rohdatenstrom aufzeichnen?

Jap genau so ist! Ich nehm nur rohe Sensor Daten auf. Gut und den GPS Datenstrom.
Das wird in Blöcken auf die SD Karte gespeichert (alle 500ms ein Block Wegdaten, alle 1000ms ein Block GPS Daten)
Die werden dann auseinander gepflückt (Haben beide nen Header aus ID und Datenlänge) und aus den rohen A/D Daten mm Werte der Sensoren und dann Achspositionen berechnet.
Aus den Achspositionen und den Zeitabständen die dann Achsgeschwindigkeiten.
 
GPS ist ja auch nur ein Sensor...

Kann man für die spätere Auswertung für jeden Datenblock die genaue GPS-Zeit loggen? Die ist doch "Atomuhrengenau einself11!!" :ka:
 
GPS ist ja auch nur ein Sensor...

Kann man für die spätere Auswertung für jeden Datenblock die genaue GPS-Zeit loggen? Die ist doch "Atomuhrengenau einself11!!" :ka:
Jap eben, der schiebt halt aktuell alle Sekunde einen Datensatz raus.
Die Zeit hol ich da raus, aber die ist nur Sekunden genau.
Plan ist aber die dann in Zusammenhang mit einem internen Zeitstempel, den die Wegsensor Daten haben, zu nutzen um Ereignisse einem Ort zuzuordnen.
 
GPS Zeit nur sekundengenau?
Das wundert mich! Das sollte doch mindestens in den ms Bereich gehen, um die Differenz der Signallaufzeiten der einzelnen Satteliten miteinander verrechnen zu können. :ka:

Aber hey, wer bin ich, Dir Deinen Job zu erklären!

Geiles Projekt, mega spannend, weiter machen, ich halt mich mit Besserwisser-Wissen etwas zurück. Sorry!
 
Ok, einen noch! 8-)

Gängige GPS-Sensoren haben eine Aktualisierungsrate von 1000ms, aber anscheinend ist die auszulesende Zeit auf 10ns genau...:ka:

Kann man damit was anfangen?
 
GPS Zeit nur sekundengenau?
Das wundert mich! Das sollte doch mindestens in den ms Bereich gehen, um die Differenz der Signallaufzeiten der einzelnen Satteliten miteinander verrechnen zu können.
Intern ja, aber der Chip gibt die nicht nach außen auf die Schnittstelle.
Geiles Projekt, mega spannend, weiter machen, ich halt mich mit Besserwisser-Wissen etwas zurück. Sorry!
Danke dir!
Ne immer her mit sowas! Ich will ja jede Menge Input von außen haben um das ganze zu verbessern.
 
Bin ja auch nicht untätig. Hier nur ein Ausschnitt einer Auswertung meinerseits. Es ist noch minimal mehr drauf auf der Seite. Nur das ist unter Verschluss. ;)
1679603438877.png


Mit BYB können auch Start und Endpunkte für GPS gelegt werden, um Zeiten zu vergleichen. Wäre sonst auch noch eine Idee. Zumal das einiges genauer ist als Strava, wenn die Samplezeit voll ausgereizt werden kann.
 
Sehr cool!

Ich hab sowas auch gebaut. Hier und hier gibts Bilder.
IC ist ein Teensy 4.1, overkill für die Anwendung aber haben ist besser als brauchen und SD direkt an Bord. Gehäuse ist 3D-gedruckt und wasserfest, Stecker gedichtet, IP67-Schalter... Ich mach das Teil, wenn es dreckig ist, unter fließendem Wasser sauber. Die Dreck- und Wasserthematik sollte man nicht unterschätzen.
Auswertung ist in Python, leider ohne GUI, hab da keinerlei Erfahrung und war nicht genug Schmerz so um mich einzuarbeiten.
Wegaufnehmer sind ein Thema, ich hab aktuell ein paar von Aliexpress, die sind ok, leider aktuell nicht mehr verfügbar.

Meiner kann bis 5kHz, ich hab das mal durchexzerziert, 5kHz mit 2kHz und 1kHz verglichen, auf 200 Hz 'runterskaliert' etc., 1kHz ist absolut ausreichend.

Hätte definitiv Bock, dass wir da mal die Köpfe zusammenstecken.

Kleiner Hinweis noch: Die Wegaufnehmer vertragen nur homöopathisch Strom über die Läufer. Falls Du die Möglichkeit hast, miss am besten mal, was da an Strom fließt wenn die ohne Beschaltung am ADC hängen und guck, ob das lt. Datenblatt ok ist. Ich bin auf Nummer sicher gegangen und hab einen Op-Amp als Spannungsfolger davor.

Screenshot 2023-03-23 224743.png
 
Zuletzt bearbeitet:
Zur Befestigung der Box am Rahmen habe ich sonst ein paar Ideen:
  • Lenkerbefestigung (BYB) --> ist OK aber nicht so ideal
  • Flaschenhalterbefestigung (Schrauben für die Halterung verwenden)
  • B-Rad Halterung verwenden

Alles, was innerhalb des Rahmens liegt hat den Vorteil, dass es beim Fahren nicht so stört bzw. auffällt.
Und je nach Lage lässt sich sogar etwas besser die Chassisstability untersuchen.

Linearsensoren gibt es von
  • Variohm (sind schön schmal und lassen sich gut an unmöglichen Stellen verbauen, siehe Forbidden)
  • AIM (besitzen ein zusätzliches Schutzröhrchen gegebnüber direkten Dreckbeschuss)

Nachteil: beide Firmen sind nicht gerade günstig und schlagen mit etwa um die 400€ je Sensor zu buche.
 
Hast du schon Erfahrungen welche Wegmesser sich eignen?
Leider noch nicht, da es mir selbst (noch) an einem 3D Drucker mangelt konnte ich noch nichts ans Bike bauen und testen. Aktuell hab ich einen von Reichelt (IXTHUS duerfte Variohm oder Nachbau sein) und einen von Conrad (OPCON) da. 2 lange von Aliexpress hab ich auch mal zum vergleichen bestellt.
Am liebesten waeren mir die Variohm welche auch beim BYB mitkommen, da ist aber als Privatperson erstmal schwer dran zu kommen.
Mit BYB können auch Start und Endpunkte für GPS gelegt werden,
Das schwebt mir mit einer einfachen Lenkerfernbedieunung auch noch vor, das ist ja einfach zu realisieren. Triggerpunkte wuerde ich dann auch mit Zeitstempel und Block in dem Datenstream unterbringen.


@timmeygasmus schoenes Projekt! Ich glaub das hatte ich hier im Forum auch schonmal gesehen! Hast du da noch mehr Infos irgendwo? Teensy ist schon viel dafuer ja, aber ich hatte auch schon ueberlegt nen Pi Zero 2 W zu nutzen falls der Pico mal an seine Grenzen kommt.
@Ale_Schmi meinte auch das BYB auch was Pi basiertes nutzt, rein vom Formfaktor wuerd ich auch mal auf den Zero tippen.
Wegaufnehmer sind ein Thema, ich hab aktuell ein paar von Aliexpress, die sind ok, leider aktuell nicht mehr verfügbar.
Ja wie oben beschrieben haette ich da Wuensche, aber evtl kann man mit mehreren Leuten mal schauen ob man nen Schwung guter irgendwie bekommt.
Hätte definitiv Bock, dass wir da mal die Köpfe zusammenstecken.
Schreib mir mal ne PN, koennen wir gerne mal machen. Je nach Datenformat koennte man deine Daten ja auch mal in meine Oberflaeche schmeissen, hab das bewusst relativ modular ausgelegt.
Die Wegaufnehmer vertragen nur homöopathisch Strom über die Läufer. Falls Du die Möglichkeit hast, miss am besten mal, was da an Strom fließt wenn die ohne Beschaltung am ADC hängen und guck, ob das lt. Datenblatt ok ist. Ich bin auf Nummer sicher gegangen und hab einen Op-Amp als Spannungsfolger davor.
Das ist ein sehr guter Hinweis! Hab ich mir ehrlich gesagt noch gar nicht angeschaut, da ich eher FW/SW Mensch bin wie HW. Meine HW Entwicklertage liegen schon etwas zurueck, aber da werd ich mal schauen und evtl nen kleinen Spannungsfolger dazwischen bauen.
Zur Befestigung der Box am Rahmen habe ich sonst ein paar Ideen:
Definitiv im Rahmen, ich hab der Einfachheit halber mal ne Garmin Halterung genommen, hatte aber auch schon ueber ein Fidlock Gegenstueck nachgedacht. Bei Enduros eignen sich ja die Flaschenhalteraufnahmen perfekt dafuer. Beim Downhiller wird es halt eher wildes Kabelbindergebastel. Die BYB Loesug am Lenker find ich auch suboptimal. Der Platz ist halt immer da, aber die Position ist irgendwie nicht so schoen.
 
Wegaufnehmer haben wir auch ein paar Variohm im Einsatz. ELPM 75 lag 2020 bei 216€, ELPM 175 bei 346€, jeweils exkl. MwSt. Falls Bedarf besteht können wir sicher was organisieren, sollte kein Problem sein.

3D-Druck kann ich ebenfalls gerne aushelfen, meld Dich einfach.

In welchem Format brauchst Du die Daten, passt csv?

Ich versuch da kommende Woche mal einen ausführlicheren Post zusammenzuschreiben, auf der HW-Seite bin ich denke ich ganz gut unterwegs, dafür sieht Deine FW auf jeden Fall deutlich besser aus als meine.
 
Wegaufnehmer haben wir auch ein paar Variohm im Einsatz. ELPM 75 lag 2020 bei 216€, ELPM 175 bei 346€, jeweils exkl. MwSt. Falls Bedarf besteht können wir sicher was organisieren, sollte kein Problem sein.
Teurer als gedacht aber gut zu wissen, ich meld mich denke ich nochmal wenn ich das mit den aktuellen mal alles durchgetestet habe.
3D-Druck kann ich ebenfalls gerne aushelfen, meld Dich einfach.
Merk ich mir! Aktuell hab ich die Sachen bestellt, die Anschaffung eines Druckers steht aber auch an. Ich ringe grad nur mit mir ob es erstmal was einfaches & guenstiges wird oder ob ich mir den Bambu X1 kaufe.
In welchem Format brauchst Du die Daten, passt csv?
Ja CSV passt, Spalten kann ich mir dann umbenennen. Hast du da Achspositionen schon berechnet?
Ich versuch da kommende Woche mal einen ausführlicheren Post zusammenzuschreiben, auf der HW-Seite bin ich denke ich ganz gut unterwegs, dafür sieht Deine FW auf jeden Fall deutlich besser aus als meine.
Top, sehr gern auch hier als Sammelbecken!

HW war ich definitiv mal fitter, aber FW war bei mir immer schon eher das Steckenpferd im Job, daher faellt mir das auch ein wenig leichter.
 
Mal was zum grundsätzlichen Aufbau:

Die Stecker sind Lutronic 0831. Verhältnismäßig günstig, mit Kappe bzw. gesteckt IP67.

Diese werden im "Deckel" von oben verschraubt und haben einen O-Ring an der Unterseite, der das ganze abdichtet. Schnitt aus dem CAD:

1679670652406.png

Von unten wird dann einfach die Platine aufgesteckt und an den Pins verlötet:

1679670706080.png



Vorne wird die Platine einfach mit zwei M3-Schrauben festgeschraubt:

1679670822501.png

Die Batterie besteht aus einem Standard 1000 mAh Lipo, verbaut zusammen mit einem BMS mit Ladefunktion per USB. 1000 mAh ist auf jeden Fall reichlich, 500 mAh reichen locker aber der Platz war halt da.. Verbaut wird das ganze in einem tauschbaren Kasten, der das BMS und den Akku beinhaltet (hier ohne Akku und BMS):

1679671396797.png

Das ganze sitzt auf einer Grundplatte:

1679671507547.png

Auf der Rückseite der Platine sitzt dann ein Mutternhalter, der auf die Platine geklipst und mit zwei Tropfen Sekundenkleber gesichert wird; der muss natürlich drauf, bevor man die Stecker verlötet. An dem wird die Grundplatte dann verschraubt.

1679671600391.png


Die Bedienung erfolgt über zwei Kippschalter (sieht man im ersten Post), einer schaltet den Logger ein und aus (hart - unterbricht die Stromversorgung der Batterie zur Platine), der andere startet und stoppt die Messung. Die Schalter sind von NKK, IP67 zertifiziert, extrem robust und mit Locking Lever, der Schalter muss zum schalten "angehoben" werden, damit ist versehentliches schalten praktisch unmöglich. Finde ich sehr wichtig, ich gehe da im Betrieb (ungewollt) nicht zimperlich mit um, in der Regel hat man ja beim fahren schon ein gewisses Level an Adrenalin, feinmotorische Tätigkeiten sind da nicht mehr angesagt.
Spannungskontrolle der Batterie ist über einen simplen Spannungsteiler realisiert. Wenn die Batterie einen gewissen Schwellwert unterschreitet, fängt die LED im Status "An - keine Messung" an zu blinken. Dann hat man aber immer noch genug Ladung für die jeweilige Mess-Session.
Interface zum Auslesen der Daten habe ich keins, d.h. ich muss den Logger zum Auslesen der Daten aufmachen und die SD-Karte rausholen. Ist nervig aber meiner Erfahrung nach bekommt man an einem Tag, je nach Trail, maximal 5 - 8 Messungen hin. Um da aussagefähige Daten zu erzeugen, muss der Fahrer konstant unterwegs sein, darf sich also nicht zu sehr verausgaben und braucht ausreichend Pausen, das Setup muss ohne Zweifel sein, also lieber einmal mehr als weniger kontrollieren. Da fällt die Zeit, um den Logger aufzumachen, gar nicht mehr so ins Gewicht. Besser und einfach mit wäre es aber definitiv, wie gesagt, der ganze Prozess (Messen, auswerten, einstellen, fahren) beinhaltet relativ viele Einzelschritte und ist störanfällig. Wenn man da Sachen vereinfachen kann, hilft das auf jeden Fall.
 
Zuletzt bearbeitet:
Zurück
Oben Unten