Quadcopter – telemetria w aparaturze i na komórce

er9x_frsky_telemJest to kontynuacja wpisu o linku OpenLRS, w tej części zrobimy pożytek z jego jednej z głównych zalet – z telemetrii. Najpierw zmodyfikuję radio Turnigy/FlySky tak aby mogło odbierać i wyświetlać telemetrię, a potem zamontuję moduł bluetooth w nadajniku OrangeRX LRS, tak aby można było połączyć się z nim komórką, i również na niej móc odbierać telemetrię. Oczywiście można wykonać obie modyfikacje i używać ich jednocześnie, lub tylko jedną, dowolną.

Telemetria FrSky

frsky_data
Protokół FrSky jest względnie prosty i pracuje w jedną stronę odbierając informacje z modelu. Podstawowy FrSky to tylko informacje takie jak siły sygnałów RSSItx i RSSIrx (dla nadajnika jak i odbiornika), oraz dwa napięcia analogowe (zazwyczaj napięcie pakietu i temperatura). Układ FrSky HUB to wersja rozszerzona, jest to dodatkowa płytka pod którą można podłączyć cały szereg czujników, i ich dane będą wysyłane na ziemię aby tam zrobić z nich pożytek. Na szczęście nie musimy zaopatrywać się w tą dodatkową płytkę, Cleanflight potrafi zebrać do kupy wszystkie dane jakimi dysponuje i wysłać do odbiornika RC udając wspomnianego HUBa. Prawda że to spore ułatwienie? Jakie informacje potrafi przesłać FrSky HUB? Praktycznie wszystko co może nam się przydać: wysokość barometru, wysokość GPS, prędkość GPS, współrzędne GPS, kierunek lotu z magnetometru, RPM, zużytą energię/paliwo, temperaturę (dwa kanały), napięcie pakietu, pobierany prąd, zużywaną moc, datę i godzinę GPS, osie X Y Z akcelerometru. Potrzeba czegoś więcej? Oczywiście dodatkowo przesyłany i wyświetlany jest sygnał RSSI odbiornika jak i nadajnika. Cały protokół jest opisany w tym dokumencie. Niestety wygląda na to że strona frsky nie pozwala na hotlinkowanie, przy czym nie można też zalinkować w żaden sposób do dokumentu, jest dostępny jedynie w spisie na stronie i ciężko go odnaleźć ręcznie – pozwoliłem zatem skopiować go na swój serwer – tutaj.

Modyfikacja aparatury Turnigy/FlySky
flysky_turnigy_telemetry_aTak, po raz kolejny. Ale na szczęście nie ma tam za dużo roboty. Cały proces to przecięcie dwóch ścieżek, przylutowanie ich drucikami w inne miejsce, doprowadzenie dodatkowego przewodu do gniazda nadajnika, no i zmiana oprogramowania, ale to już mamy przerobione :) Najpierw przecinamy dwie ścieżki w miejscach które zaznaczyłem na zdjęciu. Dla ułatwienia można odlutować przewody programatora, a przecinamy ostrym nożykiem ale tak żeby nie przeciąć niczego więcej.

flysky_turnigy_telemetry_bGdy piny TX oraz RX mamy już uwolnione, przydałoby się podłączyć do czegoś odcięte przed chwilą przełączniki THR oraz AIL – mogą się jeszcze przydać :) W tym celu cienkim przewodem łączymy pierwszy rezystor do pinu 41 (PORTC6) a drugi do pinu 42 (PORTC7) układu Atmega64, i tutaj uwaga, bez doświadczenia w lutowaniu będzie ciężko, a nawet można popsuć sobie radio – żeby nie było że nie ostrzegałem.

flysky_turnigy_telemetry_cWystarczy teraz kabelkiem wyprowadzić piny TX i RX. Pin 2 procesora to RX i będzie on współdzielony z linią MOSI programatora, a pin 3 to TX i będzie on współdzielony z linią MISO – nowymi przewodami po prostu lutujemy się do tych samych padów gdzie jest nasz programator. W zasadzie do odbioru telemetrii wystarczy nam tylko połączenie TX nadajnika > RX aparatury, tak aby jednokierunkowo przesłać dane protokołem FrSky, ale warto wyprowadzić sobie obydwie te linie na przyszłość żeby później znów nie rozgrzebywać tego lutownicą.

