
An Wochentagen habe ich 17 Jahre lang Unternehmenssoftware entwickelt, ich hatte viele verschiedene Hobbys, aber am Ende habe ich gefunden, was ich seit 5 Jahren halte und werde es nicht loslassen. Seit 2013 widme ich den größten Teil meiner Freizeit Motocross und Enduro auf Offroad-Motorrädern, einschließlich der regelmäßigen Teilnahme an Amateurwettbewerben. Nach einem erfolglosen Sturz im Juni 2017 landete ich in einem Krankenhaus mit einer vollständigen Fraktur des rechten Humerus. Ich verließ das Krankenhaus, kam zur Besinnung und es wurde klar, dass es nicht möglich sein würde, noch zwei oder drei Monate zu reisen, aber die Gewohnheit der aktiven Arbeit blieb bestehen. Dann beschloss ich, das Rennen für meine Freunde selbst zu organisieren. Aus technischer Sicht war ich am Timing interessiert, daran, wie ich mein eigenes System herstelle und Rennen unter dem Schnitt lese.
Abends schrieb er einen Monat lang die erste Version des Schiedsrichterprogramms. Ich habe C # und WPF für die Implementierung verwendet, einfach weil ich sie besser kenne und keine Zeit damit verbringen muss, die Dokumentation zu studieren. Im Programm konnten Teilnehmer mit Startnummern erfasst werden, die in Klassen und Rennen unterteilt waren. Während des Rennens musste es gelingen, die Anzahl der Teilnehmer zu ermitteln, die über die Ziellinie fuhren. Alles hat gut funktioniert, und angesichts der geringen Teilnehmerzahl im ersten Rennen (ca. 40 Personen) war es nicht schwierig, alle mit den Händen zu zählen.
Als Programmierer wollte ich jedoch mehr Automatisierung, ich mag keine manuelle Routinearbeit, und außerdem ist es schon ziemlich schwierig, mit hundert Teilnehmern mit meinen Händen aufzunehmen. Infolgedessen führte er 2017 eine weitere Etappe durch, bei der es bereits drei separate Klassen und mehr als hundert Teilnehmer gab. Die Veranstaltung war recht erfolgreich und es wurde beschlossen, bis zur nächsten Saison elektronische Serifen zu verwenden.

Die Abbildung zeigt eine moderne Version des Programms mit RFID-Unterstützung und Fernbedienung von einem Smartphone aus. In der ersten Version gab es viel weniger Elemente.
Geräteauswahl
Natürlich ist dieses Thema nicht neu, es gibt viele vorgefertigte Optionen, aber die meisten waren mit dem Preis nicht sehr zufrieden. Zum Beispiel kostet ein professionelles Renn-Timing-System der italienischen Firma AMB ungefähr 13.000 Euro und wird mit 20 rollenden Transpondern geliefert. Jeder zusätzliche Chip kostet 100 € und ist wegwerfbar, dh nach 3-5 Jahren, wenn die Batterie in ihnen leer ist, kann er nicht mehr regelmäßig ausgetauscht werden. Der Rest des Systems ist ausgezeichnet, es wird in allen Weltrennen verwendet, es hat eine Genauigkeit von Tausendstelsekunden und so weiter. Für einen Bastler, der in seiner Freizeit Rennen für Freunde organisiert, ist dieses System nicht geeignet. Ich fand auch viele vorgefertigte Zeitmesssysteme für Marathons, Triathlons und andere ähnliche Wettbewerbe. Systeme verwendeten RFID-Tags. Aber die Besonderheiten waren dort peinlich - die Leute beenden den Marathon bestenfalls mit einer Geschwindigkeit von 20 km / h, und im Motocross ist es üblich, das Ziel auf dem größten Sprungbrett zu erreichen, das sie mit einer Geschwindigkeit von 70-80 km / h betreten. Aber der Preis für RFID-Tags von etwa 11 Rubel pro Stück erlaubte es, sie in jeder Menge zu verteilen.
RFID verwenden
Im Allgemeinen wurde die RFID-Technologie ursprünglich nicht zur Erkennung von Rennen entwickelt. Wenn Sie die Spezifikationen der Chips und Lesegeräte lesen, können Sie Einschränkungen hinsichtlich der Geschwindigkeit des Chips im Verhältnis zur Antenne von mehreren Metern pro Sekunde feststellen. Aber ich wusste, dass ein ähnliches System seit vielen Jahren erfolgreich in der berühmten Rennserie xsr-moto.ru eingesetzt wurde, an der ich selbst viele Male teilgenommen habe und deren RFID-Tags auf meinem Helm angebracht waren. Sergey Mindin, der Organisator dieser Serie, teilte freundlicherweise Informationen mit und verwies mich auf motosponder.com, wo er seine Serife erwarb.

