Betaflight Soft Serial – FrSKY SmartPort Telemetrie invertieren ohne löten

Dieser Artikel wurde von meinem Gast-Autor Martin FPV geschrieben. Inhaltliche Anpassungen durch mich haben wir zusammen erarbeitet! Vielen Dank Martin für diesen Artikel und deine Zeit die du investiert hast!

Inhaltsverzeichnis

Software Serial (Soft Serial)

Heutzutage gibt es sehr viel Hardware die über einen seriellen UART Port Anschluss an die Flugsteuerung sucht. Ein Komfort bewusster Pilot möchte natürlich auf nichts verzichten. Das ist unter anderem Smart Audio, ESC Telemetrie, SBUS, oder Smart Port Telemetrie. Das Problem der heutigen Flugsteuerungen sind zu wenige Ports für zu viel Hardware die angeschlossen werden möchte und zusätzlich das Invertierungsdrama von UART Signalen wie FrSKY SmartPort. Abhilfe ist erst mit den F7 Prozessoren in Sicht, mit nämlich bis zu 8 UART Ports. Die gängigen F3 und F4 Flightcontroller haben aber meist nur 3 UART Ports.
Erschwerend kommt hinzu das manche Ports nur für bestimmte Anwendungen ausgelegt sind. Eine Lösung die 2 Fliegen mit einer Klappe schlägt heißt Software Serial.

Software Serial, was ist das?

Software Serial ist, wie der Name schon sagt, die Möglichkeit durch Software emulierte UART Ports zusätzlich zu den Hardware UART Ports bereitzusellen. Sie können die selben Aufgaben wie Hardware UART‘s übernehmen jedoch mit Einschränkungen in der Bandbreite. Software Serial eignet sich daher optimal für SmartAudio und SmartPort Telemetrie.

Beispiel eines Softserial Ports im Betaflight Configurator

Bandbreite

Dadurch, dass der UART Port emuliert wird, steigt die CPU Last. Ein OSD mit einer hohen Baudrate von meistens 115200 wird nicht empfohlen, da die Geschwindigkeit nicht ausreicht und die Latenz zu hoch wäre. Nicht so Latenz kritische Daten wie sie von SmartPort, SmartAudio oder der ESC Telemetrie bereit gestellt werden haben meist nur eine Baudrate von 9600 und eignen sich somit perfekt zum Anschluss an Software Serial.

Signal Invertierung

Der große Vorteil an Softserial ist die Möglichkeit das Signal per Software umzukehren (invertieren). Gerade für SmartPort ist das eine riesen Erleichterung, da man nun nicht mehr auf dem Empfänger an dem Inverter das Signal abgreifen muss.

Was ist eine Resource

Während das eigentliche Computerprogramm in einer Programmiersprache geschrieben ist, sind Ressourcen meist einfache Textdateien oder Tabellen. Der Vorteil ist dabei, dass sie auch von Menschen ohne Programmierkenntnisse erweitert oder verändert werden können. In unserm Bereich Flugsteuerungen ist eine „Resource“ eine Zuweisung, welcher per Software (in unserem Fall das CLI) festlegt wird. Diese Zuweisung bestimmt welche Daten zu dem Hardware Pin/Lötpad geleitet werden.

Resource Remapping Befehl

Die meisten werden sich jetzt bestimmt fragen wo finde ich den jetzt diese Software Serial Ports?
Glücklich kann sich der schätzen, der einen SP Racing F3 Acro / Deluxe Flightcontroller besitzt. Hier hat der Hersteller nämlich schon von den möglichen 2 Software Serial Ports auch beide implementiert.
Wenn er das nicht gemacht hat, kann man sich die „Ressourcen“ so verteilen wie man Sie braucht. Theoretisch zumindest. Seit Betaflight 3.1 ist das über die CLI möglich.

Wir verwenden dazu den folgenden Befehl: https://github.com/betaflight/betaflight/wiki/Betaflight-resource-remapping

