Skocz do zawartości

Naza Lite i Turnigy 9x a Failsafe


AndyCopter

Rekomendowane odpowiedzi

DJI Naza Lite to dość popularny kontroler lotu, tak jak i aparatura Turnigy 9x z odbiornikiem 9X8Cv2.

Jednak, używanie takiego zestawu do sterowania modelem jest dalece niewskazane. A to za sprawą braku programowalnego Failsafe dla zaniku sygnału w odbiorniku Turnigy 9X8Cv2. W efekcie zaniku takiego sygnału, Naza Lite ignoruje brak sygnału i nie włącza trybu Failsafe.

Skutki wiadome... model odlatuje w siną dal.

Dlatego rozwiązaniem jest wymiana modułu nadawczego w aparaturze na taki, który umożliwia pracę z odbiornikami dającymi się zaprogramować.

Można także od razu darować sobie używanie Turnigy 9x do sterowania modelem z kontrolerem DJI Naza Lite, kupując coś bardziej zaawansowanego.

Ale to wszystko kosztuje, więc czy można to zrobić inaczej ?

 

Można, dlatego przedstawię skuteczny i w miarę prosty sposób, aby pozbyć się tej niedogodności w Turnigy 9x.

 

Potrzebne do tego będą:

- moduł Arduino NANO lub Mini

- przewody do połączenia odbiornika RC z Arduino i Naza Lite

 

Osobiście wybrałem Arduino NANO, ze względu na wbudowany stabilizator napięcia i wygodne złącze USB do programowania http://abc-rc.pl/Arduino-NANO-V3-CH340 oraz do tego przewody do połączenia np takie http://abc-rc.pl/Zwroki-10szt-F-F

 

W modelu, układ połączony będzie wg poniższego rysunku

8712oq9.jpg

Celem tego rozwiązania, będzie "podpowiadanie" kontrolerowi Naza Lite, poprawnych wartości jakie powinny być przesłane i kiedy.

 

Jednak zaczniemy od przygotowania aparatury. W przykładzie poniżej jest Turnigy 9x w oprogramowaniem er9.

Wybieramy przełączniki do sterowania:

AUX3: (Mode Select)

N (ID0) - Manual

1 (ID1) - Atti

2 (ID2) - Gps

AIL:  Failsafe

H5zG05o.jpg

 

 

Ustawienie miksera

bLkeWs4.jpg

 

Montujemy zestaw i podłączamy przewody.

oOP1sMc.jpg

 

 

Gdy już wszystko jest przygotowane, wgrywamy program (poniżej) poprzez środowisko Arduino.

/*
  Failsafe module for DJI Naza Lite w/Turnigy 9X8Cv2
  
  @platform  Arduino NANO w/ATmega328
  @date 20150513
  @autor warp3r[at]wp.pl
*/
#include <Servo.h> 
Servo modeSwitch;

// Arduino Pin
const byte ledPin = 13;
const byte recPin = 3;
const byte djiPin = 2;

// Control Mode Switch
const byte pGPS = 127;      // GPS
const byte pATTI = 94;      // ATTI
const byte pMANUAL = 62;    // MANUAL
const byte pFAILSAFE = 150; // FAILSAFE

// temporary value
byte pos = 0;
byte last = 0;

byte max_FS = 3; // switching time in sec
int counterFS = 0;

int ledState = LOW;
long previousMillis = 0;
long interval = 500;

void setup() { 
  pinMode(ledPin, OUTPUT ); 
  pinMode(recPin, INPUT ); 
  modeSwitch.attach( djiPin ); 
} 

void loop() { 
  // Main
  int value = pulseIn( recPin, HIGH );   
  if ( (value >1000) and (value < 1100) ) { pos = pMANUAL; counterFS = 0;}
  else if ( (value >1400) and (value < 1600) ) { pos = pATTI; counterFS = 0;}
  else if ( (value >1800) and (value < 2100) ) { pos = pGPS; counterFS = 0;}
  else {  ++counterFS;}
  if ( counterFS > max_FS ) { pos = pFAILSAFE;}
  if (pos != last) {
    modeSwitch.write(pos);
    last = pos;
    delay(15);
  }

  // Led status
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;
    ledState = ( ledState == LOW ) ? HIGH : LOW;
    digitalWrite(ledPin, ledState);
  }
} // EOP