Dies half bei der Entscheidung für den ersten Leser - Alien Technology F800, da ich sicher war, dass er unter den von mir benötigten Bedingungen funktionieren würde. Zusätzlich zu Alien habe ich über den Imping Speedway Revolution R420 nachgedacht und mir die Qualität des SDK und die Dokumentation angesehen, die ich kaufen wollte. Am Ende entschied er sich jedoch für den F800 als bewusst bewährte Lösung.
Der Leser kostete mich ungefähr 1600 Dollar, kaufte in Moskau und kaufte sofort zwei Antennen und 5-Meter-Hochfrequenzkabel. Eine unangenehme Überraschung war der Preis für HF-Kabel. Ein 10 m langes Kabel kostet mehr als die Antenne selbst und kann leicht gebrochen werden, z. B. durch Biegen oder Quetschen mit dem Fuß.
Lösung: Der Kauf eines vorgefertigten Satzes von Ausrüstung und Software von Motosponder für 3.500 US-Dollar ist teuer und kein Sport. Sie müssen nur Geräte kaufen, die etwa 2.200 US-Dollar kosten, und die Software selbst schreiben. Was könnte dort kompliziert sein? :) :)
Bei den oben genannten Preisen stellt sich eine logische Frage: War es möglich zu sparen? Kaufen Sie einen chinesischen Leser, Preise ab 200 US-Dollar. Es gab solche Gedanken, aber es gab immer noch den Gedanken, dass ich nur eine sehr begrenzte Zeit hatte, und die Stabilität des endgültigen Designs und die einfache Entwicklung waren wichtig. Zuvor hatte ich keine praktischen Erfahrungen mit RFID und keine Ahnung, auf welche physischen Einschränkungen ich stoßen könnte. Daher wurde die Idee der chinesischen Leser verschoben, aber nicht vergessen.
Übersicht über die RFID-Optionen
RFID ist der gebräuchliche Name für eine ganze Familie von Technologien, die sich in Häufigkeit und Protokoll des Datenaustauschs unterscheiden.
- LF RFID - Kilohertz-Reichweite, niedrige Reichweite und Lesegeschwindigkeit.
- HF 14 MHz - Dies sind normalerweise „magnetische“ Pässe zum Gebäude, Intercom-Schlüssel, kontaktlose Zahlungskarten und NFC in Telefonen. Im Allgemeinen eine sehr häufige Frequenz, aber der Kommunikationsradius beträgt bis zu einem Meter. Wieder nicht für meinen Fall geeignet. Ich kenne jedoch ein perfekt funktionierendes Zeitmesssystem, das auf Smartphones und U-Bahn-Karten basiert. Nur um den Fahrer zu markieren, muss er anhalten und der Richter muss das Telefon an der Marke befestigen.
- UHF ~ 840 - 930 MHz - der Bereich, auf dem alle Zeitsteuerungssysteme von Massenereignissen aufgebaut sind. Unter optimalen Bedingungen werden die Tags in einer Entfernung von mehr als 10 Metern gelesen, die Datenübertragungsgeschwindigkeit reicht aus, um Tags mit 50 oder mehr Mal pro Sekunde zu lesen, die Wellen dieser Frequenzen werden nicht so stark vom Wasser absorbiert wie im nächsten Bereich.
- UHF 2,4 GHz - vielleicht sah ich schlecht aus, aber ich kam zu dem Schluss, dass diese Frequenz eine Erfindung der Chinesen ist, weil ich solche Lesegeräte von Markenherstellern nicht gefunden habe. Auf jeden Fall habe ich mich entschieden, diese Frequenz nicht zu verwenden, da sie durch Wasser, Schmutz, Nebel und andere Geräusche zu gut gedämpft wird.
Eine etwas detailliertere Beschreibung der Frequenzen und Standards finden Sie unter folgendem Link: rfidcenter.ru/page/frequency-ranges
UHF-RFID
Daher kam ich zu dem Schluss, dass die beste Option für meine Anwendung der UHF-Bereich ist. Abhängig von regionalen Einschränkungen sind dies Frequenzen von etwa 840 bis 930 MHz und die Anzahl der Kanäle von 2 bis 30.
Mein F800 ist für die europäische Region konzipiert und für den Betrieb im Bereich von 865 bis 867 MHz ausgelegt. Zusammen mit dem Lesegerät habe ich verschiedene Tags gekauft, die alle vom Hersteller beschriebene Langstreckenmerkmale hatten, die spezifische Reichweite und Lesegeschwindigkeit sind in der Regel nirgendwo geschrieben, weil stark abhängig von den Bedingungen. Ich habe ziemlich viele Experimente durchgeführt, bei denen verschiedene Etiketten in verschiedenen Anzahlen und Konfigurationen von Antennen gelesen wurden. Hier sind die kurzen Schlussfolgerungen:
- Wenn Sie in offenen Bereichen die Markierung auf der Antenne genau ausrichten, ist es durchaus möglich, in einer Entfernung von 10 Metern einen stabilen Messwert zu erhalten.
- Die Form des Feldes an der Antenne ähnelt einem Tropfen, sodass der sicherste Messwert in einer Entfernung von 3 bis 5 Metern von der Antenne erhalten wird - im breitesten Teil des Tropfens. Natürlich hängt die Form des Strahlungsmusters vom Antennenmodell ab. Ich habe Flachbildschirmantennen mit dem angegebenen Gewinn von 10 dBi, 60/65 ° Antenne 311.ru/?product=rfid-panelnaya-antenna-pa868-10-rhcp verwendet
- Antennen sind zirkular und linear polarisiert. Bei linearer Polarisation ist der Lesebereich viel höher, aber die Ausrichtung des Etiketts sollte mit der Ausrichtung der Antenne übereinstimmen.
- Alle "Long-Range" -Tags funktionieren ungefähr gleich. Hier muss klargestellt werden, dass ich die Tags einer Marke verwendet habe - Alien, vielleicht befinden sie sich alle auf demselben Chip.
- Das Einschalten der maximalen Sendeleistung ist bei weitem nicht immer die beste Lösung. Zu Hause in einem kleinen Raum sank die Lesegeschwindigkeit aufgrund von Reflexionen stark. Dasselbe kann im offenen Raum passieren. Wenn sich zwei Antennen ansehen, funktionieren sie wie Spiegel.
- Im Allgemeinen treten bei RFID mehr Probleme durch zu viel Leistung und Lesereichweite auf als umgekehrt. Wenn Sie mit maximaler Leistung auf dem Feld „glänzen“, können Sie viele zufällige Messwerte auf einer großen Fläche (mehrere zehn Quadratmeter) erhalten. Daher ist es wichtig, die Leistung und Position der Antennen so einzustellen, dass das Ablesen auf der kleinsten Fläche erfolgt.
- Die Geschwindigkeit des Lesens von Tags hängt von ihrer Anzahl im Sichtfeld des Lesers ab. Aussage des Kapitäns, aber ich habe bestimmte Zahlen für optimale Bedingungen geändert:
- Eine Markierung - 50-70 / s
- 5 und mehr Markierungen - 250-280 / Sek
- Ungefähr 280 Lesevorgänge pro Sekunde - dies ist die Grenze für eine beliebige Anzahl von Tags im Feld. Wenn mehrere zehn Tags vorhanden sind, sinkt die Geschwindigkeit aufgrund von Kollisionen erheblich
- Die Markierung auf einem echten Motorrad, das sich mit einer Geschwindigkeit von mehr als 80 km / h bewegt, ist lesbar, aber in keiner Position ist es wünschenswert, dass die Markierung und die Antenne so ausgerichtet sind, dass sie sich leicht ansehen. Zum Beispiel ist die Antenne leicht auf den Fahrer gerichtet, und die Markierung ist irgendwo auf der Vorderseite des Motorrads angebracht. Bei niedrigeren Geschwindigkeiten können das Etikett und die Antenne streng senkrecht zur Spur stehen.
Zu diesem Zeitpunkt sah alles ziemlich gut aus, 50 Messwerte pro Sekunde, was bedeutete, dass die durchschnittliche Zeit zwischen den Messwerten 20 Millisekunden betrug, aber dies musste auch überprüft werden. Das Programm zur Erfassung von Statistiken wurde durch die Berechnung der Zeitdifferenz zwischen den Messwerten ergänzt. Es zeigte die schlechteste, beste Zeit und acht in Millisekunden gemessene Anteile. Es stellte sich heraus, dass der Leser alles andere als gleichmäßig las. Dies wird durch das Protokoll erklärt, wonach der Leser alle paar Sekunden mindestens 10 Millisekunden mit dem Senden aufhören muss. Hier ist der Test für zwei Etiketten im Feld:

- 44 ms - am schlimmsten
- 20 ms - zehntes Dezil
- 1 ms ist das Beste
- 3,2 ms - durchschnittliche Zeit
- 104 Lesevorgänge pro Sekunde
Das heißt, in 5 Testsekunden gingen die meisten Messwerte mit einer Lücke von einer Millisekunde und einer Stille von 44 Millisekunden. Dies ist eine unangenehme Eigenschaft für den Rennsport. 44 Millisekunden lang mit einer Geschwindigkeit von 20 Metern pro Sekunde fährt der Fahrer 80 Zentimeter und kann bei Störungen einfach an der Antenne vorbeifahren. Ungefähr diese Situation wurde in dem oben beschriebenen realen Test reproduziert. Und es gibt auch eine Lösung: Wenn Sie die Antennen auf die Fahrer richten, wird der Platz und damit die Lesezeit erheblich vergrößert. Und natürlich müssen Sie freie Wege hinzufügen, um Fahrer zu verfolgen, zum Beispiel: Videoaufzeichnung, eine Person mit einem Stück Papier und einem Bleistift, eine Person, die Zahlen von Hand in das Programm eingibt.
Konfiguration der Ziellinie
Es ist eine Sache, die Tags mit der Antenne auf dem Tisch zu lesen, und eine andere in einem echten Rennen mit den Fahrern. Ich habe zwei Hauptoptionen für die Konfiguration der Ziellinie in Betracht gezogen.
Erstens befinden sich die Antennen auf Stativen an den Seiten der Schiene. Im Idealfall stehen Antennen im Allgemeinen nur auf einer Seite und „leuchten“ über die Spur. Gleichzeitig wird die Position der Markierungen auf den Rennfahrern asymmetrisch, so dass es beispielsweise unmöglich ist, das Rennen in die entgegengesetzte Richtung zu starten. Darüber hinaus ist das Lesen nur auf einer Seite nicht so zuverlässig. Dann müssen Sie die Antennen auf beiden Seiten der Schiene so platzieren, dass sie aufeinander „leuchten“. Dies erfordert bereits die Konstruktion eines Rahmens über die Route, entlang der die HF-Kabel verlegt werden, und selbst in dieser Konfiguration bleibt das Problem der Spurbreite bestehen. Es kommt vor, dass die Strecke 8 bis 10 Meter breit ist und unter Berücksichtigung des Spielraums für die Installation von Stativen 12 bis 13 Meter betragen kann. In dieser Entfernung können leicht Lesefehler auftreten.
Die zweite Option, die Motosponder und xsr-moto über viele Jahre hinweg bewiesen haben, besteht darin, Antennen auf einem Rahmen über der Schiene zu installieren und nach unten zu richten. Etiketten müssen auf die Helme der Fahrer oder auf den Oberkörper geklebt werden. Infolgedessen stellt sich heraus, dass der Abstand von der Antenne zur Markierung immer nicht mehr als 1,5 Meter beträgt (die Höhe des Rahmens beträgt 3 Meter, aber der Fahrer passiert die Ziellinie selten mit einem Helm in Bodennähe). Und die große Breite der Spur kann durch den Rahmen selbst leicht geschnitten werden.

