3.08.2018

F.Port w odbiornikach FrSky R9Mini i XSR

Jedną z nowości, która pojawiła się wraz z premierą nowego firmware Betaflight 3.3.0 jest nowy protokół opracowany przez autorów Betaflight'a oraz ludzi z FrSky. Może on zastąpić SBUS i S.Port ponieważ jedną linią przesyłane są wszystkie informacje o sterowaniu oraz telemetria. Dzięki czemu zyskujemy jeden dodatkowy kanał UART, który możemy wykorzystać np. do obsługi GPS. Obecnie oprogramowanie wspierające ten protokół jest dostępne tylko dla kilku odbiorników FrSky (m.in. XSR, X4RSB, R9Mini, R9Slim) trzeba sprawdzać stronę producenta czy nie dodał kolejnych odbiorników.

W związku z tym, że posiadam odpowiednie odbiorniki (R9Mini i XSR) to chciałem sprawdzić możliwości nowego protokołu F.Port. W tym celu wgrałem odpowiednią wersję firmware do odbiorników.
Podłączyłem odbiornik R9Mini do kontrolera lotu DYS F4 PRO V2 (Betaflight 3.4.0) oraz ustawiłem odpowiedni port szeregowy i protokół komunikacyjny F.Port w Betaflight. Niestety ten kontroler lotu posiada tylko jeden wbudowany inwerter dla sygnału SBUS (RX1) a według autorów F.Port powinien być podłączony do linii TX.
W związku z tym nie można było podłączyć odbiornika bezpośrednio. W przypadku kontrolera lotu zbudowanego przy użyciu mikrokontrolera F4  potrzebny będzie nam dwukierunkowy inwerter. Niestety kontroler lotu DYS F4 PRO V2 nie posiada takiego. Inną możliwością jest wykorzystanie nieodwróconego sygnału S.Port ale obawiam się, że przy tym rozmiarze odbiornika (R9Mini) będzie ciężko dolutować się do jakiegoś elementu jak miało to miejsce w odbiornikach XSR i X4RSB. Dokładny opis ustawienia parametrów pracy UART'a dla protokołu F.Port przy użyciu różnych typów mikrokontrolerów F3/F4/F7 można znaleźć tutaj.
Niestety ustawienia przedstawione na stronie Betaflight'a nie sprawdzają się w przypadku R9Mini i kontrolera lotu DYS F4 PRO V2. Można ten problem ominąć wykorzystując rozwiązanie programowe i skorzystać z SoftSerial. W tym celu musimy przemapować odpowiednie piny mikrokontrolera. Przechodzimy do CLI:
resource
resource serial_tx 1 none
resource is freed
resource serial_tx 11 A09
save
Przypisaliśmy w ten sposób do wyjścia A09 (TX1) port Soft Serial. W zakładce Configuration musimy włączyć obsługę SoftSerial oraz w zakładce Ports włączyć dla SoftSerial odbiór danych (RX).
Następnie przechodzimy znowu do CLI i sprawdzamy czy mamy tak ustawiony nasz port
serialrx_inverted = ON
serialrx_halfduplex = ON
Po podłączeniu odbiornika do tak przygotowanego portu TX1
udało się uzyskać sterowanie oraz obsługę telemetrii.
W związku z tym, że jest to rozwiązanie programowe, które w jakiś sposób obciąża procesor postanowiłem złożyć dwukierunkowy inwerter. Posłużyłem się rozwiązaniem przedstawionym na tej stronie SmartPort inverter for F4 flight controllers
Niestety to rozwiązanie nie pozwoliło na obsługę F.Port, działało tylko sterowanie przy braku telemetrii. Zdziwiony tą sytuacją wgrałem do odbiornika XSR również firmware, który obsługuje F.Port.

Następnie podłączyłem odbiornik do kontrolera lotu. 
Ustawiłem serialrx_inverted = OFF i serialrx_halfduplex = OFF i jakie było moje zdziwienie, że zarówno sterowanie jak i telemetria działały.
Wydaje mi się, że są jakieś problemy z obsługą F.Port w przypadku odbiornika R9Mini i użycia sprzętowego inwertera, który poskładałem. Działa sterowanie ale brak jest obsługi telemetrii. Co ciekawe w przypadku odbiornika XSR tego problemu nie ma.  

W związku z powyższym odbiornik R9Mini został zamontowany w modelu Martian II, który posiada kontroler lotu z mikrokontrolerem F3.

Na chwilę obecną nie mam już wolnych odbiorników R9Mini aby przeprowadzić więcej testów. Ostatnio znalazłem również informacje o dostępności nieodwróconego sygnału S.Port w odbiorniku R9Mini co może być rozwiązaniem powyższych problemów.

Brak komentarzy:

Prześlij komentarz