Program jest dość trywialny, więc nie będę omawiał zasady działania.

Gdyby z jakiś powodów nie właściwie były dobrane w Waszych przypadkach wartości dla wybranych trybów w DJI NAZAM Lite Assistant, należy dobrać własne wartości dla stałych w programie: pGPS, pATTI, pMANUAL i pFAILSAFE aby wybierając odpowiednie pozycje przełączników w aparaturze, właściwie było odwzorowane w programie Assistant.

T8fnhxS.jpg

 

W działaniu przedstawia się to następująco:

ustawiając przełącznik AUX3 w odpowiedniej pozycji, włącza się wybrany tryb w kontrolerze. Załączenie przełącznika AIL - niezależnie od stanu przełącznika AUX3, powoduje włączenie trybu Failsafe.

I najważniejsze: niezależnie od stanu przełączników, wyłączenie aparatury lub zanik sygnału, spowoduje włączenie trybu Failsafe po zadanym czasie.

Czas włączenia w kodzie powyżej ustawiany jest w zmiennej max_FS, który powoduje że po upływie określonych w zmiennej sekund, włączy się tryb Failsafe.

 

I to było by na tyle w temacie, aby z Turnigy 9x i fabrycznym odbiornikiem, sterować modelem poprzez kontroler DJI Naza Lite mając bezpieczny tryb FailsafeRx.

 

Orientacyjny koszt ~20PLN, pobór prądu ~0,04A, waga ~5gram, czas wykonania ~30min.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Właśnie czegoś takiego szukałem:)

 

Czy mógłbyś tylko dać jakiś bardziej czytelny schemat jak to podłączyć.

Chodzi mi o to gdzie pod odbiornik (który kanał jaki kabel) i gdzie pod kontroler naza.

Po pierwszej próbie z wyłączeniem radia miałem szczęście że moja 450 nie odleciała w siną dal, tylko pokrążyła sobie i jakoś spotkała się z matką ziemią:) (na szczęście obyło się bez strat).

 

Jak tylko podasz schemat robię zakupy i do dzieła:)

Odnośnik do komentarza
Udostępnij na innych stronach

Właśnie czegoś takiego szukałem:)

 

Czy mógłbyś tylko dać jakiś bardziej czytelny schemat jak to podłączyć.

Chodzi mi o to gdzie pod odbiornik (który kanał jaki kabel) i gdzie pod kontroler naza.

Po pierwszej próbie z wyłączeniem radia miałem szczęście że moja 450 nie odleciała w siną dal, tylko pokrążyła sobie i jakoś spotkała się z matką ziemią :) (na szczęście obyło się bez strat).

 

Jak tylko podasz schemat robię zakupy i do dzieła:)

 

Oczywiście.

Także długo szukałem, dlatego moja Naza Lite leżała odłogiem ponad rok. Na każdym z forów internetowych mogłem przeczytać : NIE DA SIĘ.

A więc do rzeczy, podłączenie do odbiornika 9X8Cv2 na kanał 6-8 (ważne), u mnie to kanał 7. W Naza Lite podłącza się pod wejście oznaczone "U".

Upraszczając, tak jak podłączyłeś (?) kanał sterowania trybami lotu z odbiornika do Nazy Lite, w to "połączenie" wstawiasz Arduino Nano.

Jedyny jak na razie problem jaki zauważyłem (a może to tylko drobna niedogodność ?), należy skalibrować wartości w kodzie Arduino dla Nazy pod własny zestaw.

 

Edit.

Do samego podłączenia Arduino Nano z odbiornikiem RC i Naza Lite, potrzebne są 4 przewody:

