GTF - GPS Telemetry Feeder, ein Protokollwandler von GPS nach S.Port oder iBus

 ^ 

GPS Daten für FrSky oder FlySky Telemetrie Empfänger !    >aktualisiert 15.03.26<

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 ...

RaTelemetrie-Screenusgekommen 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.

Der besondere Vorteil von GTF liegt in der Geschwindigkeitsmessung. Es wird nicht die Geschwindigkeit über Grund gemessen, sondern die 3D-Geschwindigkeit. Zusätzlich zu den alle 0,25 Sekunden ermitteltem Wert, wird alle 3 Sekunden ein um Extremwerte bereinigter Mittelwert gebildet und übertragen. Wer es mit GTF versuchen möchte, findet nachfolgend alles zum Bau und zur Inbetriebnahme.

Wer ähnliches mit weniger Bastelaufwand und ohne spezielle Programmiergeräte bauen möchte, dem sei openXsensor_on_RP2040 (wird leider nicht mehr weiterentwickelt) oder MSRC-Multi Sensor Telemetry for RC (RP2040) empfohlen. Beide Programme können diverse Sensoren (u.A. GPS) auslesen und in verschiedenen Telemetrieformaten ausgeben. Den verwendeten RP2040 gibt es sehr günstig auf fertigen Platinen zu kaufen. Die Firmware wird einfach auf ein virtuelles Laufwerk kopiert. Unbedingt ansehen.

Aber zurück zum GTF. Folgende Empfänger können mit dem GTF betrieben werden:
  1. FrSky Telemetrie-Empfänger mit S.Port
  2. 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.
GTF an IA6B




Das passende GPS-Modul

GTF kann mit GPS-Modulen kommunizieren, die mit den uBlox kompatiblen Chipsätzen arbeiten. Die Chipsätze heißen MT7030 (Generation 7, veraltet) oder MT8030 (Generation 8, wird gerade von Generation 10 abgelöst). Sehr verbreitet sind Beitian Module. Solche, die mit BN beginnen zeigen Generation 8 an; z.B. 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, sind aber inzwischen kaum noch erhältlich. Die Module der uBlox Generation 10 heißen bei Beitian BS-.... Es gibt sie aber auch unter den verschiedensten Bezeichnungen von anderen Verteibern.

Generation 10 - Module sind meines Wissens alle mit Flash-Speicher ausgestattet. Das erfordert, die passende Konfiguration per "u-center" auf das Modul  zu speichern. Hinweise dazu finden wir in einer Textdatei im Download (siehe unten) oder hier. U-center ist ein von uBlox kostenlos bereitgestelltes Programm. Module ohne Flash-Speicher werden von GTF bei jedem Start passend konfiguriert.
 

Hardware bauen

Möglichkeit 1: AtTiny85 auf Lochrasterplatine

GTF-Lochraster-Platine GTF Bestückungsseite

Lochraster-Oberseite ohne GPS




Lochraster-Oberseite mit GPS


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.

GTF-AdapterAdapter mit Heißkleber eingeklebt.    GTF im Modell
                      installiert

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.
 GTF-ProMini


Die Status LED

... kann mehrere Betriebszustände anzeigen:
  • Programmstart: 3x blinken im 1-Sekunden-Takt.
  • Datenverkehr (Normalbetrieb): Schnelles Blinken (4x pro Sekunde).
  • Warten auf Daten vom GPS-Modul: LED aus.
  • Warten auf Daten vom Receiver: LED Dauerlicht.

Download

GPS-Telemetry-Feeder Firmware  -  enthalten sind vorkompilierte Binaries und die Quelltexte.

Version 2025 (hochgeladen 15.03.2026):
  • Interrupt getriggerter Empfang der GPS-Daten.
  • TimeOut-Erkennung der GPS-Datenübertragung.
  • Die AtTiny Versionen von BTF nutzen den internen Oszillator. Der ist meistens, aber nicht immer genau genug für die serielle Kommunikation über den Software-UART. Deshalb wird bei diesen Versionen der Oszillator bei permanent kalibriert. Referenz ist die Dauer eines GPS-Datenrahmens.
  • Höhe wird mit Null angezeigt bei negativen Werten.

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 März 2026


Zur Startseite

 

Haftungsausschluss    Datenschutzerklärung    Impressum

© Frank Steinberg