Dabei sind doch ein paar Dinge zu beachten:
Nicht alle Ressourcen können für alle Zwecke eingesetzt werden. Eine Hilfe dazu findet man hier wenn das eigene Bord nicht aufgeführt ist hilft leider nur probieren. Viele der Flugsteuerungen sind aber ähnlich aufgebaut so das man sich die Ressourcen auch vielfach ableiten kann.

Single Wire Software Serial

Eine Ressource die eigentlich immer verwendet werden kann ist die von den programmierbaren LEDs. Wenn man nur einen TX Anschluss braucht reicht es meist nur eine Resource zu programmieren. Wenn man aber den RX Anschluss braucht, z.B. Für ESC Telemetrie, muss man dem TX Anschluss vorher auch zuweisen. Sonst wird der Software Serial UART nicht im Betaflight Configurator angezeigt.

Was ist Telemetrie und wofür brauche ich sie?

Telemetrie sind Sensordaten, die von der Flugsteuerung zur Verfügung gestellt werden. Dies können Warnungen oder Infos (Spannung, Stromverbauch, GPS Position usw) sein. Per Telemetrie kann man auch Konfigurationsbefehle versenden um zum Beispiel einen Videosender einzustellen oder PIDs anzupassen. Eine Anleitung wie man zum Beispiel mit einer KISS FC den Videosender steuern kannst, findest du hier.

Mehr Infos zu Telemetrie
Die Telemetrie Schnittstellen für Telemetriedaten sind z.B. Smart Port von FrSky, CSFR Protokoll von TBS.
Daten der Flugsteuerung kommt z.B. über die:

  • ESC Telemetrie mit KISS oder BlHeli32 Software (hier werden Daten wie Spannung, Strom, Temperatur und Motorumdrehungen geliefert)
  • Smart Audio liefert FPV- Kanal, Frequenz, Band und Sendeleistung
  • GPS Koordinaten mit Höhe und Zeit

 

Sehr umfangreiche CRSF Telemtrie

Anwendungen

Möglichkeiten des Betaflight OSD

Möglichkeiten des Betaflight OSD

Diese können auch grafisch z.B. auf einem OSD ausgegeben werden.

Auch über das OSD können, wenn der Copter disarmt ist, über den Einsteig Gas mitte, Yaw links und Pitch oben, viele Einstellungen angepasst werden.

Oder über das Steuersignal zur Fernbedienung übermittelt werden. Um sie auch dort mit Hilfe des LUA Scripts grafisch anzeigen zu lassen. Gleichzeitig ist auch eine Veränderung der Parameter im Flightcontroller möglich z. B. Für PIDs, FPV Kanal und Band. So das vielfach auf den Anschluss von einem PC verzichtet werden kann.

 

Möglichkeiten LUA Script

Möglichkeiten LUA Script

Hierfür brauchte man sonst einen Computer

Hierfür brauchte man sonst einen Computer

Hierfür brauchte man sonst einen Computer

Hierfür brauchte man sonst einen Computer

Alles auf einen Blick

Alles auf einen Blick

Alles auf einen Blick

Alles auf einen Blick

Maximaler Komfort mit Smart Audio

Maximaler Komfort mit Smart Audio

 

Soft Serial Port konfigurieren

Nachfolgend wird erklärt wie man einen Soft Serial Port erstellt. Bitte beachte, dass du mindestens Betaflight 3.1 benötigst

Soft Serial Feature aktivieren

Um Softserial verwenden zu können musst du zuallererst das Feature dazu aktivieren.

Im Tab „Configuration“ unter „Other Features“ muss „Softerial“ aktiviert werden. Danach „Save and Reboot“ nicht vergessen.

 

Aktuelle Konfiguration auslesen

Als nächstes müssen wir die aktuelle Konfiguration/Belegung herausfinden. Dazu gehen wir die CLI und senden den Befehl „dump all“ mit der Enter Taste ab.

Resource freigeben

