Konwerter telemetrii eLeReS - FrSky v2 by Scott

Autorskie projekty naszych użytkowników

Moderatorzy: marbalon, moderatorzy2014, moderatorzy

Awatar użytkownika
Scott
Posty: 176
Rejestracja: poniedziałek 27 paź 2014, 10:01
Lokalizacja: Opole

Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: Scott »

Tytułem wstępu:
Napisałem jakiś czas temu prosty konwerter telemetrii z eLeReSa do FrSky.
Wspominałem o nim w wątku "TURNIGY 9XR..." i "Telemetria z APM/Pixhawk na 9XR-PRO przez eLeReSa"

Podłączając go pomiędzy wyjście eLeReSa a wejście telemetrii w aparaturze miałem kilka parametrów na wyświetlaczu aparatury.

Mam 9XR i na niej było to testowane.
Oczywiście 9XR musi być przerobiona do odbierania telemetrii. Więcej szczegułów np tutaj: http://forum.turnigy9xr.com/converting- ... -t362.html
Musi mieć też firmware wspierające telemetrię, np er9x.

Był to konwerter napisany w Bascomie. Trochę na zasadzie "u mnie działa więc jest dobre".

Po nieudanych próbach uruchomienia tego przez kilku kolegów z forum postanowiłem przepisać to na Arduino.

Łatwiej to wgrać, łatwiej podłączyć. Żadnych FuseBitów. Nie trzeba grzebać w elektronice - wgrywasz, łączysz 4 kabelki i działa. :) Taka jest teoria ...


Teraz konkrety:
- Projekt jest pod adresem: https://github.com/Scott7777/Konwerter_eLeReS_FrSky.
- Trzeba ściągnąć zip, rozpakować i otworzyć w Arduino.
- W Konwerter.h zmieniamy według potrzeby parametry konfiguracji.
Defaultowo telemetria odbierana jest na pinie 3 (D3) z prędkością 57600, nadawana jest na pinie 2 (D2) z prędkością 9600. Tak działa to u mnie.
- Wgrywamy do arduino. Ja używam Arduino Pro Mini (Atmega 328p, 5V 16MHz).
- Na sprzętowym COMie Arduino można podejrzeć komunikaty przedstawiające bieżący stan konwertera.
Najprościej poprzez kliknięcie "Narzędzia->Szeregowy monitor" w Arduino i w prawym dolnym rogu okienka ustawienie prędkości 57600baud.

Jeśli komuś działa - piszcie.
Jeśli nie działa - postaram się pomóc.
Jeśli coś miałoby działać inaczej - czekam na propozycje.

Jest to projekt DIY. Nie robię płytek, nie wysyłam, nie sprzedaję.

Nie jestem programistą i jest to moje pierwsze podejście do Arduino, tak więc wyrozumiałość będzie wskazana :)

Integracja z eLeReSem:
ObrazekObrazek
ObrazekObrazek
Obrazek

cdn.

13.03.2016:
W "Narzędzia->Szeregowy monitor" można od teraz symulować komunikaty z eLeReSa.
Wysyłając np.: TEST:RSSI=091 RCQ=075 U=12.2V I=00.7A h=0500 rozpoczynamy ciągłe odbieranie tych parametrów.
Wysyłając TEST:STOP kończymy symulację.
Ostatnio zmieniony poniedziałek 14 mar 2016, 23:59 przez Scott, łącznie zmieniany 2 razy.
Easy Star II, 450, 250, 120, 90, 33 ...
Awatar użytkownika
pawelsky
Posty: 9768
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: pawelsky »

Drobna uwaga - zauwazylem ze nie robisz "stuffingu" dla 0x7E i 0x7D a wydaje mi sie ze powinienes.
Awatar użytkownika
Scott
Posty: 176
Rejestracja: poniedziałek 27 paź 2014, 10:01
Lokalizacja: Opole

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: Scott »

pawelsky pisze:Drobna uwaga
Liczyłem na Twój udział w tym wątku. ;)
Widziałem Twoje biblioteki i bardzo mi one pomogły. Jednak jestem za mało obcykany w temacie, żeby je w pełni ogarnąć.
pawelsky pisze:zauwazylem ze nie robisz "stuffingu" dla 0x7E i 0x7D a wydaje mi sie ze powinienes.
Co masz na myśli pisząc "stuffingu" dla 0x7E i 0x7D?
Całą transmisję w kierunku 9XR przetestowałem "organoleptycznie". Próbowałem korzystać z Twoich bibliotek, ale moja apka nie bardzo chciała wtedy cokolwiek wyświetlać.
Easy Star II, 450, 250, 120, 90, 33 ...
Awatar użytkownika
pawelsky
Posty: 9768
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: pawelsky »

