Betriebssoftware und Gehäuse der Messknoten
Fachpapier zu Stufe 7b: portabler Kern, Zeitabgleich, Programme für Tor, Zentrale und Kraftmesser, USB-Verbindung im Browser, Gehäuse aus der Datenschicht
Kennung TRAIN-PROV0001-P23 · Fassung 0.1 · Stand 23.09.2026
Verfasser: Thomas Schüller · office@sport-trainer.at
Kurzfassung
Fachpapier 21 legt fest, was ein Messknoten können muss. Dieses Papier beschreibt den ersten Teil der Umsetzung: die Betriebssoftware und die Gehäuse. Gebaut sind in Fassung 0.11:
- ein portabler Kern in C++ (
tw_knoten.h) mit Sperre, Doppelstrahl, Zeitabgleich, Kalibrierung, Verlaufsauswertung und Ausgabe im Format tw.messknoten/1. Er läuft auf dem ESP32 und auf dem Rechner und besteht dort 17 Prüfungen; - drei Programme für den ESP32 (Tor, Zentrale, Kraftmesser) als Quelltext;
- eine Parameterdatei, die aus der Datenschicht erzeugt wird, damit Sperrzeit, Fenster, Abtastrate und Format im Knoten und im Werkzeug gleich sind;
- die USB-Verbindung im Werkzeug Messknoten: Der Browser liest die Ausgabe eines Knotens direkt und sendet auf Wunsch Befehle;
- die Gehäuse für Tor und Kraftmesser als STL und OpenSCAD, erzeugt aus Maßen in der Datenschicht und auf geschlossene Netze geprüft.
Stand und Grenze: Die ESP32-Programme sind nicht gegen den ESP32 übersetzt und an keinem Muster erprobt, weil die Werkzeugkette des Herstellers im Bauraum nicht erreichbar war. Geprüft ist, dass sie gegen eine Nachbildung der benutzten Arduino-Schnittstellen übersetzbar sind. Das belegt Syntax und Typen, nicht das Verhalten auf dem Gerät. Die Gehäuse sind nicht gedruckt. Betriebssoftware und Gehäusedaten werden deshalb erst nach der Erprobung an Mustern auf sport-trainer.at veröffentlicht; bis dahin liegen sie im Paket.
1 Aufbau
Tor (je Lage 0, 10, 20 m) Zentrale Browser
zwei Strahlen → Doppelstrahl Abgleich je Tor Werkzeug Messknoten
Sperre → Zeitstempel (Toruhr) ──ESP-NOW──→ Umrechnung auf ← USB (Web Serial)
Antwort auf Abgleichproben Zentralenuhr → Zeilen oder gespeicherte Datei
Ausgabe tw.messknoten/1 ──→ Auswertung → Testreihe
Kraftmesser: Wandler → Kalibrierung → Verlauf (Spitze, Sekundenmittel) → Ausgabe ──USB──→ Browser
Der Kern enthält alles, was gerechnet wird. Die Programme für den ESP32 enthalten nur, was an die Hardware gebunden ist: Anschlüsse, Unterbrechungen, Funk, Wandler, serielle Befehle. So lässt sich jede Rechenregel auf dem Rechner prüfen, ohne dass ein Gerät angeschlossen ist.
2 Rechenregeln im Kern
2.1 Doppelstrahl und Sperre
Jeder der beiden Strahlen meldet Unterbrechen und Freigeben mit Zeitstempel. Das Tor löst aus, wenn beide Strahlen gleichzeitig unterbrochen sind und die beiden Unterbrechungen höchstens 20 ms auseinanderliegen. Maßgeblich ist der spätere Zeitpunkt. Ein Arm, der nur einen Strahl kreuzt, löst nicht aus. Danach verhindert die Sperre von 300 ms eine zweite Auslösung durch dieselbe Person. Beide Werte stehen in der Datenschicht.
2.2 Zeitabgleich
Jedes Tor stempelt mit seiner eigenen Uhr. Die Zentrale gleicht die Uhren vor dem Test mit Proben nach dem Muster des Network Time Protocol ab (RFC 5905): Sie sendet zum Zeitpunkt t0, das Tor empfängt bei t1 und antwortet bei t2, die Zentrale empfängt bei t3. Daraus folgen
- Laufzeit = (t3 − t0) − (t2 − t1),
- Versatz = ((t1 − t0) + (t2 − t3)) / 2.
Von 16 Proben zählt die mit der kürzesten Laufzeit, weil sie am wenigsten von Warteschlangen im Funk verfälscht ist. Der Versatz kann höchstens um die halbe Laufzeit falsch sein. Liegt diese Grenze über 1 ms, gilt der Abgleich als ungültig, und die Zentrale verwirft Auslösungen dieses Tors, bis neu abgeglichen ist. Damit ist die Anforderung »Gleichlauf höchstens 1 ms« aus Fachpapier 21 im Knoten selbst überwacht und nicht nur im Prüfprotokoll.
Die Uhren der Tore laufen nicht exakt gleich schnell. Über die Dauer eines Tests von einigen Minuten ist die Drift bei üblichen Quarzen klein gegenüber 1 ms. Für längere Einsätze wird der Abgleich wiederholt. Die Messung der Drift an den Mustern steht aus.
2.3 Kalibrierung und Verlauf
Der Kraftmesser setzt einen Nullpunkt ohne Last und nimmt bis zu fünf Laststufen mit Prüfgewichten auf. Die Steigung ist die Ausgleichsgerade durch den Nullpunkt (kleinste Quadrate). Der Kern meldet die größte Abweichung einer Stufe von der Geraden in Prozent; dieselbe Grenze von 1 % gilt im Prüfprotokoll.
Spitzenkraft und höchster Mittelwert über eine Sekunde werden fortlaufend in einem Ringspeicher gerechnet. Die Regel ist dieselbe wie im Werkzeug. Die Prüfung vergleicht beide an demselben synthetischen Verlauf: Sie ergeben 420 N und rund 379,6 N.
2.4 Ausgabe
Zeilen werden nur mit einer Nummer von 1 bis 40 und Durchgang 1 oder 2 geschrieben. Das Kürzel eines Knotens darf höchstens 12 Zeichen aus einem festen Zeichenvorrat haben. Jede Ausgabe beginnt mit dem Kopf des Formats und endet mit der Zeile # ende. Hinweise des Knotens stehen als Kommentarzeilen # hinweis: … und stören die Auswertung nicht.
3 Programme für den ESP32
| Programm | Aufgabe | Befehle über USB |
|---|---|---|
tor.ino |
zwei Strahlen mit 38-kHz-Träger, Flanken per Unterbrechung, Doppelstrahl und Sperre, Zeitstempel, Versand per ESP-NOW, Antwort auf Abgleichproben | tor <meter>, status |
zentrale.ino |
Tore finden, abgleichen, Auslösungen umrechnen und sammeln, Datei ausgeben | test, kennung, nr, abgleich, ausgabe, leeren |
kraft.ino |
Wandler lesen, Nullpunkt und Kalibrierung, Verlauf je Durchgang ausgeben, Spitze melden | knoten, test, kennung, null, kal, rechne, kopf, nr, start, stopp, ende |
Das Tor sendet jede Auslösung zweimal; die Zentrale verwirft Doppelte über eine Folgenummer. Die Empfänger müssen für Lichtschranken mit Dauersignal geeignet sein. Empfänger für Fernbedienungen mit starker Störunterdrückung schalten ein Dauersignal ab und sind ungeeignet. Der Kraftmesser arbeitet mit der üblichen Bauart von 24-Bit-Wägezellenwandlern mit 80 Messungen je Sekunde. Das genügt für die Spitzenkraft, für den Kraftanstieg aber nicht (Fachpapier 21).
Vor dem ersten Einsatz eines Musters sind die Programme mit dem Arduino-Kern ab Version 3 zu übersetzen und die Prüfprotokolle aus dem Werkzeug durchzuführen.
4 USB-Verbindung im Browser
Browser auf Chromium-Grundlage bieten eine serielle Schnittstelle an (Web Serial API). Ist sie vorhanden, zeigt das Werkzeug Messknoten den Knopf »Knoten über USB verbinden«. Nach der Wahl des Anschlusses liest es die Ausgabe des Knotens mit. Sobald eine Datei mit # ende abgeschlossen ist, wertet es sie wie eine gewählte Datei aus. Befehle an den Knoten gehen nur über das Eingabefeld des Werkzeugs; von sich aus sendet es nichts. Die Baudrate kommt aus der Datenschicht. Ohne diese Schnittstelle bleibt der Weg über die gespeicherte Datei.
5 Gehäuse
Die Maße der Gehäuse stehen in der Datenschicht: Innenmaß, Wand, Boden, Fenster für die Strahlen, Kabeldurchführung, Stativanschluss, Deckel mit Lippe und Spiel. 05_BUILD/gehaeuse_bauen.py beschreibt jedes Teil als Folge achsparalleler Quader, die hinzugefügt oder abgezogen werden, und erzeugt daraus:
- STL-Dateien für Unterteil und Deckel, auf einem Gitter aus allen Quadergrenzen vernetzt. Das Netz ist geschlossen, jede Kante gehört genau zwei Dreiecken mit gegenläufigem Umlauf, und alle Normalen zeigen nach außen. Die Prüfkette zählt das nach;
- eine OpenSCAD-Datei mit derselben Geometrie zum Weiterbearbeiten;
- die Ansicht
gehaeuse.svg.
| Teil | Außenmaß Unterteil | Besonderheiten |
|---|---|---|
| Tor | 74,8 × 50,8 × 34,4 mm | zwei Fenster 10 × 6 mm im Abstand von 14 mm, Kabeldurchführung, Sockel mit Tasche für eine Vierkantmutter 1/4-20 UNC, von innen eingelegt |
| Kraftmesser | 84,8 × 54,8 × 30,4 mm | Kabeldurchführung; liegt nicht im Kraftfluss und wird neben der Messkette befestigt |
Der Stativanschluss ist bewusst eine eingelegte Metallmutter und kein gedrucktes Gewinde (Fachpapier 21). Die Werkstoffe sind PETG für die Halle und ASA für den Einsatz im Freien. Die angestrebte Schutzart IP54 gilt erst nach einer Prüfung.
Offenlegung. Das Einzelunternehmen hinter diesem Vorhaben führt einen Betrieb für additive Fertigung und kann die Gehäuse fertigen. Die Konstruktionsdaten sind offen (MIT); jede andere Fertigung ist ebenso geeignet.
6 Prüfung
05_BUILD/knoten_bauen.py --pruefen erzeugt die Parameterdatei, kopiert den Kern in die Programmordner, übersetzt die Prüfung des Kerns mit allen Warnungen als Fehler und führt sie aus (17 Prüfungen). Danach übersetzt es die drei Programme gegen die Nachbildung der Arduino-Schnittstellen. Mit einem Ausgabeordner schreibt die Prüfung zwei Rundlaufdateien:
- eine Sprintdatei der Zentrale mit drei Toren, deren Uhren um −2,5 s, +7 s und +0,12 s versetzt sind;
- einen Kraftverlauf aus Rohwerten mit Kalibrierung.
Das Werkzeug wertet beide im Browser aus: Die Sprintzeiten stimmen trotz der versetzten Uhren auf die Millisekunde (3,108 und 3,118 s für Nummer 1), die Spitzen liegen bei 485 bis 580 N. Prüfung 17 der Prüfkette verlangt diesen Lauf.
7 Nächste Schritte
- Programme mit dem Arduino-Kern für den ESP32 übersetzen; Abweichungen der Schnittstellen beheben.
- Je ein Muster bauen, Gehäuse drucken, Prüfprotokolle führen; Drift der Toruhren und Laufzeiten des Funks messen.
- Muster gegen eine geprüfte Lichtschranke und eine Kraftmessplatte vergleichen; die Grenzen der Unsicherheitsbudgets durch gemessene ersetzen.
- Danach Betriebssoftware und Gehäusedaten auf sport-trainer.at veröffentlichen.
- Für den Kraftanstieg einen schnellen Wandler anbinden (ab 1000 Messungen je Sekunde).
8 Grenzen
- Keine Übersetzung mit dem echten ESP32-Kern, keine Erprobung an Hardware.
- Die Nachbildung der Schnittstellen prüft nur Syntax und Typen gegen die angenommenen Signaturen des Arduino-Kerns ab Version 3.
- Der Zeitabgleich setzt annähernd gleich lange Hin- und Rückwege voraus; die gewählte Grenze der halben Laufzeit deckt ungleiche Wege ab, verschenkt dafür aber Genauigkeit.
- Die Gehäuse bestehen aus Quadern ohne Rundungen und Schnappverbindungen; der Deckel hält durch eine Lippe mit Spiel.
Literatur
- Mills, D.; Martin, J.; Burbank, J.; Kasch, W. (2010): Network Time Protocol Version 4: Protocol and Algorithms Specification. RFC 5905, IETF.
- Espressif Systems (2026): ESP-IDF Programming Guide, ESP-NOW. Abgerufen September 2026.
- W3C Web Platform Incubator Community Group (2026): Web Serial API. Draft Community Group Report. Abgerufen September 2026.
- Avia Semiconductor: HX711, 24-Bit Analog-to-Digital Converter for Weigh Scales. Datenblatt.
- Maffiuletti, N. A. et al. (2016): Rate of force development: physiological and methodological considerations. European Journal of Applied Physiology 116(6), 1091–1116.
- Haugen, T.; Buchheit, M. (2016): Sprint running performance monitoring: methodological and practical considerations. Sports Medicine 46(5), 641–656.
- Europäisches Parlament und Rat (2014): Richtlinie 2014/53/EU (Funkanlagenrichtlinie).
- CENELEC: EN 60529, Schutzarten durch Gehäuse.
Zweckbestimmung: Planung und Auswertung von Training bei gesunden Personen. Kein Medizinprodukt. Keine Diagnose, keine Verletzungsvorhersage, keine Freigabe zur Rückkehr in den Sport.
Ethik: Keine Arbeit für Rüstung, Militär, Waffen oder Dual-Use-Luftfahrt.
Offenlegung: Dieses Vorhaben gehört zu einem Einzelunternehmen, das auch einen Betrieb für additive Fertigung führt. Wo Sensorgehäuse, Halterungen oder Messaufbauten empfohlen werden, besteht ein wirtschaftliches Eigeninteresse.
Rechte: Text alle Rechte vorbehalten. Werkzeuge, Betriebssoftware, Gehäusedaten und Datenschichten unter MIT, siehe Nutzung.