|
|
|
GPS Daten für FrSky oder
FlySky Telemetrie Empfänger ! >neu
26.01.24<
Ich baue seit einigen Jahren kleine flotte
Elektro-Deltamodelle. Mit den Fliegerkollegen wurde
dann immer diskutiert, wie schnell das Teil
eigentlich fliegt. Die Meinungen gingen da weit
auseinander. GPS Module sind ab ca. 10 € zu
bekommen, da könnte man doch ...
Rausgekommen ist ein
Telemetriewandler, der die Daten eines GPS-Moduls
entgegen nimmt und auf der anderen Seite passende
Daten für einen FrSky S.Port - oder einen
FlySky AFHDS2A iBus Empfänger ausgibt. Mit einem
Sender, der mit OpenTX oder EdgeTx läuft, können wir
die Daten dann anzeigen oder auch ansagen lassen.
Angelehnt an mein Vorgängerprojekt, das Daten der
Antriebe von bürstenlosen Motoren aufbereitet, habe
ich es GPS Telemetry Feeder (GTF) genannt.
Im Bild links ist ein Ausschnitt zu sehen, was nach
einer Sensorsuche in EdgeTx (Version 2.10) angezeigt
wird. Insgesamt sollten acht "Sensoren" gefunden
werden.
Gleich vorne weg möchte ich erwähnen, dass es ein
ähnliches System gibt; oXs_on_RP2040.
Der Vorgänger (OpenXSensor) konnte nur das
S.Port Protokoll von FrSky bedienen. Die Version für
RP2040-Boards kann inzwischen sehr viele
Telemetrie-Protokolle bedienen, auch das von mir
bevorzugte iBus Protololl (FlySky). Da war GTF aber
schon in der Erprobung. oXs_on_RP2040 kann sehr
viele "Geräte" lesen, auch GPS. Es kann eigentlich
alles, was der GTF kann, ist umfangreich zu
konfigurieren und die Firmware kann ohne
Zusatzhardware auf das Board übertragen werden.
Unbedingt ansehen!
Der letzte Vorteil von GTF liegt vermutlich bei der
Geschwindigkeitsmessung. Es wird die
3D-Geschwindigkeit verwendet und alle 3 Sekunden ein
um Extremwerte bereinigter Mittelwert gebildet und
übertragen (zusätzlich zu aktuellen
Geschwindigkeit). Wer es mit GTF versuchen möchte,
findet nachfolgend alles zum Bau und zur
Inbetriebnahme.
Folgende Empfänger können mit dem GTF betrieben
werden:
- FrSky Telemetrie-Empfänger mit S.Port
- FlySky iBus AFHDS2 Telemetrie-Empfänger
Die Arbeit erledigt ein Mikrocontroller, der mit
der GTF-Firmware geladen werden muss. Der gesamte
Hardware-Aufwand beschränkt sich im Minimalfall
auf zwei Bauteile, dem Mikrocontroller und einen
Kondensator. Die Firmware ist lauffähig auf:
- AtTiny85 oder Digispark-Board
- Arduino auf Basis des AtMega168p (Nano, Mini
Pro) - Typ 5V 16 MHz
- Arduino auf Basis des AtMega328p (Uno, Nano,
Pro Mini) - Typ 5V 16MHz
- Arduino kompatibles Board auf Basis eines
LGT8F328P - Typ 5V oder 3,3V
Obwohl der Schwerpunkt von GTF in der
Geschwindigkeitsmessung liegt, werden alle
relevanten GPS-Daten übertragen, einschließlich der
Position.
|
|
Das passende GPS-Modul
GTF kann mit GPS-Modulen kommunizieren, die mit den
uBlox kompatiblen Chipsätzen arbeiten. Die Chipsätze
heißen MT7030 (veraltet) oder MT8030 und sind z.B.
in den Beitian Modulen verbaut, die mit BN beginnen.
BN-180 oder BN-220 sind gut geeignet, wobei
das BN-180 mit 18mm Kantenlänge die perfekte Größe
für die unten beschrieben Lochraster-Platine für den
AtTiny85 hat. Ich selber habe einige Module namens G18U8TTL.
Die haben ebenfalls 18mm Kantenlänge und sind mit
etwas Recherche bei AliExpress noch günstiger zu
haben.
Nicht erforderlich ist ein Flash-Speicher auf dem
Modul. Auf dem Flash könnte die Konfiguration
abgespeichert werden. GTF sendet bei jedem
Start Konfigurationsdaten an das Modul, so
dass der Flash nicht erforderlich ist.
|
Hardware bauen
Möglichkeit 1: AtTiny85 auf
Lochrasterplatine
|
Im Bild rechts unten ist auf die
Lötseite ein G18U8TTL Modul mit doppelseitigen
Klebeband aufgeklebt. Alle Steckverbinder
(ISP-Adapter und Anschlussstifte) sind
Präzisions-Sockelleisten (so heißen die bei
Reichelt). Die werden sowohl als Buchsen als auch
als Stecker verwendet. Der AtTiny kann im
eingebauten Zustand über die ISP-Anschlüsse geflasht
werden.
Im Modell ist ein Adapter eingeklebt. So lässt sich
ein Modul schnell zwischen mehreren Modellen
wechseln. Das ist vorteilhaft, weil der
Satelliten-Fix viel schneller geht, wenn das Modul
bereits einen Fix hatte. Auf dem Weg zum Fluggelände
kann das Modul mit einer 5V-Stromquelle verbunden
werden und ist bei Ankunft sofort einsatzbereit.
Dazu nehme ich eine Powerbank.
Adapter mit
Heißkleber eingeklebt.
GTF im Modell.
|
Möglichkeit 2: Arduinos auf
Basis des AtMega328p, AtMega168p oder auch des
LGT8F328P sind auch geeignet. Beim LGT8F328P dürfen
die Widerstände nicht größer als 2 kOhm sein.
|
Die Status LED
... kann mehrere Betriebszustände anzeigen:
- Programmstart: 6x blinken
- Datenverkehr (Normalbetrieb): Schnelles
Blinken (4x pro Sekunde).
- Warten auf Daten vom GPS-Modul: LED
Dauerlicht.
- Warten auf Daten vom Receiver: LED aus.
|
Download
GPS-Telemetry-Feeder
Firmware - enthalten sind
vorkompilierte Binaries und die Quelltexte.
Wenn wir die Quelltexte selbst kompilieren wollen,
finden wir hier die Software dazu (Great Cow Basic):
http://gcbasic.sourceforge.net/Typesetter/index.php/Home
Die Firmware auf den
Controller flashen
AtTiny85
Diese müssen per ISP-Programmer befüllt werden. GTF
erwartet, dass der Tiny mit internerm PLL Oszillator
läuft (16 Mhz). Dazu muss die Low Fuse auf 0xF1
gesetzt werden.
Ich empfehle dazu AvrDudess zu verwenden. Das
ist eine grafische Oberfläche für Avrdude (der im
Download enthalten ist).
Arduino (AtMega168p, AtMega328p, LGT8F328P)
Obwohl GTF nicht mittels Arduino geschrieben wurde,
lässt sich die Firmware problemlos mit dem Arduino
Bootloader laden. Auch hier empfehle dafür AvrDudess. Als Programmer
wählen wir logischerweise Arduino aus. Da der
Bootloader verwendet wird, haben wir nichts mit dem
Setzen von Fuses zu tun.
Der Arduino muss folgende Voraussetzungen erfüllen:
5V Typ, 16 MHz, mit AtMega168p oder AtMega328p.
Es funktioniert auch ein Board mit einem LGT8F328P.
Die Anschlüsse sind kompatibel zu den Arduinos mit
einem AtMega. Achtung: Der Bootloader erwartet eine
Baudrate von 57.600 und die Widerstände
dürfen maximal 2kOhm haben!
|
Telemetrie im Sender
einrichten
Das folgend beschriebene gilt für die Anzeige der
Daten auf einem Sender mit OpenTX oder EdgeTx. Alle
Sensoren sollten im OpenTX/EdgeTx Telemetriemenü
nach Aufruf der Sensorsuche angezeigt werden. Dort
wo es passende Sensoren gibt, versucht BHF diesen zu
emulieren. Wo nicht, werden die Rohdaten übertragen
und können wie unten beschrieben passend
konfiguriert werden..
FrSky S.Port Telemetrie
Hier hat sich gegenüber der BTF-Vorgängerversion
viel geändert. Seitdem einige BlHeli32 ESCs selber
S.Port sprechen, gibt es auch in OpenTX/EdgeTX
angepasste Sensoren, die zwei Werte in einem
Datenrahmen (bei S.Port immer 32 Bit) übertragen
können. Das halbiert den Datentransfer nahezu.
- Sensorname GPS = GPS Positionsdaten
- Sensorname ASpd = Aktuelle Geschwindigkeit
[km/h] - kts ggf. in km/h ändern
- Sensorname ASpd = 3-Sekunden
Mittelwert-Geschwindigkeit [km/h] - kts ggf. in
km/h ändern
- Sensorname Hdg = Richtung (Heading) [Grad],
0°=Nord, 90°=Ost, 180°=Süd, 270°=West
- Sensorname GAlt = Höhe über NN [m]
Für die folgenden Sensoren ist ein
"Sammelsensor" für Servodaten missbraucht. Vorteil
ist, dass 4 Werte in einem Datenrahmen übertragen
werden. Die voreingestellten Sensornamen und
Einheiten können in OpenTX/EdgeTx geändert werden.
- Sensorname SrvA = Genauigkeit der
Geschwindigkeitsmessung [m/s]
Die voreingestellte Einheit [A] kann gelöscht
werden.
- Sensorname SrvV = Anzahl der Prüfsummenfehler
bei der Datenübertragung ESC -> BTF
Bitte das Komma wegdenken; 0.7 bedeuten 7
Fehler. Die voreingestellte Einheit [V] kann
gelöscht werden.
- Sensorname SrvT = Einer-/Zehnerstellen =
Anzahl Satelliten, Hundert = 3-Sekunden
"Heartbeat" Indikator, dass 3-Sek.
Geschwindigkeit aktualisiert ist.
Ich nutze den 100-Heartbeat um mir alle 3
Sekunden die aktuelle Geschwindigkeit ansagen zu
lassen.
Die voreingestellte Einheit [°C] kann gelöscht
werden.
- Sensorname SrvS = Sat-Fix Typ. STALL = Kein
Fix, OK = 3D-Fix
FlySky iBus Telemetrie
- Sensorname GPS = GPS Positionsdaten
- Sensorname ASpd = Aktuelle Geschwindigkeit
[km/h]
- Sensorname ASpd = 3-Sekunden
Mittelwert-Geschwindigkeit [km/h]
- Sensorname Hdg = Richtung (Heading) [Grad],
0°=Nord, 90°=Ost, 180°=Süd, 270°=West
- Sensorname Dist = Höhe über NN [m]
- Sensorname AccY = Genauigkeit der
Geschwindigkeitsmessung [m/s]
- Sensorname Arm = Einer-/Zehnerstellen = Anzahl
Satelliten, Tausenderstellen = Fix-Typ,
Zehntausend = 3-Sekunden "Heartbeat" Indikator,
dass 3-Sek. Geschwindigkeit aktualisiert ist.
Beispiel: 0 = Kein Sat-Fix, 3012 = 3D-Fix mit 12
Satelliten, 13007 = 3D-Fix mit 7 Satelliten,
3-Sek-Geschwindigkeit aktualisiert
Ich nutze den 10000-Heartbeat um mir alle 3
Sekunden die aktuelle Geschwindigkeit ansagen zu
lassen.
- Sensorname FM = Version & Anzahl Fehler
Nach dem Start wird kurz die Version angezeigt;
24001 = Jahr 2024, Version 001
Danach gilt:
Tausenderstellen = Anzahl der Reconnects
zwischen BTF und iBus Receiver
Einerstellen = Anzahl der Prüfsummenfehler bei
der Datenübertragung ESC -> BTF
Beispiel: 12034 = 12 iBus Reconnects, 34 BLHeli
Prüfsummenfehler
Frank Steinberg, im Januar 2024
|
|