Scott pisze:Co masz na myśli pisząc "stuffingu" dla 0x7E i 0x7D? Całą transmisję w kierunku 9XR przetestowałem "organoleptycznie".
Mniej wiecej to samo co robisz dla 0x5E i 0x5D - 0x7E zastepujesz para 0x7D 0x5E a 0x7D para 0x7D 0x5D (oczywiscie z wylaczeniem poczatkowego i koncowego 0x7E). Zeby to sprawdzic musisz w strumieniu danych dac takie wartosci zeby pojawilo sie 0x7E lub 0x7D - obawiam sie ze bez stuffingu w takiej sytuacji 9XR pogubi sie na parsowaniu takiego pakietu.

Tu masz to opisane (na poczatku sekcji 3.1)
http://www.frsky-rc.com/download/down.php?id=128
Scott pisze:Próbowałem korzystać z Twoich bibliotek, ale moja apka nie bardzo chciała wtedy cokolwiek wyświetlać.
Moje bibioteki przystosowane sa do nadawania po stronie odbiornika, wiec sa to tylko paczki danych 0x5E ...... 0x5E. Zeby dzialalo po stronie nadajnika trzeba to podzielic na paczki user data i ubrac w 0x7E 0xFD ... 0x7E (czyli to co wewnetrznie robi sam odbiornik). Kiedys to dorobie...
Awatar użytkownika
Scott
Posty: 176
Rejestracja: poniedziałek 27 paź 2014, 10:01
Lokalizacja: Opole

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: Scott »

pawelsky pisze:zauwazylem ze nie robisz "stuffingu" dla 0x7E i 0x7D a wydaje mi sie ze powinienes
Masz rację. Nie zwróciłem na to wcześniej uwagi, ale nie tylko nie robiłem "stuffingu" dla 0x7E i 0x7D, ale też nie robiłem go wcale dla sendLinkData - gdzie wysyłam RSSI, napięcie i prąd.
Miałem przez to problem z wysyłaniem napięcia w modelu powyżej 12,4V (prawdopodobnie nie tylko powyżej tej wartości). Po zastosowaniu Twojej rady... wszystko wysyła mi się tak jak powinno. ;)
Poprawiłem kod. Dzięki.
Easy Star II, 450, 250, 120, 90, 33 ...
Awatar użytkownika
lotpawel
Posty: 918
Rejestracja: wtorek 31 gru 2013, 01:49
Lokalizacja: Ruda Śląska

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: lotpawel »

czyli rozumiem tx z eleresa idzie do D3 arduino?
oraz na jakiej wersji fw er9x to testujesz?
Awatar użytkownika
pawelsky
Posty: 9768
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: pawelsky »

Scott pisze:Masz rację. Nie zwróciłem na to wcześniej uwagi, ale nie tylko nie robiłem "stuffingu" dla 0x7E i 0x7D, ale też nie robiłem go wcale dla sendLinkData - gdzie wysyłam RSSI, napięcie i prąd.
Miałem przez to problem z wysyłaniem napięcia w modelu powyżej 12,4V (prawdopodobnie nie tylko powyżej tej wartości).
To nie do konca tak, bo teraz tego stuffingu robisz troche za duzo.

Stuffing 0x7E/0x7D nalezy robic dla danych wszystkich komunikatow ktore wysylasz (w Twoim przypadku ID 0xFE i 0xFD). Stuffing 0x5E/0x5D tylko dla danych z komunikatu USER DATA (czyli ID 0xFD).
brodziek
Posty: 430
Rejestracja: wtorek 08 sty 2013, 09:08
Lokalizacja: Śląsk

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: brodziek »

Trochę potestowałem i tak:
- w poprzedniej wersji zanikało mi RCQ wszystkie inne dane szły poprawnie,
- w obecnej wersji coś pomieszałeś i nie wyświetla ani RSSI ani RCQ
Awatar użytkownika
pawelsky
Posty: 9768
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: pawelsky »

brodziek pisze:Trochę potestowałem i tak:
- w poprzedniej wersji zanikało mi RCQ wszystkie inne dane szły poprawnie,
- w obecnej wersji coś pomieszałeś i nie wyświetla ani RSSI ani RCQ
Tak jak pisalem, to pewnie dlatego ze Scott niepotrzebnie robi stuffing 0x5E/0x5D dla komunikatu 0xFE.
Awatar użytkownika
Scott
Posty: 176
Rejestracja: poniedziałek 27 paź 2014, 10:01
Lokalizacja: Opole

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: Scott »

lotpawel pisze:czyli rozumiem tx z eleresa idzie do D3 arduino?
Tak. Chyba że sobie zmienisz pin w Konwerter.h.
lotpawel pisze:oraz na jakiej wersji fw er9x to testujesz?
Teraz mam er9x-r820
brodziek pisze:- w obecnej wersji coś pomieszałeś i nie wyświetla ani RSSI ani RCQ
Tak. Już to poprawiłem, ale o tym za chwile.
brodziek pisze:- w poprzedniej wersji zanikało mi RCQ
Wczytałem się nieco w kod er9x i znalazłem tam:

Kod: Zaznacz cały

// A1/A2/RSSI values // From a scope, this seems to be sent every about every 35mS 
Zastosowałem się do tego i już nie znika TSSI. Działą też poprawnie TmOK, mówiąca o poprawności odebranej telemetrii.
Wcześniej dawała na zmianę 0 i 2.
pawelsky pisze:to pewnie dlatego ze Scott niepotrzebnie robi stuffing 0x5E/0x5D dla komunikatu 0xFE.
Tak - rzeczywiście. Tu się trochę rozpędziłem. Usunąłem stuffing dla 0xFE.
Niestety większym problemem było wysyłanie dla LINKDATA 2 bajtów na każdy bajt danych. ;)

Teraz działa to dużo lepiej.
Easy Star II, 450, 250, 120, 90, 33 ...
Awatar użytkownika
pawelsky
Posty: 9768
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: pawelsky »

Scott pisze:Zastosowałem się do tego i już nie znika TSSI. Działą też poprawnie TmOK, mówiąca o poprawności odebranej telemetrii.
No, trzeba pamietac ze to 9600 baud czyli max 1200 bajtow na sekunde.

Tak przy okazji to oryginalny hub FrSky wysyla poszczegolne dane w nastepujacych odstepach czasowych:
Frame 1 (acc, alt, temp, volt, curr, rpm) - co 200ms
Frame 2 (cog, lat, lon, speed, gps alt, fuel) - co 1s
Frame 3 (date, time) - co 5s

U Ciebie czasy dla frame 1 i 2 sa odwrotnie, ale jak sie wyrabia to OK.
brodziek
Posty: 430
Rejestracja: wtorek 08 sty 2013, 09:08
Lokalizacja: Śląsk

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: brodziek »

pawelsky pisze: ... czasy dla frame 1 i 2 sa odwrotnie, ale jak sie wyrabia to OK.
Lepiej jednak to poprawić tak jak powinno być, bo jak dojdzie jeszcze kilka danych to może być problem.

Teraz Raport :-) :
RSSI - ok
RCQ - ok
GPS koordynaty - ok
GPS alt - ok
GPS speed - ok
U odbiornika - ok
Heading??? to leci chyba z GPS'a, więc nie jestem w stanie porządnie przetestować na parapecie

Jedyna uwaga, to nie zerują żadne się wskazania jeśli braknie telemetrii (wyłączenie odbiornika).

A teraz lista życzeń jeśli można:-D :

Napięcie, prąd przesyłane jako dane z FAS:
(0x28, current);
(0x3A, voltageBD);
(0x3B, voltageAD);

Hdop:
(0x0D, Hdop);

FC rozbrojony/uzbrojony
(0x1D, armed); //extra id dodany w dla mavlink screen - wartość 128 to uzbrojony, każda inna to rozbrojony

Ilość satelit GPS i FiX :
(0x05, temperature2);
Fix wysyłany jako pierwsza cyfra "temperature2": 0-NoGPS / 1-Nofix / 2-Fix2d /3-Fix3d
Druga cyfra "temperature2" to ilość satelit
np.:numer 38 to 3D fix i 8 sat, numer 04 to brak fix'a i 4 sat

Tryby lotu (narazie jest jak poniżej, ale nie wiem co jeszcze MikeB namiesza w er9x)
(0x02, temperature1);

0 "STAB"
1 "ACRO"
2 "A-Hold"
3 "AUTO"
4 "GUIDED"
5 "LOITER"
6 "RTL"
7 "CIRCLE"
8 "MODE8"
9 "LAND"

Heading gdy FC rozprojony działa tak jak teraz, gdy FC uzbrojony zapamiętuje aktualną wartość jako bazową i względem niej wskazuje orientację przodu modelu.

A w przyszłości może jeszcze:
Odległość do home liczona z koordynat GPS
(0x0B, distance);
iWysokość baro:
(0x10, alt_baro);

Dasz radę?
Awatar użytkownika
Scott
Posty: 176
Rejestracja: poniedziałek 27 paź 2014, 10:01
Lokalizacja: Opole

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: Scott »