flysky_turnigy_telemetry_dJednak na chwilę obecną wystarczy jeśli do nadajnika połączymy tylko linię TX>RX tak aby przesyłał on dane do aparatury, a linię powrotną sobie na razie darujemy, później wyjaśnię czemu. Przewód ten łączymy najlepiej do pinu 5 złącza modułu nadajnika, które znajduje się na płytce w tylnej części obudowy (oczywiście numeracja pinów została stworzona tylko na potrzeby tego poradnika i każdy może sobie to liczyć jak chce). Pin 5 to jedyny wolny pin który można użyć bez jakiejkolwiek modyfikacji czy cięcia ścieżek, inna opcja to wykorzystanie jednego z pinów GND ale wiąże się to z „uwolnieniem” go od masy płytki z obydwu jej stron.

flysky_turnigy_telemetry_e No i pozostał sam nadajnik. Tutaj odbicie lustrzane 5pinowego złącza, i 5 pin łączymy do pinu TX modułu OrangeRX, w tym wypadku jest to PORT7. U siebie przewód przylutowałem z drugiej strony płytki tak aby złącze goldpin było wolne na potrzeby podłączenia programatora lub modułu bluetooth. Tutaj mała uwaga – moduł pracuje przy 3.3V a procesor aparatury przy 5V, więc jeśli chcemy też wykonać połączenie TX aparatury > RX modułu to należy wykonać je przy pomocy rezystora 100-330Ω w szeregu tak aby nie narażać portów na uszkodzenia (różne poziomy napięć 5V -> 3.3V), ale dla połączenia TX modułu > RX (3.3V -> 5V) aparatury rezystor taki nie jest wymagany, choć oczywiście nie zaszkodzi.

Zmiana oprogramowania dla aparatury

Zamiast opisywać cały proces od nowa, odsyłam z tego miejsca do opisu zmiany oprogramowania w radiu FlySky. Wszystko wygląda tak samo, jedyna zmiana to taka że w oknie Preferences pod pozycją Version to download zmieniamy typ firmware na er9x – FrSky, i klikamy Download aby je pobrać. Zanim jednak wrzucimy nowy firmware warto zgrać wszystkie ustawienia przyciskiem Read memory from TX aby móc je później bezboleśnie przywrócić. Niestety kalibrację będzie trzeba przeprowadzić ponownie, ale to jest akurat szybką i prostą czynnością.

er9x-frsky

Wybór i przygotowanie modułu Bluetooth
hc06_configurationMoże być to w zasadzie dowolny konwerter bluetooth – RS232. Oczywiście RS232 pasuje tu tylko z nazwy, tak na prawdę moduł musi mieć zwykłe wyjścia UART – RX i TX. Bardzo popularny i tani moduł to HC-06, i taki właśnie nabyłem na ebay za 3.90$ – może być zasilany z 5V, jest dostatecznie mały aby pomieścić się w obudowę nadajnika RC, i domyślnie pracuje już przy prędkości 9600 więc nawet nic nie trzeba przestawiać. Jeśli jednak Twój moduł pracuje przy innej prędkości, będzie trzeba ją zmienić. Dla HC-06 sprawa jest całkiem prosta, wystarczy podłączyć go do PC dowolnym kowerterem usb-uart, i za pomocą prostych komend AT zmienić jego ustawienia. Aby uprościć sobie zadanie można skorzystać z programu hc04conf. hc04conf.exe -p COM1 -b 9600 umożliwi połączenie z modułem bluetooth, jeśli nie podamy portu to program użyje pierwszego dostępnego i wolnego portu, jeśli nie podamy prędkości to spróbuje dobrać ją automatycznie. –set-name ZMR250_telemetry –set-pin 1234 –set-baud 9600 dopisane do powyższego spowodują zapisanie nowych ustawień, np nazwy, pinu, czy prędkości pracy. Ja u siebie zmieniłem nazwę, choć tą można potem zmienić na komórce po sparowaniu urządzeń.

Jeśli jeszcze chodzi o wybór modułu, można rozważyć zakup droższej wersji z wyprowadzonym pinem DTR, bo jeśli taki pin połączymy do płytki OrangeRX i skonfigurujemy połączenie BT-COM w komputerze, to będziemy mieli bezprzewodowy dostęp do płytki z poziomu konfiguratora OpenLRSng. Pin DTR jest tu wymagany, bez niego płytkę będzie trzeba podłączać przewodowo jak dotychczas, choć myślę że w raz ustawionym linku nie będzie trzeba już więcej grzebać. Większy moduł może też się nie zmieścić w obudowie nadajnika RC i trzeba będzie poszukać dla niego innego miejsca – np w obudowie aparatury co też nie jest głupim pomysłem.

Instalacja modułu Bluetooth w nadajniku

orangerx_hc06_telemetry_connectionModuł BT łączymy z nadajnikiem bez żadnych kombinacji, czyli VCC-VCC, GND-GND, RX-TX, TX-RX. Tutaj z połączeniem należy jedną rzecz jednak wyjaśnić. Jeśli moduł radiowy (orangerx) nadaje telemetrię na pinie TX, to obydwa odbiorniki (aparatura oraz bluetooth) mogą odbierać ją jednocześnie pinami RX. Jeśli jednak połączymy pin RX modułu radiowego jednocześnie do aparatury i bluetooth, to powstanie konflikt i komunikacja nie będzie możliwa. Więc jeśli chcemy połączyć sygnał zwrotny do modułu radiowego, może on pochodzić tylko z jednego urządzenia TX. Jeszcze jedna uwaga – napięcie. Mój moduł jest przeznaczony do zasilania z napięcia od 3.6V do 6V, i wypadałoby zasilić go z pinu 5V płytki OrangeRX. Jak widać na zdjęciu ja użyłem pinu 3.3V bo tak było mi „bardziej po drodze”, w ten sposób sam moduł pewnie dostaje około 3V, ale jak się okazuje pracuje w pełni poprawnie i już nie chciało mi się tego zmieniać. Sam moduł upchałem pod płytką OrangeRX i zmieścił się tam całkiem fajnie.

Konfiguracja Cleanflight i porty UART w Flip32

flip32_pinout_uart_pwmZanim przejdziemy do konfiguracji i testowania telemetrii w aparaturze i na telefonie, trzeba jeszcze skonfigurować kontroler lotu tak żeby tą telemetrię nam wypluwał. Na płytce Flip32 dostępne są 4 porty UART które mogą być niemal dowolnie konfigurowane. Dwa pierwsze to porty sprzętowe, czyli takie nie zabierające czasu procesora, a kolejne dwa to porty programowe, czyli takie którymi procesor musi się zajmować przeznaczając mniej czasu na inne zadania, więc zdecydowanie warto wykorzystać te sprzętowe a programowe włączyć dopiero gdy zabraknie sprzętowych.

Uwaga – port UART1 dzieli swoją funkcję z konwerterem USB który umożliwia komunikację z konfiguratorem, a inne funkcje na nim włączone dostępne będą dopiero po uzbrojeniu modelu. Podłączenie pod ten port urządzenia które w sposób ciągły wysyła dane (np. GPS) spowoduje że komunikacja przez USB stanie się utrudniona lub niemożliwa, a może to nawet doprowadzić do uszkodzenia portu.

Port UART2 jest wolny, ale dzieli on swoją funkcję z wejściami PWM kanałów 3 i 4, więc jeśli mamy odbiornik PWM, to stracimy dwa dostępne kanały. To samo tyczy się portów UART2 oraz UART3. W moim przypadku nie muszę się tym przejmować bo zmieniłem link radiowy na OrangeRX OpenLRS który potrafi przepchać do 16 kanałów PWM przez jeden pin PPM RX. W swoim modelu mam GPS (któremu będzie poświęcona kolejna część), i musiałem jakoś wybrać porty UART zarówno dla GPSu jak i dla telemetrii. Ponieważ GPS tylko wypluwa dane i praktycznie nie potrzebuje ich odbierać (chyba tylko przy starcie wysyłana jest konfiguracja), a telemetria nie wypluwa danych a tylko i wyłącznie je odbiera, to wybór tutaj był prosty. Telemetria powędrowała na UART1, ponieważ nie nadaje danych to i nie będzie przeszkadzała w komunikacji USB, i może być tam podłączona na stałe. Warto jednak dać na linię UART 1TX > RX Odbiornik w szereg jakiś rezystor (np 330ohm) tak aby w przypadku gdy podłączymy sam Flip32 do komputera bez zasilania reszty modelu, nie wyrządzić szkody dla odbiornika RC który siłą rzeczy będzie dostawał na wejście dane z USB, a nie będzie przecież niczym zasilany. Przy takim połączeniu należy pamiętać że telemetria będzie aktywna tylko gdy model będzie uzbrojony. Moduł GPS powędrował na UART2, i niech sobie tam nadaje.

Ale co jeśli nie mamy odbiornika PPM, lub z innych powodów chcielibyśmy korzystać z odbiornika PWM? Na szczęście Cleanflight okazał się bardzo wyrozumiały w tej kwestii i dopuszcza wykorzystanie wybranych współdzielonych pinów PWM do innych celów, nie blokując przy tym całego portu wejściowego. To znaczy, że można na przykład podłączyć moduł GPS na pinach CH3 i CH4, z jednoczesnym odbiorem sygnałów PWM na pinach pozostałych. Wystarczy do pinów RX i TX przypisać odpowiednią funkcję, i ta będzie miała priorytet nad odbiorem PWM na tych kanałach. Do tego trzeba przesunąć resztę kabelków z odbiornika w bok o dwa miejsca, przy czym kanały 7 i 8 będą niewykorzystane – będą tylko dwa dodatkowe kanały do dyspozycji zamiast czterech, ale i na dwóch przy odrobinie kombinacji da się ustawić wszystkie potrzebne tryby lotu.