Damit wird eine Resource verwenden können müssen wir diese unter Umständen zuerst freigeben, bzw. von seiner eigentlichen Bestimmung „befreien“. In diesem Beispiel verwenden wir den LED Pin.
Wir suchen nun in dem Dump die Passage „#resources„. Wir merken uns den zugewiesenen Wert der Resource „resource LED_Strip 1„.

In unserem Fall „A01„. (Am besten notierst du dir diesen Wert in einer Text-Datei)

Jetzt müssen wir die Resource freigeben. Das machen wir indem wir den Wert mit „none“ ersetzen.
Der Befehl dazu lautet:

resource LED_Strip 1 none

Wir bestätigen mit der Enter Taste.

Als Rückmeldung bekommen wir nun eine Bestätigung („Resource is freed„), dass diese Resource freigegeben ist.

Soft Serial eine Resource zuweisen

Als nächstes weisen wir der freien Resource einen Softserial Port zu. In unserem Fall werden wir Soft Serial 1 verwenden.

Dazu scrollen wir wieder hoch zu wieder hoch „#resources„.
Nicht wundern, die Änderungen werden erst nach dem abspeichern mit „save“ übernommen.

Die beiden Softserial Resources heißen wie folgt:

Soft Serial 1: SERIAL_TX 11 sowie SERIAL_RX 11
Soft Serial 2:  SERIAL_TX 12 sowie SERIAL_RX 12

Wir weisen nun zuerst dem TX  Pin eine Ressource zu. Dafür verwenden wir die eben freigegebene LED_STRIP 1 Resource A01.

resource SERIAL_TX 11 A01

Wir bestätigen diesen Befehl mit der Enter Taste.

Als Bestätigung erhalten wir folgende Meldung: „Resource is set to A01

Zuweisung speichern & reboot

Nun dürfen wir nicht vergessen die neue Konfiguration zu speichern. Dazu senden wir den Befehl „save“ mit der Enter Taste ab.
Damit der neue Soft Serial Port angezeigt wird, führt die Flugsteuerung selbstständig einen Reboot durch.

 

FrSKY SmartPort Telemetrie verwenden

Ein sehr guter Einsatz von Soft Serial ist die Verwendung für die FrSKY SmartPort Telemetrie.

Bisher musste das uninvertierte SmartPort Signal, für welches unter Umständen für F4 Flugsteuerungen benötigt wird, an einem kleinen SMD Bauteil (dem Inverter) abgegriffen werden, um den Empfänger überhaupt verwenden zu können. Beim R-XSR wurde das Problem erkannt und ein einigermaßen zufriedenstellende Lösung gefunden. Es gibt winzige kleine Löt-Pads an denen man beide Signale (SmartPort / SBUS) abgreifen kann. Das hat aber dennoch den Nachteil, dass man den originalen Stecker nicht mehr verwenden kann und eventuell durch das Löten an den kleinen Pads sogar den Empfänger beschädigen könnte.

Heutzutage, ist diese Modifikation nicht mehr notwendig, da wir per Soft Serial das Signal so abgreifen wie es von FrSKY geliefert wird und es per Software invertieren.

Nach dem Neustart sieht der Tab Ports im Betaflight Configurator wie folgt aus. Dort können wir jetzt wie gewohnt die SmartPort Telemetrie (TX) konfigurieren. Und nicht vergessen das Telemetrie Kabel vom Empfänger am dem LED Lötpad von der Flugsteuerung anzulöten.

Als Standard (FrSKY) sollte die Signal Invertierung eingeschaltet sein. Wenn Probleme auftauchen sollten kann man das unter #master kontrollieren und gegebenenfalls ändern. Einfach den Befehl

set tlm_inverted = off

in der Befehlszeile eingeben und bestätigen. Die Bestätigung der Änderung erfolgt sofort. Danach noch mit „save“ abspeichern, damit der Befehl auch dauerhaft wirksam ist.

Fertig, du kannst nun ohne Hardwareanpassung dein SmartPort Signal von FrSky verwenden.

ESC Telemetrie (RX) über Soft Serial verwenden

