Turnigy 9XR mit OpenTX und XJT Telemetrie

Status
Nicht offen für weitere Antworten.
#1
Hallo,
ich habe eine Turnigy 9XR mit einem Mega128 und OpenTX geflasht.
Leider bekomme ich keine Telemetrie zum laufen.

Wenn ich mich mit dem RX signal am XJT Modul verbinde bekomme ich nur die Empfangsstärke des Senders angezeigt, alle anderen Daten sind 0. Wenn ich an den SPort geht kommt gar nichts mehr an.
Gibt es eventuell eine Firmware für die Turnigy 9XR die den Sport bei einem FrSky sendermodul unterstützt?

Oder habe ich wo anders noch ein Problem? Die 9XR ist umgebaut und der Signalpegel wird invertiert. (geht ja auch wenn man sich mit dem 4-Pin Stecker verbindet, nur nicht mit dem 3-Pin SPort.

Gruß
Sebastian
 

Rangarid

Erfahrener Benutzer
#2
Die OpenTX-Firmware für die Turnigy 9X kann nur das normale Telemetrieprotokoll der D-Serie. Das SPort Protokoll wird bisher nur mit der Taranis unterstützt.
 

Rangarid

Erfahrener Benutzer
#4
Nein. Das XJT gibt außerdem andere Daten raus als die D-Serie. Das Protokoll hat sich geändert. Mit etwas Aufwand könnte man aber das SPort Protokoll für die 9X aktivieren, ist ja schon alles drin und müsste nur irgendwo im Quellcode von dem normalen FrSky Protokoll auf SPort umgestellt werden.
 
#7
Ja, das geht.
Ich Verbinde den S-Port (Telemetrie) und den (S-Port) Für die Kanäle mit dem Teensy Board.
Und Vom Teensy Bord erzeuge ich ein PPM Signal für den APM und lese die Telemetriedaten aus.
Noch läuft das nicht ganz rund (telemetrie), aber wenn es komplett läuft lade ich es mit Software mal hoch damit alle was davon haben.
Im Moment habe ich aber wenig Zeit um an der Baustelle weiter zu machen.

Letztendlich sieht das jetzt so aus:
X8R <- SPort, SBus-> Teensy Board <-Telemetrie, PPM-> APM.

Das Teesy Board hat den vorteil das es sehr genaue Jitterfreie PPM Signale erzeugen kann.
http://www.pjrc.com/teensy/td_libs_PulsePosition.html
 

Rangarid

Erfahrener Benutzer
#9
Du kannst auch mit jedem anderen Arduino Board jitterfreie Signale erzeugen wenn du das ganze Interrupt gesteuert machst.
 
#10
Klar geht das, aber sobald das Board mehr zu tun bekommt gibt es halt einen Jitter.
Zumindest bei den 8-Bit AVRs, da sich die IRQs nicht priorisieren lassen und sich IRQs nicht gegenseitig unterbrechen können.
Ich mach mit dem Teensy Board aber noch einiges mehr und da kommt schon etwas zusammen. Schon allein Telemetriedaten + SPort + SBus + PPM ist schon einiges an Daten dazu kommen noch ein paar andere Dinge.

Der Prozessor lässt sich im Vergleich zu den AVRs halt recht komfortabel programmieren da man kaum auf die Ressourcen achten muss. Das macht die Entwicklung und Tests deutlich entspannter.
 

The-BlackJack

Einer der Ersten
#11
ist das ganze jetzt voll einatztauglich? hbe auch das XJT modul und würde und hätte gerne die telemtrie auf meiner 9XR wäre toll wenn du eine genau anleitung erstellen könnntest wie man das ans laufen bekommt
 
#12
Fertig ist das leider noch nicht, ich habe leider nicht ganz so viel Zeit bzw. muss noch ein paar kleine PCBs machen bis der Copter richtig fliegt.
Wenn das fertig ist stelle ich alles online. Ob das Anfängertauglich ist kann ich aber nicht sagen. Ich optimiere mir das auf meine Bedürfnisse hin.
 
#13
Es gibt gute Neuigkeiten!
Mein Code läuft stabil und sehr schnell.
Es ist das auslesen der MavLink Schnittstelle implementiert und das Pushen auf den Smart Port der FrySky Telemetrie.
Ausserdem wird der S-BUS mit den Servosignal (16-Kanal) ausgelsen und zu einem PPM Signal konvertiert.

Ich habe den Kompletten Code für die Anbindung an die FrSky Telemetrie überarbeitet und so umgebaut das man sehr leicht neue Werte hinzufügen (neue Data Ids) oder nicht benötigte Werte entfernen kann.
SO kann man leicht eigene werte auf dem Display der Fernbedienung anzeigen.
Der Code läuft jetzt Ohne blockierende *.flush() funktionen oder delays. Damit erreiche ich eine Main Loop Geschwindigkeit von besser als 2ms.

Der Code ist hier zu finden:
https://github.com/sebastian-dev/MavLinkToFrSky
 
Erhaltene "Gefällt mir": Puppo
#15
Hier mal das Schema mit dem die Platine eingebunden werden muss.


Je nach dem wie man das einsetzen will muss man den Code aber individuell anpassen. Gerade in Bezug auf die übermittelten Daten.
Ich habe das jetzt für eine Turnigy X9R mir EX9R Firmware optimiert. Für eine Tanaris muss man sicher andere Data IDs übertragen.
 
Zuletzt bearbeitet:

savage2k

Neuer Benutzer
#17
Hallo alle miteinander,

ich bin auch gerade dabei meine 9xr mit xjt Modul für telemetry umzubauen. Aber ich komme überhaupt nicht weiter. Der djt mod ist mir relativ klar, aber beim xjt Modul bin ich verwirrt.
Ich denke ich muss die beiden Schalter auf Pin 41 und 42 legen um die Pins frei zugekommen für den telemetry Eingang.
Aber wie verfahre ich dann weiter. Es wird oft von einem inverter gesprochen , wie ist dieser aufzubauen und anzuschließen?
Wie ihr merkt wäre eine kleine Anleitung sehr sehr hilfreich. Ich hoffe ihr könnt mir weiterhelfen und bedanke mich im voraus.

Viele grüße,

savage2k
 

careyer

DröhnOpaRähta
#18
Hi Sebastian,

vielen Dank für die tolle Arbeit. Hatte dir bereits via PN vorgeschlagen die Seriellen Schnittstellen 2 und 3 noch zu tauschen. Das macht das Ganze dann "pinkompatibel" mit dem Ursprungs-Code.

Habe gerade versucht das mal selbst zu machen... soweit ich gesehen habe, müsste man nur die Defines and zwei stellen anpassen.

Ich bekomme es aber auf's Verrecken nicht kompiliert - haufenweise diese Fehlermeldung:
Code:
PulsePosition\PulsePosition.cpp.o: In function `PulsePositionOutput::begin(unsigned char)':
C:\Teensyduino 1.19\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\PulsePosition/PulsePosition.cpp:91: multiple definition of `PulsePositionOutput::PulsePositionOutput()'

Könntest Du bitte erklären an welchen Stellen man die Parameter anpassen kann, die man übertragen haben möchte? Das wäre SUPI! =)

Lieben Dank
Thomas
 
Zuletzt bearbeitet:
#19
Code:
C:\Teensyduino 1.19\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\PulsePosition/PulsePosition.cpp:91: multiple definition of `PulsePositionOutput::PulsePositionOutput()'
Das ist ein Konflikt mit den Lib im Arduino Ordner. Ich schaue mal wie ich das fixen kann. Das ganze Arduino zeug ist einfach "broken by design" das hat wenig mit vernünftiger Projektverwaltung zu tun.

Normalerweise sollte das:
Code:
#include "PulsePosition.h"
die Datei aus dem Lokalen Projektorner includen
und das:
Code:
#include <PulsePosition.h>
die Datei aus dem Lib Ordner.
 

careyer

DröhnOpaRähta
#20
Das wäre lieb wenn du mal guckst ob du das irgendwie entschärft bekommst. Wenn ich helfen/testen kann... Sag bescheid :)

LG
Thomas
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten