Konwerter telemetrii eLeReS - FrSky v2 by Scott
Moderatorzy: marbalon, moderatorzy2014, moderatorzy
Konwerter telemetrii eLeReS - FrSky v2 by 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:
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ę.
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:
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 ...
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
Drobna uwaga - zauwazylem ze nie robisz "stuffingu" dla 0x7E i 0x7D a wydaje mi sie ze powinienes.
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
Liczyłem na Twój udział w tym wątku. ;)pawelsky pisze:Drobna uwaga
Widziałem Twoje biblioteki i bardzo mi one pomogły. Jednak jestem za mało obcykany w temacie, żeby je w pełni ogarnąć.
Co masz na myśli pisząc "stuffingu" dla 0x7E i 0x7D?pawelsky pisze:zauwazylem ze nie robisz "stuffingu" dla 0x7E i 0x7D a wydaje mi sie ze powinienes.
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 ...
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
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.Scott pisze:Co masz na myśli pisząc "stuffingu" dla 0x7E i 0x7D? Całą transmisję w kierunku 9XR przetestowałem "organoleptycznie".
Tu masz to opisane (na poczatku sekcji 3.1)
http://www.frsky-rc.com/download/down.php?id=128
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...Scott pisze:Próbowałem korzystać z Twoich bibliotek, ale moja apka nie bardzo chciała wtedy cokolwiek wyświetlać.
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
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.pawelsky pisze:zauwazylem ze nie robisz "stuffingu" dla 0x7E i 0x7D a wydaje mi sie ze powinienes
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 ...
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
czyli rozumiem tx z eleresa idzie do D3 arduino?
oraz na jakiej wersji fw er9x to testujesz?
oraz na jakiej wersji fw er9x to testujesz?
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
To nie do konca tak, bo teraz tego stuffingu robisz troche za duzo.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).
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).
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
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
- 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
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
Tak jak pisalem, to pewnie dlatego ze Scott niepotrzebnie robi stuffing 0x5E/0x5D dla komunikatu 0xFE.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
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
Tak. Chyba że sobie zmienisz pin w Konwerter.h.lotpawel pisze:czyli rozumiem tx z eleresa idzie do D3 arduino?
Teraz mam er9x-r820lotpawel pisze:oraz na jakiej wersji fw er9x to testujesz?
Tak. Już to poprawiłem, ale o tym za chwile.brodziek pisze:- w obecnej wersji coś pomieszałeś i nie wyświetla ani RSSI ani RCQ
Wczytałem się nieco w kod er9x i znalazłem tam:brodziek pisze:- w poprzedniej wersji zanikało mi RCQ
Kod: Zaznacz cały
// A1/A2/RSSI values // From a scope, this seems to be sent every about every 35mS
Wcześniej dawała na zmianę 0 i 2.
Tak - rzeczywiście. Tu się trochę rozpędziłem. Usunąłem stuffing dla 0xFE.pawelsky pisze:to pewnie dlatego ze Scott niepotrzebnie robi stuffing 0x5E/0x5D dla komunikatu 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 ...
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
No, trzeba pamietac ze to 9600 baud czyli max 1200 bajtow na sekunde.Scott pisze:Zastosowałem się do tego i już nie znika TSSI. Działą też poprawnie TmOK, mówiąca o poprawności odebranej telemetrii.
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.
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
Lepiej jednak to poprawić tak jak powinno być, bo jak dojdzie jeszcze kilka danych to może być problem.pawelsky pisze: ... czasy dla frame 1 i 2 sa odwrotnie, ale jak sie wyrabia to OK.
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 :
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ę?
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
Dziś trochę prac z oscyloskopem.
Czas wysłania pakietu typu userData około 10ms
Czas wysłania pakietu typu linkData poniżej 10ms
Tak wygląda wysyłana w tej chwili pełna ramka danych.
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 ;)
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.
Czas wysłania pakietu typu userData około 10ms
Czas wysłania pakietu typu linkData poniżej 10ms
Tak wygląda wysyłana w tej chwili pełna ramka danych.
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 ;)
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:brodziek pisze:Jedyna uwaga, to nie zerują żadne się wskazania jeśli braknie telemetrii (wyłączenie odbiornika).
Kod: Zaznacz cały
{00}{00}{E0}{00}{E0}{00}{00}{E0}{E0}{E0}{00}{00}{00}{E0}
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 ...
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
No to jak nie ma telemetrii, wysyłaj może normalnie wszystkie ramki ale wyzeruj wartości (prócz GPS'a)?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:To podtrzymuje wyświetlanie parametrów - nawet już nie nadawanych ....Kod: Zaznacz cały
{00}{00}{E0}{00}{E0}{00}{00}{E0}{E0}{E0}{00}{00}{00}{E0}
To jest taki urok firmware nadajnika - być może celowo ma pamiętać ostatnie odebrane parametry telemetrii, lub po prostu bug.Inna dziwna rzecz - nawet jak wypnę kabelek z aparatury - to znika wszystko poza RSSI, A1, A2.
Kurcze to mi umknęło - jeszcze dziś sprawdzę jak się wyświetlaHdop - to nawet już wysyłam, ale się nigdzie nie wyświetla - trzeba czekać na nowy telemetry screen
Ogranicz do 9 max. liczbę wyświetlanych, nie musisz wiedzieć czy ich jest więcej - w tym wypadku bardziej istotny będzie HDOPIlość satelit GPS i FiX - nawet OK, do zrobienia, ale co jak mi znajdzie 16 sat ?
[/quote]Tryby lotu - bez problemu.
Heading też bez problemu.
Alt_baro będę robił teraz.
Gites
tu tylko podpowiem: haversine formuła - są w sieci gotowe wzoryOdległość - tu muszę się w koordynatach podszkolić ;)
Generalnie to wszystko pod nowy ekran telemetrii.
Re: Konwerter telemetrii eLeReS - FrSky v2 by Scott
Taki miałem plan... i już tak to działa. Do przetestowania.brodziek pisze:No to jak nie ma telemetrii, wysyłaj może normalnie wszystkie ramki ale wyzeruj wartości (prócz GPS'a)?
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.
HDop dopiero wczoraj zrobiłem ;)brodziek pisze:Kurcze to mi umknęło
Easy Star II, 450, 250, 120, 90, 33 ...