Erschwingliche FPV-Einzelknoten-Race-Timing-Lösung
Wenn Ihnen dieses Projekt gefällt, können Sie es unterstützen, indem Sie zur Codebasis beitragen, Tests und Feedback geben, neue Ideen teilen und dabei helfen, das PhobosLT-Evangelium zu verbreiten. Sie können mir auch einen Bubble Tea oder ein Bier spendieren, das wird mir Kraft geben, das Projekt besser zu machen!
Phobos LapTimer (oder PhobosLT) ist eine einfache, aber leistungsstarke Lösung zur Rundenzeitmessung für 5,8-GHz-FPV-Piloten. Es ist für den persönlichen Gebrauch und für kleine Drohnen (2 Zoll oder weniger) konzipiert, aber es spricht nichts dagegen, es mit größeren Drohnen zu betreiben! Es handelt sich um ein kleines eigenständiges Gerät, das über eine eigene Stromversorgung verfügt und über WLAN mit einem Telefon, Tablet oder Laptop kommuniziert. Das Ziel des Projekts ist es, ein einfach zu bedienendes und kleines Gerät zu haben, das überall verwendet werden kann, wann immer Sie ohne viel Aufhebens eine Whoop-Race-Trainingseinheit in Ihrem Wohnzimmer oder an einem örtlichen Trainingsort mit Freunden absolvieren möchten. Teile des Codes basieren auf RotorHazard und ExpressLRS. Ein großes Lob an die Menschen hinter diesen Organisationen, sie tun VIEL für die Community und gestalten die Zukunft von FPV. Wenn Sie diese Projekte noch nicht kennen und etwas Zeit haben, schauen Sie sich sie an!
PhobosLT verfügt über die folgenden Funktionen:
Einzelknoten-Timing von 5,8-GHz-Analog-, HDZero- und Walksnail-Systemen.
Sprachansage, optional inklusive Pilotenname.
Echtzeit-RSSI-Auslesung und -Kalibrierung – ermöglicht die Zeitmessung auch in kleinen Räumen wie einem 16 m^2 oder 200 Fuß^2 großen Raum.
2 Runden aufeinanderfolgende und 3 Runden aufeinanderfolgende Zeiten und optionale Anzeige im laufenden Betrieb (speziell für RaceGOW entwickelt).
Sichtbarer Rundenverlauf.
Möglichkeit, eine minimale messbare Rundenzeit festzulegen, um Fehlalarme zu vermeiden.
Konfigurierbarer Unterspannungsalarm.
Kleine Größe, einfach zu bauen.
Relativ günstig.
Keine zusätzlichen Apps erforderlich, autarke Lösung.
Zukünftige Entwicklungspläne:
Flashen über WLAN oder per Webkonfigurator.
Kundenspezifische Hardware zur Minimierung des Lötaufwands.
Integration mit ExpressLRS und Brillen-VRXs zur Weiterleitung von Rundenzeiten an das OSD.
Integration mit RotorHazard zur Messung von Zwischenzeiten.
Gleichzeitige Unterstützung mehrerer Piloten auf Kosten einer geringeren Genauigkeit.
Der Kern des Projekts ist ein ESP32-Board + ein RX5808-Modul. ESP fungiert als Webserver, der eine einfache Webseite mit allen Konfigurationen bereitstellt. Jedes Gerät mit WLAN-Konnektivität und einem Webbrowser kann verwendet werden, um eine Verbindung herzustellen, den Timer zu konfigurieren und Rundenzeiten zu messen.
Die Rundenzeitmessung erfolgt durch Messung des RSSI über die Zeit, Filterung und Prüfung auf Spitzen im RSSI, denn je näher die Drohne am Timer ist, desto höher ist der RSSI. Auf dieser Grundlage richten wir Schwellenwerte für den Enter RSSI
und Exit RSSI
ein, die uns sagen, wann wir einen Spitzenwert abschneiden müssen. Die Zeit zwischen dem Eingangs- und Ausgangs-RSSI wird dann verwendet, um die Zeit zwischen dem letzten Spitzenwert und dem aktuellen Spitzenwert, der eine Runde darstellt, zu messen.
Die Kommunikation mit dem Kunden erfolgt über WLAN. Der ESP32 richtet einen Zugangspunkt ein und der Client verbindet sich mit ihm. RSSI wird über einen Websocket übertragen, um das RSSI-Diagramm in Echtzeit zu zeichnen. Konfiguration, Benutzerinteraktionen und Ereignisse (z. B. Starten des Timers, Stoppen, Melden einer Rundenzeit) erfolgen über Pausenaufrufe.
Der Browser wird genutzt, um mithilfe der articulate.js-Bibliothek Töne auszugeben oder Rundenzeiten abzurufen. Es kann jedoch ein optionaler (aber empfohlener) Piepser für den Timer installiert werden, um auch jedes Mal einen Ton auszugeben, wenn eine Spitze erkannt wird, oder um zu warnen, wenn beispielsweise der Timer abgelaufen ist Die Batteriespannung ist niedrig.
Um einen Phobos LapTimer zu bauen, benötigen Sie:
Ein ESP32-Breakout-Board, vorzugsweise mit USB. Die Codebasis ist Plug-and-Play mit LilyGo T-ENERGY
, das über einen eingebauten 1s 18650 Li-Ion-Zellensteckplatz und einen Spannungserkennungsschaltkreis verfügt. Unterstützte Boards:
LilyGo T-ENERGY – empfohlen.
LilyGo T-CELL – teurer als das oben genannte, verfügt aber über eine Ladeschaltung.
ESP32-DevKit – schlicht, aber günstig.
Ein RX5808 VRx-Modul mit SPI-Mod.
Eine Spannungsversorgung jeglicher Art – eine Batterie, eine Powerbank usw. Dies hängt vom verwendeten ESP32-Modul ab.
(Optional) Eine LED beliebiger Farbe (+ ein passender Widerstand zur Stromsteuerung).
(Optional) Ein 3v3 bis 5V-Summer MIT einem Generator (also aktiv und nicht passiv).
Um den RX5808 mit dem ESP32 zu verbinden, verwenden Sie die folgende Pinbelegungstabelle. Bitte beachten Sie, dass der +5-V-Pin am RX5808 mit einer 3v3-Quelle verbunden werden sollte, um den RX5808 unter Spannung zu setzen, um eine bessere RSSI-Auflösung zu erhalten und die Kühlung zu unterstützen:
ESP32-PIN | RX5880 |
---|---|
33 | RSSI |
GND | GND |
19 | CH1 |
22 | CH2 |
23 | CH3 |
3V3 | +5V |
Optionale, aber empfohlene Pinbelegung für LED-, Summer- und Batteriespannungseingang:
ESP32-PIN | Peripherie |
---|---|
21 | LED-Anode (+) |
27 | Summer positiv (+) |
35 | VBAT-Eingang MAX 3,3 V (der Code geht von einem 1/2 Spannungsteiler mit einer 1s Li-Ion-Zelle aus) |
Nachfolgend finden Sie einen Anschlussplan der Peripheriegeräte. Für T-Energy und T-Cell müssen Sie lediglich den RX5808 und einen Summer anschließen.
Alternativ können Sie die Community bitten, einen Timer für Sie zu erstellen. Fragen Sie auf Discord nach!
Derzeit erfolgt die Erstellung der Firmware über Visual Studio Code. Das Toolchain-Setup ist genau das gleiche wie für ExpressLRS. Wenn Sie also bereits eine ExpressLRS-Toolchain eingerichtet und ausgeführt haben, sollten Sie damit zufrieden sein. Die Anforderungen zum Erstellen der Firmware sind wie folgt:
Visual Studio-Code.
PlattformIO.
Git.
Führen Sie diese Schritte aus, um die Toolchain auf Ihrem Computer einzurichten:
Laden Sie vscode herunter und installieren Sie es.
Öffnen Sie vscode und klicken Sie in der Symbolleiste rechts auf das Symbol Extensions
(siehe Verwalten von Erweiterungen).
Geben Sie im Suchfeld „platformio“ ein und installieren Sie die Erweiterung (siehe Dokumentation pio install
).
Git installieren.
Der letzte Schritt, bevor Sie die Firmware erstellen können, besteht darin, dieses Repository auf Ihren Computer zu klonen:
Öffnen Sie in VSCode die Befehlspalette (mit Cmd+Shift+P
unter MacOS oder Ctrl+Shift+P
unter Windows).
Geben Sie Git: Clone
.
Klicken Sie darauf.
Geben Sie dann die PhobosLT-Repo-URL ein (zu finden oben auf der Github-Seite unter der Schaltfläche Clone
).
Wählen Sie einen Ordner aus, in dem sich Ihre Kopie des Repositorys befinden soll.
Um die Firmware zu erstellen, klicken Sie auf das PlatformIO
-Symbol in der Symbolleiste links, um die Liste der Aufgaben anzuzeigen. Wählen Sie nun Project Tasks
aus, erweitern Sie PhobosLT
-> General
und wählen Sie Build
aus. Nach einigen Sekunden sollten Sie das Ergebnis im Terminal sehen ( Success
).
Stellen Sie vor dem Flash-Versuch sicher, dass eine USB-Verbindung zwischen dem ESP32 und dem Computer besteht. Das Flashen ist ein zweistufiger Prozess. Zuerst müssen wir die Firmware flashen, dann das statische Dateisystem-Image auf den ESP32.
Um die Firmware zu flashen, klicken Sie auf das PlatformIO
-Symbol in der Symbolleiste links, um die Liste der Aufgaben anzuzeigen. Wählen Sie nun Project Tasks
aus, erweitern Sie PhobosLT
-> General
und wählen Sie Upload
. Das Ergebnis sollte im Terminal angezeigt werden ( Success
). Fahren Sie als Nächstes mit Schritt 2 fort.
Wählen Sie Project Tasks
aus, erweitern Sie PhobosLT
-> Platform
und wählen Sie Upload Filesystem Image
. Warten Sie auf das Ergebnis im Terminal mit der Meldung Success
. Das ist es! Ihr Timer ist betriebsbereit.
Wenn etwas schief gelaufen ist, überprüfen Sie bitte auch das Terminal. Es wird zumindest einen Hinweis auf das Problem enthalten. Bitte bitte die Community um weitere Hilfe zu Discord!
ESP-WROOM-32 Koffer von Porlock
In diesem Abschnitt wird die Verwendung und Konfiguration des Timers beschrieben. Die App besteht aus 3 Seiten und ist sehr einfach zu bedienen!
Schalten Sie den Timer ein. Sie sollten einen kurzen und einen langen Piepton hören.
Schalten Sie Ihr Gerät ein und aktivieren Sie WLAN.
Warten Sie, bis ein WLAN-Zugangspunkt erkannt wird, der mit PhobosLT_xxxx
beginnt.
Klicken Sie darauf und geben Sie das Passwort ein: phoboslt
.
Es sollte eine Verbindung herstellen und ein Browserfenster mit der App für Sie öffnen. Wenn dies nicht der Fall ist, öffnen Sie den Browser und geben Sie 20.0.0.1
ein.
Voila!
Um den Timer zu konfigurieren, müssen Sie auf die Schaltfläche Configuration
klicken. Sie sollten mit einem Bildschirm wie diesem begrüßt werden:
Nachfolgend finden Sie alle Konfigurationsparameter und deren Beschreibung:
Kanal und Band – stellen Sie das gleiche Band und den gleichen Kanal wie Ihre Drohne ein. Unterstützte Bänder – A, B, E, Fatshark, RaceBand und LowBand, jeweils 8 Kanäle. Frequenz – Dies ist ein statisches Feld, das die Frequenz basierend auf dem eingestellten Band und Kanal anzeigt. Mindestrundenzeit – Sie können eine Mindestrundenzeit festlegen, die gemessen werden kann. Dies vermeidet Fehlalarme, wenn Sie am Starttor stürzen oder wenn Ihre Strecke sehr eng ist und Sie während einer Runde mehrmals in unmittelbarer Nähe des Timers fliegen. Batteriespannungsalarmschwelle – legt einen Batteriespannungsalarm fest, der ausgelöst wird, sobald die gewünschte Spannung erreicht ist. Der Bereich liegt zwischen 2,5 und 4,2 V. Ansagertyp – Sie haben mehrere Möglichkeiten, wie Ihr Timer Rundenzeiten melden soll:
None
ist überhaupt kein Ton.
Beep
gibt beim Überqueren lediglich einen kurzen Piepton aus, um Sie darüber zu informieren, dass eine Runde registriert wurde.
Lap Time
gibt die Rundenzeit an (einschließlich Ihres Pilotennamens, wenn das Feld „Pilotenname“ ausgefüllt ist).
Two Consecutive Lap Time
werden die zwei aufeinanderfolgenden Rundenzeiten bekannt gegeben.
Three Consecutive Lap Time
werden die drei aufeinanderfolgenden Rundenzeiten bekannt gegeben.
Ansagerrate – steuert die Geschwindigkeit, mit der der Ansager die Rundenzeit vorliest. Pilotenname – wenn er ausgefüllt ist, wird beim Ablesen der Zeiten der Pilotenname einbezogen, z. B. Pilot1 23.45
. Dies ist nützlich, wenn mehr als nur ein Timer gleichzeitig läuft. Wenn Sie alleine üben, lassen Sie es leer.
HINWEIS: Stellen Sie nach der Konfiguration sicher, dass Sie die Konfiguration speichern, indem Sie auf die Schaltfläche Save Configuration
klicken, da die Änderungen sonst nicht wirksam werden.
Die Kalibrierung ist ein sehr wichtiger Schritt und muss ordnungsgemäß durchgeführt werden, um sicherzustellen, dass die Zeitmessung korrekt erfolgt und jede Runde vom Timer gezählt wird.
Um die Kalibrierung durchzuführen, klicken Sie auf die Schaltfläche Calibration
. Ihnen sollten zwei Schieberegler und ein Diagramm angezeigt werden, das den RSSI im Zeitverlauf darstellt. Sie können sich RSSI als Kehrwert der Entfernung zwischen der Drohne und dem Timer vorstellen. Je höher der RSSI, desto kürzer ist die Distanz.
Ein Knoten kann entweder Crossing
oder Clear
sein. Wenn ein Knoten Clear
ist, geht der Timer davon aus, dass sich keine Drohne in der Nähe des Timers befindet, da der RSSI niedrig ist. Bei Crossing
geht der Timer davon aus, dass eine Drohne am Timer vorbeifliegt, da der RSSI hoch ist. Sobald die Crossing
beendet ist und der RSSI in die Clear
-Zone zurückkehrt, wird ein Rundendurchlauf aufgezeichnet. Wir kalibrieren dies, indem wir RSSI-Schwellenwerte Enter
und Exit
festlegen.
Ein gut kalibrierter Timer zeigt die Rundenzeit an, wenn wir nur eine Überfahrt haben und die Drohne dem Timer am nächsten ist, z. B.:
Crossing
werden immer in Dunkelgrün markiert, während Clear
in Blau angezeigt werden.
Um gute Anfangswerte für Enter
und Exit
-RSSI zu erhalten, führen Sie die folgenden Schritte aus:
Schalten Sie den Timer und Ihre Drohne ein, stellen Sie sie auf die gewünschte VTx-Leistung ein und warten Sie 30 Sekunden, bis der VTx seine Betriebstemperatur erreicht hat.
Platzieren Sie die Drohne in einem Abstand von etwas mehr als einem Tor über dem Timer.
Beachten Sie den RSSI, ziehen Sie sicherheitshalber 2-5 Punkte ab – das sollte Ihr Enter RSSI
.
Ziehen Sie weitere 8-10 Punkte ab und legen Sie es als Ihren Exit RSSI
fest.
Klicken Sie auf Save RSSI Thresholds
– andernfalls werden die Änderungen nicht wirksam.
Wenn Sie mit anderen Piloten fliegen, können die RSSI-Werte aufgrund des Rauschens, das von anderen VTxs auf benachbarten Kanälen erzeugt wird, niedriger sein. Eine gute Vorgehensweise besteht darin, beide Schwellenwerte um einige Punkte zu senken, wenn Sie mit anderen Piloten in der Luft fliegen.
Auf dem Rennbildschirm können Sie ein Rennen starten oder stoppen sowie Ihre Rundenzeiten anzeigen und löschen. Sobald Sie auf die Schaltfläche Race
“ klicken, ändert sich der Bildschirm wie folgt:
Funktionen der Tasten:
Start Race
– Klicken Sie darauf, um den Countdown zu starten und dem Timer das Signal zu geben, mit dem Zählen der Runden zu beginnen.
Stop Race
– drücken Sie diese Taste, wenn Sie die Zählung neuer Runden beenden möchten. Die bisher gesammelten Runden werden nicht gelöscht.
Clear Laps
– löscht die Runden auf dem Bildschirm, kann auch während des Rennens durchgeführt werden.
Sobald Sie ein paar Runden gelaufen sind, werden auf dem Bildschirm Rundenzeiten angezeigt:
Treten Sie unserem Discord-Kanal bei, um Unterstützung und Fragen zu erhalten oder einfach nur abzuhängen! Jeder ist willkommen!