Hallo,
für Modellflug Wettbewerbe, wo jeweils drei Flugzeugen gegeneinander Rennen fliegen haben wir eine Zeitmessvorrichtung gebaut, die mit den Schiedsrichtern und Piloteninformationen kommuniziert.
Die bestehende Anlage arbeitet mit ZigBee 2.4GHz Modulen. Leider kommt es ab und zu vor, dass Datenpakete verloren gehen oder verzögert ankommen. Das ist eigentlich nicht akzeptabel, weshalb wir die Anlage verbessern möchten.
Hier der Aufbau:
- "Timing" ist der Coordinator und hier findet die eigentliche Zeitmessung intern statt (gestoppt wird über die Taster, der dargestellten Motor sind Vibrationseinheiten, die als Feedback für den Zeitnehmer dienen, dass der Taster auch wirklich gedrückt wurde - die gestoppte Zeitinformationen werden im Netzwerk nicht geteilt). Jede Farbe wird einem Flugzeug/Teilnehmer fest zugeteilt. Also ein Flugzeug startet auf der Farbe Rot: Alle roten Taster/Lichter/Display sind diesem Flugzeug zugeordnet, das nächste Flugzeug startet auf Gelb usw....
- "Judges P1" (Router) überwachen das Überfliegen einer Linie und bestätigen das durch Tastendruck. Diese Info, dass die Taste gedrückt wurde geht an "Lights" und die entsprechende Lampe leuchtet so lange, wie der Taster gedrückt wird. Außerdem geht diese Info an Timing, wo diese information abgespeichert wird.
- Judges P2&P3 (Endpoints) überwachen auch das Überfliegen einer Linie, geben aber nur Feedback (Tastendruck) bei einem Verstoß (zeitunkritisch Info)
- Das Display Zeigt einen Startcountdown, der im "Timing" gestartet wird, an. Das muss also synchron laufen (zeitkritisch). Im Rennen wird die aktuelle Rundenzahl angezeigt, was aber eher zeitunkritisch ist.
- Am Ende des Rennens schickt "Timing" die Info des Rennendes an alle Judges, was die Vibrationsmotoren aktiviert.
- Melden die "Judges" einen Verstoß (Linie nicht überflogen) an "Timing", aktiviert "Timing" die Cut Lampe beim "Lights" Modul
"Judges P2 und P3" nutzen die ZigBee Breakout-Boards und deren Sensor Ein-/Ausgänge direkt.
Die anderen Stationen haben Arduinos für die Datenverarbeitung/Logik. Das Timingsystem sammelt alle Daten und übergibt diese dann per Serielle Schnittstelle an einen Laptop.
"Judges P1" ist im Netwerk derjenige, der am meisten sendet und dessen Informationen am wichtigsten sind. In einem üblichen Rennablauf wird der Taster einer Farbe alle ~5s gedrückt und für 0.3s gehalten. Die Farben (= jeweiliges Flugzeug) zueinander natürlich je nach Position der Modelle völlig zeitversetzt bis parallel. Im Moment senden wir bei jeder Statusänderung eines der Taster ein Datenpaket mit Status rot (0/1); gelb (0/1); blau (0/1).
Wie man sieht übertragen wir nur sehr kleine Datenmengen
Ich habe mit P1 zeitkritische Signale markiert, also wo es auf sehr kurze Datenübetragungen ankommt. Die Flugzeuge fliegen mit etwas über 300Km/h ~= 85m/s wir brauchen die Infos also sehr schnell Was wäre hier mit z.B. LoRa zu erwarten?
P2 sind nicht so sehr Zeitkritisch aber sollten auch im Bereich von 200ms ankommen.
Und vorallem sollten immer alle Daten ankommen.
Welches Datenübertragungssystem würdet ihr für eine solche Anwendung vorschlagen? Wäre LoRa hier die bessere Wahl?
Vielen Dank im Voraus
Gruß
Christoph
So sieht der Rennkurs mit der Verteilung der Helfer aus:
Und hier ein Rennen aus Pilotensicht. Im Video sieht man, wenn die Flugzeuge Richtung Pylon #1 fliegen, ganz hinten kurz vor dem Pylon die "Lights" stehen. Das Display steht rechts am Flugfeldrand. Die Judges und Zeitnehmer kann man nicht sehen.
LoRa fällt aus.
Du darfst keine dauerhafte Übertragung durchführen.
Die LoRa-Alliance gibt wohl 5 MInuten Pause zwischen zwei Übertragungen als Wert vor.
In D wäre das vorbeischauen bei der BNetzA und die Richtlinien für die ISM-Bänder einsehen sicher ein erster Schritt.
Wenn Du zeitkritische Ereignisse aufzeichnen willst, dann bau ein eigenes 5G-Netz.
Ne im Ernst. Über welche Entfernungen sprichst Du denn? - Hat sich mit Deinem überschnitten - Danach wäre die Auswahl der Funktechnologie durchzuführen.
[edit]
Man mag gar nicht glauben, wieviele professionelle Race-Ereignisse mit Kabelverbindungen erfasst werden.
Die werden alle ihre Gründe haben
[/edit]
Ehrlich gesagt, das ist vollkommen unktitisch. Du nimmst ein paar ESP32 oder Notebooks oder was auch immer du hast, macht Zeitsyncronisierung über NTP und dann sendest du die Zeiten der Tastendrucke per HTTP an einen Rechner.
Danke für deine Antwort. Die Zeitmessung selber erfolgt sogar Kabelgebunden. Es ist ja "nur" die Überwachung der Fluglinien die per Funk übertragen wird. Und davon ist nur eine Information "Judge P1" zu "Turnlights" die möglichst schnell ankommen soll.
Auch dir danke für die Antwort. Du meinst die Information wann ein Taster gedrückt wurde ins Internet Übertragen und das "Lights" Modul fragt diese Info wieder aus dem internet ab?
ich sehe zwei schwierigkeiten:
- Die Wettbewerbe finden meist fernab von Städtten/dörfern statt, somit hat man oft sehr schlechtes Netz
- Selbst bei lokalen "Intranet" befürchte ich das die Abfrage der Information zu langsam erfolgt?
Push-Nachrichten wurden zu diesem Zweck erfunden
Ich wäre auch für die ESP-Variante.
Es gibt auch welche mit externem Antennanschluss,
Aber dann bin ich wieder auf dem 2.4GHz Band was eingetlich schon kritisch mit den geforderten Entfernungen ist?! Also wird die Übertragung nicht sicherer als mit den bisherigen ZigBee, oder?
Das kommt drauf an.
Du kannst auf einen Push einen ACK auslösen.
Kommt der nicht, wird der Push wiederholt.
Alles eine Frage des Protokoll.
Zur Erklärung: Einen einzigen 5GHz AP mit OpenWRT, da drauf eine minimale "Datenbank" aka bash-cgi und da verbinden sich alle Dinger hin. Der AP liefert über NTP die Zeitbasis. Wann die einzelnen Clients die Daten abladen ist irrelevant. Am WiFi hast du ~ 500ms Jitter bei Vollast, wenn sich sonst nichts tut ~ 30ms. Das sollte als "Echtzeit" für die Anzeige ausreichen.
Und womit würdet ihr das Netzwerk aufbauen? Judge P1 ist bis zu 320m von der Timing entfernt.
Wenn Du einen externen Antennenanschluß am ESP hast , vielleicht ne gute Richtantenne.
Notfalls ein Relay zwischendurch.
Wenn es so viele Stellen gibt dann könnte auch ein ESP-NOW mesh eine Überlegung wert sein.
Vorrausgesetzt ein ESP schafft im Freifeld die maximale Entfernung. Das habe ich noch nie ausprobiert.
SCNR:
was möchtest du genau wissen? Lora ist sicher schnelle als eure Flugzeuge
Ich wollte wissen wie lange es dauert die Daten zu übertragen... Aber LoRa ist ja scheinbar raus
Welche Reichweite hat ein 5GHz Access Point auf freiem Feld?
Und gibt es welche die ihr besonders empfehlen könnt?
das ist zwar lorawan, aber hier kannst ablesen wie lange (wie schnell) so eine Message bei welchem SF unterwegs ist.
https://avbentem.github.io/airtime-calculator/ttn/eu868
Ein AP mitten auf der Wiese, mindestens 5m über Grund, schafft locker 100m. Ein ESP in WiFi-Mode schafft ~50m, ESP-NOW ~ 150m. In früheren Tagen gab's Wettbewerbe "wer schafft mehr Meter mit seinem WiFi" - wenn das nicht alles gelöscht wurde gibt's massig Stoff darüber. Für den Hausgebrauch holst du heute einfach ein paar Rangeextender - wenn's denn Problem gibt auf freier Flur.
Hi,
zwischen "Timing" und "Judges P1" bzw "Lights" sind bis zu 320m Distanz (je nach Austragungsort). Da bräuchte es ja schon mindestens 2 Repeater... Und jeder repeater verzögert das Signal.
Bei unseren Wettbewerben sind die "Lights" eine sehr wichtige Information und müssen möglichst ohne Verzögerung ankommen, da wir auf dieses Signal die Wende einleiten. Bei 85m/s sind 100ms verzögerung schon 2x 8,5m die wir jede Runde zu weit fliegen....
Uns geht es nicht um eine Nachträgliche genaue Auswertung, sondern Echtzeitanzeigen.
Am liebsten würde ich den bestehenden c-Code weitesgehend weiter benutzen und nur die Datenübertragung anpassen und nicht alles neu schreiben.
Gibt es eine alternative die schneller ist und mehr Reichweite hat?
Nochmal zurück zu LoRa...
Während eines Rennens würde "Judges P1" am meisten Daten senden.
Das wären 30x während eines Rennens und wir schaffen maximal 10 Rennen / h also 300 Massages mit 3 bit payload.
Wäre das über den 1% DC? Ich finde leider nicht wie man das berechnet
"Timing" senden 12 Massages mit 4bit payload.
"Judges P2&3" würden max 12 Massages mit 3bit.
"Lights" und "Dsiplay" senden nur ACK
Ist das denn unwegsames Gelände zwischen Jugdpe P1 und Timing?
Was spricht denn dagegen da 400m Kabel zu legen?
Das erscheint mir immer noch am einfachsten zu sein.
Du willst ja dass die Lampe 1 Millisekunde nach dem Drücken des Tasters aufleuchtet.
Laufen da Zuschauer herum die das Kabel durchreißen könnten?
Was gegen Kabel spricht:
- Kosten für die Kabel
- Aufbauaufwand
- Gewicht/Plaz (Transport/Lagerung)
- Bei 400m ist wieder irgend eine Verstärkung oder so notwendig
- Stellenweise unwegsames Gelände/ Bäche
- Ein trecker der Abends noch schnell das Feld umgräbt
- Manchmal Getreidefelder oder Rapsfelder
Ich würde Kabel eigentlich bevorzugen aber ist leider nicht praktikabel
1ms ist sicher nicht umsetzbar aber <50 wäre das Ziel.