Dziś trochę prac z oscyloskopem.

Czas wysłania pakietu typu userData około 10ms
Obrazek

Czas wysłania pakietu typu linkData poniżej 10ms
Obrazek

Tak wygląda wysyłana w tej chwili pełna ramka danych.
ObrazekObrazekObrazek
LinkData wysyłam co 200ms. UserData co 800ms (wysyłanie co sekundę powodowało u mnie mruganie danych na wyświetlaczu)
Jak widać UserData zajmuje około połowy czasu pomiędzy kolejnymi linkData.

Musiałem zmienić brędkość portu DEBUG na 57600, bo wysłanie tego wszystkiego na 19200 wykraczało poza 200ms ;)
brodziek pisze:Jedyna uwaga, to nie zerują żadne się wskazania jeśli braknie telemetrii (wyłączenie odbiornika).
Z tym jeszcze nie wiem o co chodzi. Nawet jak nic już nie wysyłam to na port idzie co chwile coś w tym stylu:

Kod: Zaznacz cały

{00}{00}{E0}{00}{E0}{00}{00}{E0}{E0}{E0}{00}{00}{00}{E0}
To podtrzymuje wyświetlanie parametrów - nawet już nie nadawanych ....
Inna dziwna rzecz - nawet jak wypnę kabelek z aparatury - to znika wszystko poza RSSI, A1, A2.

Co do listy życzeń - wszystko można ... ale ... ;)

Napięcie, prąd przesyłane jako dane z FAS - temu się przyjrzę
Hdop - to nawet już wysyłam, ale się nigdzie nie wyświetla - trzeba czekać na nowy telemetry screen
Ilość satelit GPS i FiX - nawet OK, do zrobienia, ale co jak mi znajdzie 16 sat ?
Tryby lotu - bez problemu.
Heading też bez problemu.
Odległość - tu muszę się w koordynatach podszkolić ;)
Alt_baro będę robił teraz.
Easy Star II, 450, 250, 120, 90, 33 ...
brodziek
Posty: 430
Rejestracja: wtorek 08 sty 2013, 09:08
Lokalizacja: Śląsk

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: brodziek »

Scott pisze:Z tym jeszcze nie wiem o co chodzi. Nawet jak nic już nie wysyłam to na port idzie co chwile coś w tym stylu:

Kod: Zaznacz cały

{00}{00}{E0}{00}{E0}{00}{00}{E0}{E0}{E0}{00}{00}{00}{E0}
To podtrzymuje wyświetlanie parametrów - nawet już nie nadawanych ....
No to jak nie ma telemetrii, wysyłaj może normalnie wszystkie ramki ale wyzeruj wartości (prócz GPS'a)?
Inna dziwna rzecz - nawet jak wypnę kabelek z aparatury - to znika wszystko poza RSSI, A1, A2.
To jest taki urok firmware nadajnika - być może celowo ma pamiętać ostatnie odebrane parametry telemetrii, lub po prostu bug.
Hdop - to nawet już wysyłam, ale się nigdzie nie wyświetla - trzeba czekać na nowy telemetry screen
Kurcze to mi umknęło - jeszcze dziś ;-) sprawdzę jak się wyświetla
Ilość satelit GPS i FiX - nawet OK, do zrobienia, ale co jak mi znajdzie 16 sat ?
Ogranicz do 9 max. liczbę wyświetlanych, nie musisz wiedzieć czy ich jest więcej - w tym wypadku bardziej istotny będzie HDOP
Tryby lotu - bez problemu.
Heading też bez problemu.
Alt_baro będę robił teraz.
[/quote]
Gites :-)
Odległość - tu muszę się w koordynatach podszkolić ;)
tu tylko podpowiem: haversine formuła - są w sieci gotowe wzory

Generalnie to wszystko pod nowy ekran telemetrii.
Awatar użytkownika
Scott
Posty: 176
Rejestracja: poniedziałek 27 paź 2014, 10:01
Lokalizacja: Opole

Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott

Post autor: Scott »

brodziek pisze:No to jak nie ma telemetrii, wysyłaj może normalnie wszystkie ramki ale wyzeruj wartości (prócz GPS'a)?
Taki miałem plan... i już tak to działa. Do przetestowania.

Wysokość z barometru też już jest. Do przetestowania również. Na biurku wydaje się, że działa.
Pokazuje wysokość npm. W aparaturze można sobie to wyzerować i pokazuje wtedy względnie z miejsca gdzie stoimy.
brodziek pisze:Kurcze to mi umknęło
HDop dopiero wczoraj zrobiłem ;)
Easy Star II, 450, 250, 120, 90, 33 ...
ODPOWIEDZ