Hallo zusammen,
ich habe hier ein kleines Projekt bei dem ein Arduino Node am Startpunkt und einer am Ziel mittels Lichtschranken Zeiten ermitteln und zu einem "Server-Node" übertragen sollen.
Dort soll die benötigte Zeit angezeigt werden.
Die Entfernungen zwischen Start und Server bzw. Ziel und Server sind jeweils etwa 150Meter.
Daher hab ich mich für eine Funkübertragung entschieden.
Ich verwende RF24 Module und die RF24Network Libraries
Zur Anzeige wird ein 20x4 Display verwenden.
Der Aufbau selbst ist fertig und funktioniert anständig. Ich habe allerdings ein Verständnisproblem was die Zeiten angeht.
Ich beschreibe kurz den Ablauf was bisher passiert:
Start und ZielNode haben je eine eigene ID bekommen und senden rythmisch alle 2 Sekunden eine Null an den Server. Somit weiß dieser, dass seine Clients noch da sind. Jeder versandt wird quittiert (das macht die Library selbst)
Um den Stromverbrauch brauche ich mir hier keine Gedanken machen, darauf kommt es nicht an.
Wird die Lichtschranke ausgelöst, sende der entsprechende Node seine Zeit (Millis) des Aulösezeitpunktes an den Server. Diese Zeit wird für den Client inkl der Serverzeit(Zeitpunkt des Empfangs) abgespeichert.
Hat der Server von einem Node eine Zeit empfangen, nimmt er keine weitere mehr an, bis das System zurückgesetzt wird.
Insgesamt scheint das so auch zu funktionieren, dachte ich. Nur ist mir erst später aufgefallen, dass wenn die Clients alle zwei Sekunden nur senden, im Ernstfall ein Versatz von bis zu 2 Sekunden auftreten können, was natürlich für Vergleiche unterschiedlicher Läufe schlecht wäre.
Hat jemand eine Idee, wie ich das prinzipiell korrekt umsetzen kann?
Ich brauche irgendwie eine Art synchronisation der einzelnen Nodes, vermute ich.
Über Vorschläge wäre ich sehr dankbar, da ich derzeit scheinbar ziemlich verbohrt auf der Stelle trete