1. masa (najlepiej z Naza Lite) do pin GND w Arduino Nano

2. +5-6V (j.w.) do pin VIN w Arduino nano (NIE WOLNO PODŁĄCZYĆ POD WEJŚCIE 5V !)

3. wyjście sygnałowe odbiornika RC (kanał 6-8) z wejściem pin D3 w Arduino Nano

4. wejście sygnałowe Naza Lite "U" z wejściem pin D2 w Arduino Nano

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Moduł Arduino Nano posiada złącze USB, poprzez które można wygodnie zaprogramować go, a także i przeprogramować "w modelu".

Program powyższy jest dośc... hardcorowy, aby przeprowadzić kalibrację należy wprowadzać w kodzie programu dobierane wartości. Może być to czasem nieco uciążliwe.

Wygodniej było by popsłużyć się programem, do ustalenia wszystkich wartości.

Poniżej taki właśnie program, napisany w środowisku Processing dla Arduino ( https://processing.org/ ). Zarówno środowisko Processing jak i samo Arduino jest całkowicie bezpłatne.

 

A poniżej program w działaniu. Programowanie, czyli klikanie....

b4ElHea.jpg

 

i sprawdzenie czy przy wyłączonej aparaturze, załącza się Failsafe

 

mKYPyF2.jpg

 

Zauważyłem natomiast, że należy bezwzględnie pamiętać o kolejności włączania/wyłączania złącz usb.

Pod USB najpierw włączamy Naze, a dopiero później Arduino. Odłączać przewody USB należy w odwrotnej kolejności.

Powodem jest zasilanie.

Chociaż nie udało mi się jeszcze uszkodzić Arduino, to jednak zaopatrzę Arduino w dodatkową diodę prostowniczą aby po podłaczeniu zasilania z usb do Arduino, nie próbowało zasilać Nazy.

 

Formalniie moduł został ostatnio "oblatany" i sprawdził się doskonale.

Dodałem także nowy fragment kodu do modułu oświetlenia NLM2, i także sprawdził się doskonale. Jednak w przypadku NLM2, musiałem posłużyć się biblioteką SoftwareServo, ponieważ moduł jednocześnie pełni rolę sterownika oświetlenia i wyjścia sprzętowe PWM są już "zajęte".

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli Ktoś się zdecyduje na poprawę bezpieczeństwa w swoim modelu, to program w wersji 2.0 dla Arduino wraz z kodem programu dla Processing - wygodne GUI do ustawiania parametrów, prześlę mailem. Kod jest za duży aby wklejać tu w wątku.

Odnośnik do komentarza
Udostępnij na innych stronach

Na życzenie, instrukcja "krok po kroku" aby uruchomić program.

 

Pobranie programów

Ze stron projektów Arduino i Processing, pobieramy oprogramowanie dla swojego komputera. 

 

W przypadku Arduino, polecam wersję 1.0.x

oxpA9Ry.jpg

 

Natomiast program Processing, można pobrać w aktualnej wersji

 

H6F3XjF.jpg

 

Oprogramowanie powyższe, proszę pobierać WYŁĄCZNIE ze stron ich projektów.

Kod źródłowy programów zamieszczonych w wątku, należy zapisać w odrębnym katalogu, z którego będziemy wczytywać je do Arduino i Processing.

 

Gdy zainstalujemy już środowisko Arduino i Processing, przystępujemy do zaprogramowania naszej płytki Arduino Nano.

 

Przygotowanie środowiska Arduino

 

Wczytujemy zapisany kod żródłowy dla programu Arduino.

iDBln0z.jpg

 

Następnie wskazujemy jaką mamy płytkę Arduino

 

i3Ed6Jk.jpg

 

Wskazujemy rodzaj programatora (Arduino Nano posiada wbudowany)

 

UgyUsEs.jpg

 

Oraz wskazujemy PORT komunikacyjny z komputera

 

HcrJRds.jpg

 

Gdy już środowisko Arduino zostało "poinformowane" jaki typ płytki ma zaprogramować i którędy, zaczynamy "programowanie" modułu.

 

Programowanie Arduino

 

Proces kompilacji i załadowania odbywa się w tle, a jedyne co powinniśmy zrobić aby umieścić kod binarny w module, to wskazać w środowisku Arduino, aby załadować program do modułu.

5adhsAN.jpg

 

lub

 

LrdAR0O.jpg

 

Jeśli proces kompilacji i ładowania przebiegnie prawidłowo, w wyniku powinniście zobaczyć jak poniżej:

 

V2jCl0m.jpg

 

W tym momencie, program został załadowany-umieszczony w pamięci modułu Arduino Nano, i jest już gotowy do pracy.

Możemy już zakończyć pracę środowiska Arduino IDE.

Teraz przygotujemy program, który posiada wygodny interfejs do ustawienia Arduino dla współpracy z aparaturą i Nazą.

 

Przygotowanie programu GUI, Processing

 

Po uruchomieniu środowiska Processing, wczytujemy kod źródłowy programu GUI FS_Arduino, wybaczcie, na razie program nie ma innej nazwy ;-)

 

bViXtni.jpg

 

Po załadowaniu programu, koniecznie musimy wskazać w kodzie programu, z jakiego portu program będzie korzystał do komunikacji z modułem Arduino Nano.

Niestety, autorzy tego środowiska, nie wyposażyli programu w tak wygodny interfejs jak w przypadku Arduino IDE do wskazania portu do komunikacji z komputera.

Należy zrobić to samodzielnie w kodzie, co czasem może sprawić kłopot.

W moim kodzie źródłowym programu, odnajdź poniższy wiersz

 

Es2OHin.jpg

 

Numer portu zaznaczyłem kolorem żółtym. Zazwyczaj środowisko Processing, numeruje porty w kolejności od 0(zero). Jeśli w komputerze jak u mnie, jest już port COM1, a Arduino Nano poprzez port USB przedstawia się jako COM12, dla Processing jest to drugi port o numerze 1(jeden).

Jeśli wprowadzicie nieprawidłowy numer portu, program się nie uruchomi - nic złego. Wystarczy wpisać poprawny numer portu.

Należy także pamiętać, że podłączenie kontrolera Naza (Lite, M, M-V2) sprawi, że w komputerze pojawi się kolejny port COM.

I o ile posiadacie windows, kolejność portów COM poprzez USB, może ulec zmianie.

 

Jeśli powyższe mamy już "za sobą", uruchamiamy program

 

LiX6LEu.jpg

 

W efekcie powinniśmy zobaczyć jak poniżej

C5qhhlZ.jpg

 

Przy pierwszym uruchmieniu programu, tryby pracy mogą posiadać wartości 255. należy jes ustawić poprzez "strzałki". Wówczas pojawi się przycisk "SAVE" aby zapisać i zapamiętać te wartości w Arduino Nano.


Kod źródłowy programów dla Arduino i Processing.

 

Oba pliki w tym archiwum ZIP, są plikami tekstowymi:

FS_Arduino.pde to plik dla środowiska Processing

FS_Arduino.ino to plik dla środowiska Arduino

FS_Arduino.zip

  • Lubię to 2
Odnośnik do komentarza
Udostępnij na innych stronach

Jak opisane było już wcześniej, po przygotowaniu Arduino Nano, należy skalibrować wzjamnie Turnigy i Nazę z użyciem modułu.

 

Kalibracja

 

Włączamy Aparaturę. Ustawiamy właściwe wartości dla poszczególnych pozycji przełącznika trójpozycyjnego.

Do komputera podłączamy Nazę kablem USB, włączamy zasilanie modelu, a następnie podłączamy kabel USB do Ardiuno Nano - naszego modułu FailsafeRx.

Włączamy program FS_Arduino poprzez Processing oraz program Assistant dla Nazy.

 

Kalibracja Aparatury

Ustawiamy przełącznik w aparaturze na popzycję 0 ( ID0 ) będzie to tryb MANUAL.

Wskaźnik na panelu aplikacji w Processing, powinien podświetlić napis MANUAL. jeśli tak nie jest, ustawiamy w aparaturze taką wartość, aby napis był podświetlony.

Warto jest ustawić wartość "środkową" dla zakresu, w którym napis jest podświetlany.

Kalibracja Nazy

Teraz w dolnej części programu FS_Arduino w części "toNAZA", ustawiamy strzałkami obok podświetlonego napisu MANUAL, wartość, dla której będzie załączony tryb MANUAL w panelu aplilkacji DJI Naza Assistant.

 

Wartości zapisujemy do Arduino, klikając w przycisk z napisem SAVE, który się pojawi w prawym dolnym rogu aplikacji FS_Arduino.

Kalibrację powtarzamy dla każdego z trybów kolejnych: Atti oraz GPS i Failsafe.

 

FAILSAFE RX

Nadal w części "toNAZA", dla wartości wyświetlanej obok napisu Failsafe, wybieramy taką wartość (dowolna) aby w programie DJI NAZA Assistant, podświetlił sie napis Failsafe. Zapisujemy ustawioną wartość do Arduino klikając w przycisk SAVE.

 

Test, sprawdzenie

 

Odłączamy kable USB. Wyłączamy zasilanie modelu.

Test 1

Podłączamy kabel USB do MC Naza i zasilanie modelu. W programie Assistant, obserwujemy zachowanie trybów lotu, dla wybieranych pozycji przełącznika w aparaturze.

Wyłączamy aparaturę. Po upływie 3 sekund, powinien załączyć się tryb Failsafe.

Test 2

Odłączamy kable USB. Wyłączamy zasilanie modelu.

Podłączamy zasilanie modelu. W modelu, obserwujemy kolor diody sygnalilzującej tryb pracy, dla wybieranych pozycji przełącznika w aparaturze.

Wyłączamy aparaturę. Po upływie 3 sekund, powinien załączyć się tryb Failsafe a dioda sygnalizująca pracę, powinna błyskać światłem żółtym.

Odnośnik do komentarza
Udostępnij na innych stronach

Andy, mam do Ciebie jeszcze jedno pytanie. Z tego co zrozumialem to każde radio (odbiornik), które fabrycznie nie posiada funkcji failsafe można upgrade'ować tym modułem Arduino, na przykład radio, które posiadam FlySky FS-T6?

Odnośnik do komentarza
Udostępnij na innych stronach

Andy, mam do Ciebie jeszcze jedno pytanie. Z tego co zrozumialem to każde radio (odbiornik), które fabrycznie nie posiada funkcji failsafe można upgrade'ować tym modułem Arduino, na przykład radio, które posiadam FlySky FS-T6?

Tak, o ile sygnał na wyjściu z odbiornika, zanika z chwilą wyłączenia aparatury bądź podczas utraty zasięgu.

 

Polecam wówczas w kodzie źródłowym pliku FS_Arduino.pde (wiersz 90) odszukać poniższe:

  text( "RADIO",  55, 67);

i zamienić na:

  text( "FlySky FS-T6",  55, 67);

:)

 

 

Formalnie rzecz biorąc, odbiornik Turnigy 9X8Cv2 posiada tryb Failsafe dla zaniku sygnału z aparatury. Sęk tylko w tym, że Naza tego nie rozumie.

Stąd też i powyższe rozwiązanie, które informuje mało rozgarniętą Nazę, kiedy włączyć tryb Failsafe ;)

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 9 miesięcy temu...

Witam,

Sorki że troche odgrzebuje temat, ale mam naze lite oraz turnige 9x lecz z podstawowym softem, i nie wiem jak mam to zrobić na mojej turnidze poniewaz nigdzie nie moge znaleźć AIL(żeby ustawić). Ktoś może to robił na starym sofcie i mi podpowie?

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.