Na początku roku 2014 pojawił się na RC-Groups wątek dot. budowy odbiornika do systemu FrSky. Został on przyjęty przez modelarzy-elektroników z ogromnym zainteresowaniem i dużym uznaniem dla autora, gdyż projekt ten wymagał „odszyfrowania” protokołu transmisji FrSky, który (jak mi się wydaje) nie był opublikowany przez firmę (nie mylić z udostępnionymi protokołami telemetrii). Temat ogólnie przerastał moje możliwości, dlatego śledziłem go z rzadka, ale po jakimś czasie do gry włączyli się chińscy producenci elektroniki i wypuścili na rynek fabryczne wersje odbiornika z RC-Groups. Są one określane często jako DIY FrSky, oczywiście w cudzysłowie, bo nie robimy odbiornika sami, kupujemy zmontowany moduł i ładujemy do niego oprogramowanie DIY. Ten wariant był dla mnie już bardziej sensowny, ale odłożyłem jeszcze ew. zakup na później, bo wersja oprogramowania udostępniona w tamtym czasie, przewidywała specyficznie działającą (bez możliwości wyłączenia) funkcję Fail Safe tylko na kanale 3 (przepustnica w systemach „Futabopodobnych”), podczas gdy ja używam Graupnera z przepustnicą na kanale 1 i sterem wysokości na kanale 3. Tak działający FS (gaz na minimum, a u mnie wysokość - przy braku sygnału) mógłby sie okazać wręcz niebezpieczny. Ale firmware był cały czas rozwijany, pojawiła się już bardzo dopracowana wersja, dlatego zdecydowałem się na zakup i "przebicie się" przez zaprogramowania odbiornika. W tym artykule chcę się podzielić doświadczeniami z tego procesu.
Tak wyglądał odbiornik, który do mnie dotarł. Ma on 8 kanałów i może pracować w 3 trybach – klasyczny tryb PPM (obecnie czasem określany jako PWM), gdzie sygnały kanałowe są wyprowadzone na kolejne piny grzebienia, tryb CPPM (PPM sum), gdzie „sumowany” PPM jest wyprowadzony na Pin4 (wymaga zwarcia Pin1 i Pin3), oraz tryb S-Bus (wymaga zwarcia Pin5 i Pin7 oraz wyprowadzenia tego sygnału ze środka odbiornika). Do bindowania należy zewrzeć Pin8 z masą. W ten rząd grzebienia nie da się podłączyć serwa, bo ma wycięty środkowy pin zasilania (+Vcc). Pewnie wynika to z faktu, że aktualne wersje firmware przewidują, że na Pin8 jest wyprowadzone wejście analogowej telemetrii i nie wykorzystuje się go jako 8-go kanału w klasycznym trybie PPM. To co trochę nietypowe dla rozwiązań fabrycznych (a typowe z kolei dla DIY), to układ masy i zasilania na grzebieniu. W większości odbiorników fabrycznych z 3-rzędowym pionowym grzebieniem, masa znajduje się najbliżej płytki, a sygnały kanałowe na górze. Tutaj jest odwrotnie – sygnały kanałowe przy płytce, masa na górze.
Załadowanie oprogramowania wymaga dostania się do środka, dlatego konieczne było zdjęcie naklejki z opisami a potem usunięcie koszulki. Przyznam, że widok mnie trochę zaskoczył. Na naklejce jest oznaczenie RF-801, podczas gdy na płytce RF-702, w dodatku spodziewałem się zobaczyć coś jak czerwona płytka po prawej stronie (w tej lub bardzo podobnej wersji), a otrzymałem odbiornik z zupełnie inaczej zaprojektowana płytką. Czy przeprogramowanie się uda? Pogrzebałem trochę w necie, ale nigdzie nie znalazłem takiej wersji jak moja. Po dokładniejszym porównaniu płytek doszedłem jednak do wniosku, że powinno sie udać, tym bardziej, że na spodzie (nie pokazane na fotkach) zielonej płytki odnalazłem oznaczenie „Airwolf”, które widać na płytce czerwonej. Uznałem, że to musi być nowa wersja tego samego produktu. Już po przeprogramowaniu i przetestowaniu odbiornika, znalazłem informacje wskazujące pośrednio na to, że może być to wersja przygotowana fabrycznie do wyprowadzenia złącz S-Bus i hub-a telemetrii.
Co jest potrzebne do załadowania programu? Najprościej jest użyć taniego i popularnego programatora USBasp, koniecznie na napięcie 3,3V. Programatory te sprzedaje się często w wersji 5V/3,3V – mają ona albo zworkę, albo tak jak u mnie wlutowany na spodniej stronie płytki rezystor smd 0 Ohm (R5), który pełni rolę zworki (czerwona strzałka). Należy go po prostu wylutować. Konieczny jest również soft do obsługi programatora, w tym przypadku mogę również polecić bardzo prosty w obsłudze, dobrze współpracujący z USBasp i darmowy SinaProg (nie wymaga instalacji, jest to w zasadzie GIU na program avrdude, używany również w IDE Arduino ). Linki do firmware odbiornika będą zamieszczone na końcu artykułu. Przy programowaniu mikrokontrolerów ważną sprawą są tzw. „Fuses” lub „Fuse bits”. W Arduino wyręcza nas w tym (choć podobno nieoptymalnie) samo środowisko. Przeczytałem, że SinaPro również podpowiada „Fuse bits”, stąd nie zgłębiałem się na razie w temat, zakładając, że wrócę do tego, jeśli odbiornik nie będzie działać. W razie potrzeby informacje o tym parametrze można znaleźć w wątku RCG. SinaProg pozwala również rozpoznać procesor podłączony do USBasp, odczytać z niego wsad, jak i zweryfikować nasz firmware po jego załadowaniu. To co chciałbym jeszcze raz podkreślić, to napięcie zasilania w trybie programowania, użycie 5V zamiast 3,3V doprowadzi do zniszczenia odbiornika.
Większość sygnałów koniecznych do podłączenia USBasp bierzemy z grzebienia odbiornika. Wyjątkiem jest sygnał RST, który jest wyprowadzony w postaci małego punktu lutowniczego przy procesorze. Należy się tam podlutować na czas programowania. Ja założyłem, że pewnie jeszcze się zdarzy potrzeba ponownego przeprogramowania, więc postanowiłem na stałe dołożyć swoje złącze – dla lepszej stabilności mechanicznej w postaci 3 pinów (odcięte z dłuższej listwy), dwa pierwsze (zagięte) są przylutowane do GND i Vcc i utrzymują złącze na płytce, trzeci (wyprostowany) jest przedłużony przewodem montażowym do pola RST. Z perspektywy informacji do których dotarłem później, można było zastosować złącze 4 pin i wyprowadzić sygnał S-Bus lub 5 pin i wyprowadzić wszystko (RST, S-Bus i Hub).
Programowanie przebiegło bez problemów, sprawdziłem czy odbiornik działa z aparaturą (zadziałał bez problemów). Naklejkę umieściłem na płytce z laminatu 0,3mm, a następnie założyłem przezroczystą koszulkę na całość (naklejka pod koszulką), zakrywając również grzebień. Przyznam, że mocując odbiornik często na zewnątrz modeli, nie za bardzo lubię rozwiązania z odsłoniętymi pinami, uważam je za mało bezpieczne dla elektroniki. Wersja oprogramowania, którą wgrałem, to „telemetria, S-Bus, Fail Safe”, natomiast to co udało mi się sprawdzić na stole to tylko FailSafe. Działa na wszystkich kanałach, po wyłączeniu nadajnika serwa zostają w położeniu, w którym były przy bindowaniu odbiornika. Natomiast telemetria u mnie nie działa, ale może być to kwestią zaimplementowanej wersji protokołu, mój moduł FrSky pochodzi z samych początków produkcji (huby i wyświetlacze telemetrii wtedy nie były dostępne). Z kolei użytkownicy nadajników Taranis nie zgłaszają takich problemów. Analizatorem stanów logicznych sprawdziłem również tryb CPPM (ale nie sprawdziłem trybu S-Bus), wykresy przebiegów można znaleźć w tym artykule.
Ostatecznym testem było sprawdzenie odbiornika w locie. Zamontowałem go na mój uniwersalny model testowy DWS i starałem się polatać trochę dalej, ale nie na tyle daleko, żeby w razie problemów stracić kontrolę nad dystansem i położeniem w przestrzeni. Stale utrzymywałem odległość ok. 200 m od czasu do czasu odlatując dalej – na ok. 300m. Silnik pracował przez cały czas (w przypadku utraty komunikacji włączyłby się FS, odcinając obroty), nie miałem też w żadnym momencie poczucia, że coś jest nie tak, że model się „nie słucha”. Zasięg tego odbiornika zależy od modułu w.cz. 2,4Ghz, który jest w nim zainstalowany. O ile dobrze odczytałem przewijające się informacje, to w grę wchodziły 2 wersje, o mniejszym i większym zasięgu. Ten o mniejszym teoretycznie chyba powinien gwarantować ok. 600m. Opinie użytkowników na ogół są pozytywne, większość potwierdza dystans rzędu 200m (niektórzy więcej), natomiast sporadycznie trafia się ktoś, kto sygnalizuje problemy nawet przy odległości 30-50m. Bywają też nieliczne przypadki kłopotów z bindowaniem. Nie trafiłem natomiast na testy dystansu granicznego.
Podsumowanie
Moim zdaniem ta seria odbiorników to ciekawa propozycja. FrSky staje się z upływem czasu coraz droższą marką – wydaje się, że raczej konkurują ceną z drogimi, tradycyjnie uznanymi markami RC (Futaba, Graupner, JR), a nie popularnymi tanimi chińskimi producentami. Doszło do tego, że „lepszy” odbiornik FrSky z telemetrią, kosztuje tyle co cała aparatura FlySky z telemetrią (nadajnik z odbiornikiem). Jeśli ktoś posiada drogie modele, to pewnie nie ma sensu (pozorna oszczędność) używanie takiego odbiornika. Natomiast przy modelarstwie niskobudżetowym, kiedy dla wygody chce się mieć w kilku deprolotach odbiorniki zamontowane na stałe, wydaje się sensowną propozycją. A tym bardziej w przypadkach, kiedy nie chodzi o modele latające. Cena bardzo zachęca, bo jest to ok. 12$ za 8 kanałów z FS, S-Bus/CPPM i telemetrią. Czy jest to propozycja dla każdego? Zapewne nie, raczej tylko dla tych, którzy czują się na siłach, aby samodzielnie przeprogramować odbiornik. Upgrade softu wydaje się koniecznością, bo kupuje się je bez żadnej dodatkowej informacji - co to za wersja i jaki soft jest załadowany. Nie wykluczam, że mogą się wręcz zdarzyć przypadki, że odbiornik przyjdzie w ogóle bez softu. W dodatku jak to w projektach DIY, oprogramowanie stale się rozwija, usuwane są błędy, więc dobrze jest mieć możliwość aktualizacji firmware, przynajmniej w jakichś krytycznych przypadkach. Za duży pozytyw uważam natomiast możliwość wymiany przewodu anteny na dłuższy, najtańsze odbiorniki fabryczne nie zawsze na to pozwalają.
Linki
- Cały wątek RC-Grpups, ze względu na ilość postów trudny do przebrnięcia --> tutaj
- Post z najważniejszymi informacjami: bindowanie, fuse bits, fail safe, telemetria, lista rekomendowanych odbiorników --> tutaj
- Procedura bindowania z ustawieniem FailSafe --> tutaj
- Ostatnie (sierpień 2016 i późniejsze) wersje firmware --> tutaj
Aktualizacja 2017-04-12
Wspominałem wcześniej, że nie udało się sprawdzić odbiornika z wersją firmware wspierającą telemetrię. Prawdopodobną przyczyną była niezgodność protokołu z wczesną wersją modułu nadawczego DHT. I rzeczywiście, okazało się, że próba telemetrii z nadajnikiem Taranis wypadła pomyślnie. Odbiornik binduje się bez problemu, a na ekranie telemetrii w nadajniku można wyświetlić wartość RSSI oraz napięcie na kanale A1. Zdjęcie ilustruje pomiar napięcia odbiornika (5V) poprzez zewnętrzny dzielnik 1:4 (zalecane przez autora 3k3/10k).