^

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


 

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

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.

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:
  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 (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

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

Zur Startseite

 

Haftungsausschluss    Datenschutzerklärung    Impressum

© Frank Steinberg