Flashowanie odbiornika XM+ przy pomocy Taranisa X9D.

Flashowanie odbiornika XM+ przy pomocy Taranisa X9D.

Jeżeli śledzicie moje zmagania z EMax Babyhawkiem, to wiecie, że zarzucam mu brak dwóch rzeczy - buzzera i OSD. Oba te elementy możemy dorzucić do quadrocoptera własnymi siłami, choć wymaga to odrobiny wprawy w lutowaniu. Po podłączeniu OSD okazało się, że nie jest ono w stanie pokazać właściwej wartości RSSI, czyli siły odbieranego sygnału. Jest to istotne, ponieważ dzięki temu wiemy, czy latamy już na granicy zasięgu radiowego, czy też nie. RSSI podawane jest w procentach, więc łatwo się zorientować, jak wygląda sytuacja. Odbiornik od Babyhawka, czyli XM+ nie posiada telemetrii, a więc nie wysyła nam informacji do aparatury, ale mierzy ten parametr. Aby można było go wyświetlić na ekranie, musi on z odbiornika trafić do OSD. Sygnał można podać bezpośrednio do OSD łącząc pole lutownicze RSSI na XM+ z tym na minimOSD, ale niestety nie jest on kompatybilny z tym ostatnim i wymaga po drodze filtra dolnoprzepustowego. Za dużo roboty. Druga opcja to podanie parametru RSSI z kontrolera lotu. Skąd jednak ma on jednak wziąć ten parametr? Otóż XM+ połączony poprzez SBUS będzie wystawiał wartość tego parametru na kanale 8 lub 16. Wystarczy więc skonfigurować w Betaflight, aby interpretowało ten kanał jako RSSI, a wartość automagicznie zostanie dostarczona do OSD. Rewelacja, tylko jest mały szkopuł. Z jakiegoś powodu na kanale 16 nie widać RSSI :( Na szczęście krótka analiza prowadzi nas do wniosku, że wystarczy wgrać nową wersję oprogramowania do odbiornika i wszystko powinno hulać. Chwała FrSky, że współpraca ich odbiorników i aparatur jest tak bezproblemowa! Wgramy nowe oprogramowanie wprost z aparatury i pokażę Wam, że nie jest to trudne! Do roboty!

W artykule posługuję się aparaturą Taranis X9D i odbiornikiem XM+. Procedura zadziała również z Taranisem Q X7 i innymi odbiornikami FrSky. Jedyne, co trzeba sprawdzić to koleność pinów, aby przypadkiem odwrotnie nie podłączyć zasilania do odbiornika.

Zaczynamy od pobrania firmware dla XM+. Jest ono dostępne bezpośrednio na stronie FrSky. W przypadku wspomnianego odbiornika aktualny adres to: https://www.frsky-rc.com/xm-plus-mini-sbus-non-telemetry-full-range/. Po wejściu na stronę ściągamy najnowszą wersję oprogramowania.

Następnie musimy rozpakować i skopiować odpowiednie pliki na kartę microSD, którą mamy w Taranisie. Ja raczej nie podłączam aparatury bezpośrednio do komputera po USB, tylko wyjmuję kartę i wkładam ją do czytnika. W moim przypadku okazało się to dużo pewniejsze, bo aparatura potrafiła mi tracić nagle połączenie z komputerem przy okazji uszkadzając system plików na karcie, bo na ogół działo się to w trakcie kopiowania plików. Wolę więc wgrywać dane bezpośrednio na kartę poprzez czytnik.
W przypadku XM+ w archiwum ZIP mamy wiele różnych firmware i nie jest łatwo zorientować się, którego potrzebujemy. Pomogą nam w tym sformułowania zawarte w nazwach samych plików.
"FCC" (ang. Federal Communications Commission - Federalna komisja komunikacji w USA) to wersje przeznaczone do aparatur używanych w Stanach Zjednoczonych. Tam limit mocy wypromieniowywanej przez antenę pracującą w paśmie 2.4GHz wynosi 100mW (miliwatów). W Europie wartość ta jest obniżona do 90mW i dodatkowo stosowana jest procedura LBT, czyli Listen-Before-Talk. Chodzi o to, żeby urządzenia takie, jak aparatury modelarskie ustąpiły pierwszeństwa innym urządzeniom pracującym w paśmie 2.4GHz - np. routerom i Access Pointom Wi-Fi. W Europie trzymamy się więc oprogramowania LBT. Uwaga! Jeżeli aparatura będzie wykorzystywać firmware FCC, a odbiornik LBT lub odwrotnie - parowanie obu urządzeń się nam nie uda! Wgrywając oprogramowanie dobrze jest więc kojarzyć jaki typ mamy już w aparaturze.
Dla obu wersji oprogramowania mamy jeszcze warianty, które albo nie wystawiają RSSI na żadnym kanale, albo robią to na 8 lub 16. Stąd biorą się wszystkie nazwy i warianty plików. Przykładowo, plik o nazwie: XM+LBT170313-RSSI16.frk oznacza, że mamy do czynienia z firmware LBT - Europejskim, oraz RSSI na kanale 16.

Wybrany firmware, bądź wszystkie, kopiujemy na kartę microSD wyjętą z Taranisa. Oprogramowanie musi znaleźć się bezpośrednio w folderze FIRMWARE. Jeżeli korzystamy z karty dostarczonej wraz z aparaturą, niewykluczone, że katalog już tam będzie. Jeśli nie - tworzymy go pamiętając o pisaniu nazwy WIELKIMI LITERAMI.

Po nagraniu plików odmontowujemy czytnik kart i wkładamy microSD do Taranisa. Zanim uruchomimy aparaturę, podłączmy do niej odbiornik. Dostęp do pinów, którymi będziemy programować uzyskamy poprzez zdjęcie zaślepki z tyłu. Jeśli mamy już jakiś moduł - musimy go wyjąć.
Na nasze szczęście XM+ wymaga jedynie 3 przewodów. Dwa z nich dostarczają zasilanie 5V oraz GND (masa), natomiast ostatni będzie odpowiadał za właściwą komunikację z modułem. Kolejność pinów jest niestety inna na wyjściu z aparatury, a inna w odbiorniku, więc nie możemy go podłączyć bezpośrednio - będziemy musieli użyć i skrzyżować przewody. W Taranisie interesują nas trzy ostatnie wyjścia. Środkowe to +5V, następne to GND, a ostatnie złącze sygnałowe, które podłączymy do SBUS na odbiorniku.

Do połączenia aparatury i odbiornika użyłem przewodów do płytek stykowych - z jednej strony męskich (z bolcem), z drugiej żeńskich (z gniazdem). Można je dostać choćby na Allegro, albo jak zawsze na Banggood.
Z kolei XM+ ma +5V pośrodku, zaś GND i SBUS na krawędziach. Schemat pinów i zdjęcie w jakiej kolejności je podłączyć (zwróćcie uwagę na której stronie jest płytka) prezentuję poniżej.

I wreszcie jak to wygląda z nieco większej odległości.

No dobrze, teraz pora odwrócić aparaturę i ją włączyć. Przechodzimy do menu ustawień przytrzymując przycisk "MENU".

Następnie przycikiem PAGE przechodzimy na drugą zakładkę (2/9), w której będziemy mieli dostęp do danych na karcie microSD.

Nawigujemy do folderu FIRMWARE (przyciskami +, - i ENT) i tam wybieramy właściwą dla nas wersję firmware, który chcemy zapisać w odbiorniku.

Przytrzymujemy przycisk ENT, aby wyświetlić menu kontekstowe dla wybranego pliku. Wybieramy opcję "Sflashuj zewnętrzny moduł" (and. Flash External Module). Zwracam uwagę na słowo "zewnętrzny". W Taranisie mamy wbudowany moduł, który jest wykorzystywany do komunikacji z odbiornikami. On jest wewnętrznym modułem, więc jeśli będziemy chcieli zmienić w nim oprogramowanie to wybierzemy opcję "Sflashuj wewnętrzny moduł". Na pinach z tyłu podłącza się natomiast moduły zewnętrzne i dlatego taki też wybieramy. Polecam tutaj wykazać się uwagą, ponieważ wgrywanie oprogramowania przeznaczonego do zupełnie innego odbiornika (wybierając moduł wewnętrzny zamiast zewnętrznego) możemy go uszkodzić - nie wiadomo jak firmware się zachowa i jak jest napisany.

Po wybraniu opcji flashowania odbiornika, aparatura pokaże nam pasek postępu i poinformuje o tym, że trwa zapis. Oczywiście pod warunkiem, że poprawnie wszystko podłączyliśmy! W trakcie wgrywania Firmware do dowolnego urządzenia NIGDY nie przerywajcie tego procesu! Urządzenie może się w takiej sytuacji w ogóle nie włączyć, lub źle działać. W niektórych, prostszych układach, gdzie bootloader jest podmieniany wraz z resztą oprogramowania wybór właściwego oprogramowania (typu urządzenia) jest kluczowy, podobnie jak nieprzerywanie procesu. To, że wgracie oprogramowanie FCC zamiast LBT można łatwo zmienić - po prostu wgrywa się je jeszcze raz, ale jeśli wybierzecie oprogramowanie od innego odbiornika albo przerwiecie - możecie nie mieć kolejnej szansy.

Jednocześnie podczas zapisu będzie widać, że zielona dioda się pali, a czerwona może powoli migać. Istotne jest to, że moduł ma zasilanie, co potwierdzają zapalone na nim diody. Po skończeniu flashowania aparatura wróci po prostu do menu - nie zasygnalizuje, czy proces się udał - musimy to sprawdzić samodzielnie.

Chwila prawdy. Podłączyłem odbiornik do koptera, a po nawiązaniu z nią połączenia (wcześniej były sparowane, więc aktualizacja oprogramowania nie wpłynęła na to) podłączyłem kopter do Betaflight i wybrałem zakładkę Receiver. Na kanale AUX12 zobaczyłem skaczącą wartość w zakresie 1700-1800. Rewelacja! Oznacza to, że RSSI faktycznie jest przesyłane do kontrolera lotu. Aby dokończyć dzieła, należy jeszcze po prawej stronie opcję RSSI Channel ustawić na AUX12, czyli tam, gdzie widzimy nasze RSSI. Pora na kawę, herbatę, lub sen, zależnie o której godzinie się za to zabraliście - dla mnie to ostatnie! ;)