Wenn man die ESC Telemetrie (RX) nutzen möchte sind noch ein paar weitere Schritte erforderlich.
Da man für die ESC Telemetrie einen RX Pin benötigt müssen wir auf der TX Ressource einen Platzhalter Programmieren sonst wird uns der Soft Serial Port im Betaflight Configurator nicht angezeigt.
Dafür eignet sich z.B. die bei SBUS nicht verwendete Ressource „PPM 1“ oder wenn das nicht möglich ist die für einen Quadrocopter nicht benötigten Motorausgang „resource Motor 5“ In diesem Fall „A00„.

Wie im vorangegangenen Beispiel erst die benötigten Ressourcen mit dem Befehl „none“ freigeben und dann die freigegebenen Ressource Adressen mit den gewünschten Ports zuweisen und mit „save“ speichern. Das Ergebnis sollte dann so aussehen.

Das Kabel von der ESC Telemetrie wird dann wieder an das LED Lötpad vom Flightcontroller angelötet. Nicht vergessen im Tab „Configuration“ unter „Other Features“ den ESC Sensor zu aktivieren.

Wenn dir dieser Artikel gefallen hat und du mich unterstützen möchtest, findest du hier ein paar Möglichkeiten. DANKE!
If you liked this article and would like to support me, here are a few options. THANK YOU!