Im Moment verwende ich einen 6 Meter breiten Rahmen mit drei Antennen, dessen Breite um einen zusätzlichen Abschnitt auf 8-9 Meter erhöht werden kann. Danach benötigen Sie 4 Antennen, die etwas breiter angeordnet sind. Nach den Erfahrungen von zwei Rennen im Jahr 2018 reicht eine Breite von 6 Metern aus, wenn Sie einen Rahmen auf einem langsamen Streckenabschnitt installieren. Es erhöht auch die Wahrscheinlichkeit, Etiketten zu lesen - wir töten zwei Fliegen mit einer Klappe.
Zeit
Nachdem mit Eisen alles mehr oder weniger klar geworden war, war es Zeit, tatsächlich Kreise zu zählen. Auf den ersten Blick ist alles einfach: Erstellen Sie eine Tabelle, in der jedem Fahrer eine Tag-ID zugewiesen wird, und zeichnen Sie jedes Signal vom Lesegerät auf.
Fast so, aber die Signale vom Lesegerät müssen gefiltert werden, denn wenn sich das Tag im Sichtfeld des Lesegeräts befindet, wird es bis zu fünfzig Mal pro Sekunde gelesen. Es muss auch berücksichtigt werden, dass die Noten in seltenen Fällen immer noch nicht lesbar sind. Daher muss das Notch-Programm in der Lage sein, Echtzeitdaten vom Leser, vom Bediener, der die Zahlen manuell eingibt und die Noten nach dem Ende des Rennens bearbeiten kann, zu empfangen.
Die vom Leser und vom Bediener bereitgestellten Daten durchlaufen den Filter zur Deduplizierung und werden zu einer Nummernspur. Dies ist eine eindimensionale Anordnung von Fahrern in der Reihenfolge, in der sie die Ziellinie überquert haben. Zum Beispiel: [1, 2, 3, 2, 3, 1]. Auf dieser Strecke können Sie sehen, dass die Fahrer zwei Runden gefahren sind. In der ersten Runde waren die Positionen der Fahrer 1, 2, 3. In der zweiten Runde hatte die Nummer eins ein Problem und es endete am Ende. Infolgedessen gewann Nummer zwei, gefolgt von Nummer drei und dann Nummer eins. Für die Berechnung des endgültigen Protokolls wird die Reihenfolge und nicht die Zeitstempel verwendet. Dies geschieht aus Gründen der Kompatibilität mit dem klassischen manuellen Timing, wenn die Juroren die Titelnummern in einem Notizbuch aufzeichnen. Obwohl es noch keine solche Funktion gibt, ist es einfach, das Laden der Titelnummern von einem zusätzlichen Richter zu implementieren. Als Ergebnis der Berechnung wird die folgende Tabelle erhalten:

Fazit
Dieser Artikel beschreibt nur eine kleine Erfahrung, die ich in den letzten 1,5 Jahren gesammelt habe. Außerdem möchte ich über die Erstellung einer Website zur Registrierung von Fahrern und die Veröffentlichung von Ergebnissen im Live-Modus, die Entwicklung einer zweiten Version des Hardware-Notch-Komplexes auf der Basis des chinesischen RFID-Moduls und Orange Pi, den Prozess der Vorbereitung der Strecke, die Organisation eines Massenereignisses und vieles mehr sprechen. Wenn das Thema interessant ist, hinterlassen Sie Kommentare.
Das Projekt ist offen, ein wesentlicher Teil des Codes wird auf github.com/maxbl4 veröffentlicht, der Rest wird auch bald verfügbar sein. Sie müssen nur die Passwörter und API-Schlüssel aus dem Code entfernen :-) Wenn Sie daran interessiert sind, die Entwicklung des Projekts zu unterstützen, lernen Sie etwas Neues, lernen Sie beispielsweise das Fahren von Motorrädern, schreiben Sie auf .Net Core und Angular wenden Sie sich bitte an. Der aktuelle Technologie-Stack ist .Net 4.7, .Net Core 2.2, Docker, Angular 7.1, MySql 10.3
Derzeit ist der gesamte Code für die Arbeit mit den beiden von mir verwendeten RFID- Lesetypen öffentlich verfügbar: github.com/maxbl4/RfidDotNet
.Net Standard 2.0-Bibliothek, vollständige Protokollimplementierung, externe Abhängigkeit nur von SerialPorlStream für die Arbeit mit der seriellen Schnittstelle unter Linux.
Sie können das System in Aktion beobachten, kommunizieren und eine tolle Zeit beim Sportmotorradfestival am 16. Februar in der Nähe von Sergiev Posad vk.com/event74123582 haben