cleanflight_uart_port_set

Ok, czas powyższe skonfigurować w Cleanflight. W zakładce Ports znajdziemy ustawienia dla dostępnych portów (domyślnie tylko dwóch sprzętowych). Przy UART1 zaptaszkowałem Telemetry, prędkość pozostawiając na AUTO, ale można też ręcznie wskazać 9600. UART2 otrzymał tylko zadanie odbierania danych z GPS przy prędkości 57600. Save and Reboot.

cleanflight_telemetry_softserial_set

W zakładce Configuration pod pozycją Other Features zaznaczamy Telemetry, i to w zasadzie wszystko. Save and Reboot. W tym samym miejscu można znaleźć też funkcję SOFTSERIAL która odblokuje dwa dodatkowe porty programowe.

Konfiguracja i test telemetrii w radiu
er9x_frsky_telemPo wykonaniu modyfikacji radia (płytka+soft) można całość uruchomić i sprawdzić działanie. Aby włączyć ekran telemetrii, przewijamy ekrany główne przyciskami UP/DN (4 ekrany ze stanem radia + 1 ekran telemetrii). Ekran telemetrii jest tutaj podzielony na 4 dodatkowe ekrany, które można teraz przewijać przyciskami +/-. Dwa pierwsze ekrany zawierają tylko informacje o stanie RX/TX i nie są zbyt ciekawe, trzeci ekran to dane GPS oraz napięcia poszczególnych cel pakietu, a ostatni ekran to ekran konfigurowalny przez użytkownika.

