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.
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.
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.
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.
Hi Phil,
super Anleitung hat auf Anhieb einwandfrei funktioniert und hat mir einiges an Zeit erspart.
Grüße
Torsan
hallo,
wenn ich bei meinem F4 board nach ressources schaue, finde ich keine weiterhin Serial_Tx „ressourcen“. Also nicht wie hier : SERIAL_TX 12 sowie SERIAL_RX 12. Muss das explizit ein Hersteller hinzufügen oder muss sowas immer auf dem Board zur Verfügung stehen und ich habe nur falsch gesucht? Ich schau nochmal nach… Weitere Frage. Weiße ich einem PIN nur den Serial TX zu oder muss ich das gleiche noch mit RX machen? Habe ein paar Forumsbeiträge gelesen, da machen die Leute die Zuweisung für RX und TX. Besten Dank mal
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
Es tut mir leid, das sagen zu müssen, aber die Rechtschreibung in diesem Beitrag ist ein Graus!
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?
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
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?
Das würde mich auch interessieren da ich gern einen R9Slim+ so anschließen würde.
Bist du sicher, dass es nicht geht?
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+,
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?
Hey Markus,
welche FC hast du denn verwendet? Hast du eine neue Sensoren-Suche gestartet in der Taranis?
Gruß,
Phil
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?
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
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.
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?
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…
Hey Michael,
an UART 2 zum Beispiel: https://blog.seidel-philipp.de/sp-racing-f3-flight-controller-pinlayout-und-anschlussplan/
Gruß,
Phil