Możecie jeszcze zapytać dlaczego wybrawszy firmware, który wyprowadza RSSI na kanale 16 (taki wgrałem - widać na zdjęciu powyżej), widoczny jest on jako AUX12. Otóż różnica wartości wynika z tego, że najpierw mamy 4 kanały sterujące: Throttle, Yaw, Pitch, Roll, a AUX1 to tak naprawdę 5 kanał. Jednocześnie więc AUX12 to kanał 16.

Uwaga! Może się okazać, że Betaflight w kontrolerze lotu jest tak skonfigurowane, że nie widzi wszystkich 16 kanałów. Jest na to proste remedium. Wchodzimy w CLI (menu po lewej stronie) i wpisujemy tam dwie komendy, aby sprawdzić stan poszczególnych opcji:

set aux
set rssi

Opcja max_aux_channels powinna być ustawiona na 12, jeśli mamy oprogramowanie wystawiające RSSI na kanale 16, lub wystarczy wartość 4, jeśli mamy software z RSSI na kanale 8. Jeśli potrzebujemy zmienić tą wartość to korzystamy z komendy "set" po której podajemy nazwę opcji, po spacji znak '=' i po kolejnej spacji wartość. Na przykład:

set max_aux_channels = 12 lub set max_aux_channels = 4

Drugą opcję - rssi_channel - możemy zmienić już w zakładce Receiver, ale jeśli chcemy to zrobić od razu to możemy też ją od razu podać:

set rssi_channel = 16

To powinno skutecznie załatwić sprawę. Opcji "rssi_scale" używa się wyłącznie, gdy podłączamy pad RSSI z odbiornika do kontrolera lotu i służy poprawnej interpretacji napięcia w zakresie 0 - 3.3V, które pojawia się na tym pinie. Przy wyprowadzeniu wartości przez SBUS jest ona przeskalowana i parametr ten nie powinien w ogóle na nią wpłynąć, dlatego go nie używamy.

W przypadku FrSky i XM+ raczej problem się nie pojawi, ale jeśli okaże się, że nasz kontroler w zakładce Receiver pokazuje wartości odwrotnie - niski poziom (1000-1200) przy dobrej jakości sygnału (aparatura jest blisko), a wysokie wartości (>1600), gdy zaczniemy się oddalać i sygnał osłabnie, to musimy zmienić jeszcze opcję "rssi_ppm_invert". W przypadku kontrolera od Babyhawka wartości są poprawne, więc opcja jest ustawiona na "OFF", ale jeśli okaże się, że u Was jest odwrotnie - poradnik dotyczy nie tylko Babyhawka w końcu - to zmieńcie wartość:

set rssi_ppm_invert = ON

Po wszystkich operacjach wpisujemy w CLI jeszcze polecenie "save", aby zapisać wszystkie zmiany.

save

Po wyjściu z CLI kontroler lotu zawsze się restartuje, więc wybierając dowolną inną zakładkę zostaniecie rozłączeni. Po odzyskaniu połączenia powinniście zobaczyć już poprawne wskazania RSSI, które możecie sprawdzić zasłaniając ręką antenę od aparatury. Wartość na kanale 16 (lub 8, jeśli taki wybraliście) powinna spaść.

Gratulacje - udało nam się samodzielnie podmienić oprogramowanie w odbiorniku i mamy teraz RSSI! Nie mogę się doczekać, kiedy założę gogle i zobaczę ten parametr w narożniku obrazu z kamery na OSD! Udanych lotów i zapraszam do lektury pozostałych wpisów!

Rozwiązywanie problemów

Wyskoczył komunikat: "Module refused data"

Jeden z czytelników - Artur - napisał do mnie z pytaniem, co zrobić, gdy przy próbie flashowania pojawi się powyższy komunikat. Przyznam, że Internet nie okazał się specjalnie pomocny, a Artur przeorał temat naprawdę solidnie. Z uwagi na to, że nie umiałem mu pomóc, napisał do supportu FrSky i dostał odpowiedź, która rozwiązała problem:

Należy wziąć porządną, markową kartę SD. Następnie sformatować ją używając systemu plików FAT32 i wykonać pełne formatowanie (a nie szybkie!). Na karcie tworzymy wyłącznie folder FIRMWARE, do którego wgrywamy oprogramowanie, które chcemy wgrać do odbiornika. Wtedy flashowanie powinno się udać.

4Śmigła.pl: Arturze - dziękuję za podzielenie się tą radą!