19 Responses

  1. Phil sagt:

    Hallo Namensbruder und Mitleser
    Meine bisher leider noch ungetestete Idee, soll FPort(Steuerung und Telemetrie über einen Draht) an einem F4 FC mit dem original invertierten Signal ermöglichen. Also z.Bsp. R9Mini oder Slim+ Empfänger. Da sicher viele Leute vor diesem Problem stehen, schreibe ich hier mal öffentlich.
    Die meisten FCs haben ja einen invertierten RX für FrSky Empfänger, gerne mit iRX1 oder SBUS bezeichnet. FPort muss ja ein TX Pad.
    Wäre es denn möglich, einfach die Resourcen von RX und TX zu tauschen um somit einen invertierten TX Anschluss zu bekommen?
    Wenn die Invertierung des SBUS Pads hardware-mäßig implementiert, sollte das doch gehen.

  2. Torsan sagt:

    Hi Phil,
    super Anleitung hat auf Anhieb einwandfrei funktioniert und hat mir einiges an Zeit erspart.
    Grüße
    Torsan

  3. Det sagt:

    Hallo Phil,

    sorry bin wohl auch zu blöd. Habe einen F4-G2 “ OMNIBUSF4SD“

    Habe den Flysky X6B iBus Ausgang an Rx Uart3 vom FC angeschlossen und wollte nun über Softserial binden, bekomme ich aber nicht hin nach der Anleitung oben.

    Oder doch einfacher über SBus den Eingang gibt es auch und intervertieren, aber wie ? Derzeit habe ich gar keine Verbindung mit der Fernbedienung zum FC …

    set serialrx_provider = SBUS
    set sbus_inversion = ON > auf Off und beim SBus anlöten ?

    Weiter habe ich versucht das“Altimeter“ mit dem FC zu verbinden der SCL ist an Uart Rx6 und der SCL ist am Uart Tx6 angelötet.. Wie binde ich den an ?

    Anbei die Resourcen die frei sind hatte es mit dem LED Strip versucht , leider kein Erfolg, da ich nicht wüsste welchen Rx/Tx ich freigeben kann.

    Anbei die Resoucen

    resource BEEPER 1 B04
    resource MOTOR 1 B00
    resource MOTOR 2 B01
    resource MOTOR 3 A03
    resource MOTOR 4 A02
    resource MOTOR 5 A01
    resource MOTOR 6 A08
    resource MOTOR 7 NONE
    resource MOTOR 8 NONE
    resource SERVO 1 NONE
    resource SERVO 2 NONE
    resource SERVO 3 NONE
    resource SERVO 4 NONE
    resource SERVO 5 NONE
    resource SERVO 6 NONE
    resource SERVO 7 NONE
    resource SERVO 8 NONE
    resource PPM 1 B08
    resource PWM 1 B08
    resource PWM 2 B09
    resource PWM 3 C06
    resource PWM 4 C07
    resource PWM 5 C08
    resource PWM 6 C09
    resource PWM 7 NONE
    resource PWM 8 NONE
    resource SONAR_TRIGGER 1 NONE
    resource SONAR_ECHO 1 NONE
    resource LED_STRIP 1 B06
    resource SERIAL_TX 1 A09
    resource SERIAL_TX 2 NONE
    resource SERIAL_TX 3 B10
    resource SERIAL_TX 4 NONE
    resource SERIAL_TX 5 NONE
    resource SERIAL_TX 6 C06
    resource SERIAL_TX 7 NONE
    resource SERIAL_TX 8 NONE
    resource SERIAL_TX 9 NONE
    resource SERIAL_TX 10 NONE
    resource SERIAL_TX 11 NONE
    resource SERIAL_TX 12 NONE
    resource SERIAL_RX 1 A10
    resource SERIAL_RX 2 NONE
    resource SERIAL_RX 3 B11
    resource SERIAL_RX 4 NONE
    resource SERIAL_RX 5 NONE
    resource SERIAL_RX 6 C07
    resource SERIAL_RX 7 NONE
    resource SERIAL_RX 8 NONE
    resource SERIAL_RX 9 NONE
    resource SERIAL_RX 10 NONE
    resource SERIAL_RX 11 NONE
    resource SERIAL_RX 12 NONE
    resource INVERTER 1 NONE
    resource INVERTER 2 NONE
    resource INVERTER 3 C09
    resource INVERTER 4 NONE
    resource INVERTER 5 NONE
    resource INVERTER 6 C08
    resource INVERTER 7 NONE
    resource INVERTER 8 NONE
    resource INVERTER 9 NONE
    resource INVERTER 10 NONE
    resource INVERTER 11 NONE
    resource INVERTER 12 NONE
    resource I2C_SCL 1 NONE
    resource I2C_SCL 2 NONE
    resource I2C_SCL 3 NONE
    resource I2C_SDA 1 NONE
    resource I2C_SDA 2 NONE
    resource I2C_SDA 3 NONE
    resource LED 1 B05
    resource LED 2 NONE
    resource LED 3 NONE
    resource RX_BIND 1 NONE
    resource RX_BIND_PLUG 1 NONE
    resource TRANSPONDER 1 NONE
    resource SPI_SCK 1 A05
    resource SPI_SCK 2 B13
    resource SPI_SCK 3 C10
    resource SPI_MISO 1 A06
    resource SPI_MISO 2 B14
    resource SPI_MISO 3 C11
    resource SPI_MOSI 1 A07
    resource SPI_MOSI 2 B15
    resource SPI_MOSI 3 C12
    resource ESCSERIAL 1 B08
    resource CAMERA_CONTROL 1 NONE
    resource ADC_BATT 1 C02
    resource ADC_RSSI 1 A00
    resource ADC_CURR 1 C01
    resource ADC_EXT 1 NONE
    resource BARO_CS 1 B03

    Danke im Voraus für alle die hier weiterhelfen.
    Gruß
    Det

  4. Edgar sagt:

    Es tut mir leid, das sagen zu müssen, aber die Rechtschreibung in diesem Beitrag ist ein Graus!

  5. Stephan sagt:

    HI…

    Ich hab hier einen Asgard 32 F7 und bekomme das mit der invertierung einfach nicht hin – zumindest smartport scheint nicht zu klappen. Ich hab meinen FrSky-Receiver an den UART6-TX angelötet. Aber die Telemetrie scheint nicht zu klappen, auch nicht, wenn ich dein Howto hier befolge…

    Hast du noch eine Idee, was ich tun kann?

    • Phil sagt:

      Hey,
      welche Befehle hast du genau verwendet. Schau mal in meinen aktuellen Anschlussplänen von RR FC und Omnibus F4 Nano. Da habe ich die passenden Befehle für SmartPort hineingeschrieben. Du müsstest unter umständen nur deine „Resource“ anpassen wenn die anders ist.
      Denk auch daran, „Telemetry“ zu aktivieren unter „Features“ sowie bei Ports dann „SmartPort“ auf dem Softserial Port.

      Gruß,
      Phil

  6. Apophys sagt:

    Hallo,

    ich habe eine generelle Frage um resourceen. Auf einem F4 ist ja ein sbus Pin, der meist Uart1 (RX) ist und über ein Inverter verfügt. Wieso kann man auf das Pad nicht Uart1 TX resourceen, um dann Fport direkt über S.Port ohne inverterhack zu nutzen?

    • Carsten sagt:

      Das würde mich auch interessieren da ich gern einen R9Slim+ so anschließen würde.
      Bist du sicher, dass es nicht geht?

      • Carsten sagt:

        Also ich habe erreicht was ich wollte aber auf andere Weise.
        Ich wollte erreichen, dass ich eine RSSI Anzeige im OSD bekomme.

        Gelungen ist es beim FRSKy R9 Slim+ letztendlich durch Verwendung der F.Port Firmware.
        Dann habe ich aber eben NICHT das F.Port Protokoll benutz sondern einen invertierten S-Bus Ausgang am RX.
        Über Aux 12 (bzw. 16) kommt dann das RSSI Signal rein und kann ohne Weitere Anpassungen im OSD angezeigt werden.

        Fluggerät ist eine Eachine Wizard X220S mit dem Standard FC (Omnibus F4 SD, Betaflight 3.40), Sender eine Taranis QX7 mit R9M Long Range Modul, Empfänger ein Taranis R9Slim+,

  7. Markus sagt:

    Hallo Phillip

    Hab das Kabel vom r-xsr vom lödpad P an das LED Pin von FC angelötet und deinen Anweisungen von oben gefolgt und eingegeben

    Allerdings bekomme ich keine vfas angezeigt auf der Taranis

    Kannst du helfen?

  8. Patrick sagt:

    Hallo Philipp,
    habe gerade den Artikel gelesen, jetzt ist aber die Frage aufgekommen, Wieso braucht man für ESC Telemetie SoftSerial? Ist das auch ein invertiertes Signal?

    • Phil sagt:

      Hey Patrick,

      mit Softserial kannst du zum Beispiel mehr Geräte anschließen, wenn du zu wenig Ports hast (bei alten FCs). Soweit ich weiß ist ESC Telemetrie aber nicht invertiert!

      Gruß,
      Phil

  9. Oleg sagt:

    Ich habe vergeblich auf so eine Anleitung gesucht und doch uninvertierten S.Port Pad angelötet, es funktioniert, software-technisch wäre aber schöner, jetzt weiß ich ja.
    Sehr hilfreiche Anleitung, Danke Philipp.

  10. Tom sagt:

    Ich bin hier auch etwas am verzweifeln.

    Habe ein Omnibus F4 V3:
    Frsky R-xsr Sbus an UART6, Smartport (Weiss nicht wohin damit),
    denn UART1 ist mit GPS belegt, UART3(SCL/SDA) mit Kompass.

    Mir scheint, dieses Softserial könnte die Lösung sein für den Smartport.. Aber an welchen Pins anschliessen?

    Gibt es da eine Möglichkeit oder muss ich einen andern FC kaufen?

  11. Michael sagt:

    an welchem IO2 pin auf dem SP Racing F3 schließt du denn das SmartPort kabel (kommend von einem XSR) an? habe es mit pin 6 versucht aber irgendwie passiert trotz invertiertem signal leider nichts…

  1. 8. Juni 2018

    […] Nächster Beitrag Betaflight Soft Serial – FrSKY SmartPort Telemetrie invertieren ohne löten […]

  2. 14. Juni 2018

    […] eines Servos. Zum Beispiel für ein Gimbal SOFTSERIAL: Aktiviert CPU emulierte Serial Ports (Tutorial) SONAR : Möchte man ein Sonar zum messen der Flughöhe haben muss diese Option aktiviert werden […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.