flysky_turnigy_gpsNa ekranie konfigurowalnym można ustawić 6 dowolnych danych z listy obsługiwanych przez FrSky HUB (na miniaturce powyżej), aby to zrobić przechodzimy do menu Model Setup > Telemetry i przewijamy w dół do trzeciego ekranu ustawień o nazwie Custom Display i dokonujemy ustawień. Niestety całość nie jest zbyt intuicyjna, nie można zmieniać nazw dla danych (są trochę nieczytelne), a dodatkowo w wersji softu 819 wystepuje błąd przez który nie można wybrać i ustawić szóstej pozycji konfigurowalnego ekranu – ja to zrobiłem narzędziem eePe które już wcześniej z grubsza omawiałem. W radiu nie można także ustawić żadnych własnych alarmów, więc odbierane dane będą tylko wyświetlane. Być może w kolejnych wydaniach softu będzie taka możliwość. Kolejna miniaturka przedstawia dane GPS (współrzędne, wysokość, prędkość, oraz kierunek z magnetometru (Hdg = heading).

Konfiguracja i test telemetrii w telefonie

bt_pairNa początek należy odnaleźć i sparować moduł BT aparatury z naszym telefonem. Jeśli nie zmienialiśmy PINu to w przypadku HC06 standardowy to 1234.





frsky_dashboardFrSky Dashboard – bardzo lekka intuicyjna i prosta aplikacja, na ekranie można ustawić wyświetlanie dowolnych danych z FrSky HUB, można mieć zapisanych kilka kilka różnych ekranów dla kilku modeli. Aby zacząć, wchodzimy w menu ustawień i pozwalamy aplikacji na kontrolowanie modułu bluetooth, tak aby mogła go samodzielnie włączyć przy starcie i wyłączyć na koniec, oraz aby mogła się sama połączyć do ostatnio używanego urządzenia. W ten sposób korzystanie będzie prostsze bo aplikację wystarczy uruchomić i sama zajmie się resztą. Aby dodać ekran z danymi, dodajemy nowy model klikając ikonę edycji na górze. Wpisujemy jego nazwę, ustawiamy typ, i teraz można dodać wszystkie potrzebne nam kanały. W zależności od proporcji ekranu będą mieściły się wszystkie, lub będzie trzeba je przewijać. U siebie ustawiłem:
-RSSI (RSSIrx) – mierzony przez moduły radiowe
-Voltage (Hub: FAS-XX Voltage) – napięcie mierzone przez Cleanflight
-Current (Hub: FAS-XX Current) – prąd mierzony przez Cleanflight na pinie CH8
-Energy (Hub: Fuel) – zużyta energia w mAh liczona przez Cleanflight
-Altitude (Hub: Altitude) – wysokość nad poziomem gruntu z barometru, NIE Z GPS
-GPS Lat (Hub: GPS Latitude) – szerokość geograficzna, dane z GPS przez Cleanflight
-GPS Lon (Hub: GPS Longitude) -długość geograficzna, dane z GPS przez Cleanflight

frsky_dashboard_setNależy zwrócić uwagę na ustawienie pola precision – dokładność (a raczej rozdzielczość) – ile miejsc po przecinku. Dla napięcia i prądu wystarczą dziesiętne, dla współrzędnych trzeba ustawić liczby 6 miejsc po przecinku. Zaznaczając ikonę głośnika przy którejś z danych i załączeniu globalnego włącznika Cyclic Speaker, wybrane wartości będą czytane przez syntezator mowy po angielsku. W ustawieniach można ustalić interwał pracy syntezatora oraz autowłączanie czytania po starcie. Jeśli wybierzemy RSSI i napięcie to odczytywane dane będą brzmiały całkiem wyraźnie. Aplikacja wtedy może sobie pracować w tle przy wygaszonym ekranie. W menu (przycisk menu) pod „więcej” znajduje się pozycja „Map” która jednym kliknięciem przekazuje współrzędne GPS do mapy google w postaci markera, bardzo wygodne rozwiązanie w przypadku zguby. Szkoda że tej samej czynności nie da się wykonać dla innych map np. MAPS.ME która działa całkowicie offline. Przecież nie wszędzie gdzie będziemy będzie dostępny internet, a google maps bez niego nie zadziała. W planach twórcy jest dodanie m.in własnych alarmów dla dowolnego kanału, niestety aplikacja nie jest rozwijana od 2013 roku.

FRS_LoggerFRS Logger basic oraz FRS Logger pro – 17zł – aplikacja tworzona niejako jako następca FrSky Dashboard. Ociężała i nieintuicyjna, ale istnieje instrukcja obsługi, podobno niektórzy je czytają jak wszystkie próby zawodzą. Aplikację uruchamiałem kilkanaście razy z czego kilka razy mi się bez powodu zawiesiła, a to o kilka razy za dużo. Aplikacja umożliwia ustawienie alarmu dla dowolnego kanału, ale w wersji basic obsługuje tylko podstawowy FrSky, dopiero w płatnej wersji pro możliwa jest obsługa FrSky HUB. Niestety wersja basic była tak siermiężna że nawet nie wykrywała zerwania linku bluetooth, więc darowałem sobie jej zakup, chociaż aplikację można „zwrócić” i odzyskać swoje pieniądze jeśli w jakiś sposób nie spełni oczekiwań. Zwrócić w cudzysłowie, bo aplikacja jest tylko usuwana z naszego google play, a nie z naszego telefonu. Jeśli znajdę czas to przetestuję tą apkę i pojawi się tutaj aktualizacja.

Przekłamania danych telemetrii

frsky_telem_bugW moim przypadku występuje jeszcze problem który muszę namierzyć i wyeliminować. Mianowicie odbierane dane czasem (a w zasadzie dosyć często) przybierają wartości z kosmosu, np napięcie baterii wynosi tysiące volt, tak jak bym wleciał kopterem w jakąś linię SN :) Takie przekłamania występują zarówno na aparaturze jak i w telefonie, więc problem musi występować na pokładzie modelu, najprawdopodobniej kwarce Flip32 i OrangeRX są tak niefortunnie rozjechane, że występuje desynchronizacja uartu z zegarem procesora/procesorów, i część danych jest odbierana z krzakami. Niby nie przeszkadza, ale jeśli przyjdzie ustawiać jakieś alarmy to te mogą głupieć. W przypadku zerwania linku i stracenia modelu, ostatnie odebrane współrzędne GPS pozostają na obydwu odbiornikach telemetrii co jest bardzo dobrą funkcją, bo model bez trudu będzie można namierzyć na ich podstawie. A co jeśli ostatnie odebrane współrzędne będą obarczone błędem transmisji? No to dupa, dane będą warte tyle co nic, albo w przypadku prawidłowego odebrania tylko jednej współrzędnej będzie można się wzdłuż niej przejść i w ten sposób poszukać modelu. Jeśli problem uda mi się rozwiązać to wpis otrzyma aktualizację.


…multicoptery – spis wszystkich tematów

5.00 avg. rating (98% score) - 3 votes

Jeden komentarz

  1. Cześć,

    Czy udało Ci się ustalić powód przekłamań danych telemetrycznych wyświetlanych w FrSky Dashboard? Mam podobną sytuację.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę pozostawić te dwa pola tak jak są: