MinimOSD dla eLeReS AutoPilot
Moderatorzy: moderatorzy2014, moderatorzy
Będzie bida... Tak na szybko dopisałem co nieco do wysyłania w swoim formacie i z ostatniego kilobajta miejsca we flashu zostało 400 bajtów. Tak że ze strony AP nie mam możliwości poszaleć i dostosowywać się do formatu innych OSD. Pozostaje zrobienie specjalizowanego softu dla OSD.pma_ pisze:Jak zrobisz protokół od Remzibiego to jest zaimplementowany w wersji dla MatrixPilota :)
Podeślę ci majlem co jest obsługiwane :)
Pzdr. -----MIŚ-----
Jutro ?pma_ pisze:Tylko hmmm kiedy
Tu masz protokół:
Kod: Zaznacz cały
void osd_send(void)
{
USART_Transmit('$'); //Naglowek ($o) - małe o
USART_Transmit('o');
crc = 1;
//odtąd kodowane w HEX (bajt to 00-FF) - przy wielobajtowych najpierw najmlodszy bajt czyli 0x3C3456FE wysyłane jako string "FE56343C"
uart_send32(latitude); //LAT 10e6 deg, 32bit signed
uart_send32(longitude); //LON 10e6 drg, 32bit signed
uart_send16((int16_t)(wysokosc_npm-HomeAlt)); //wysokosc relatywna w metrach, 16bit signed
uart_send16(kurs); //kurs lotu w stopniach (0..359), 16bit unsigned
uart_send16(GPS_distanceToHome); //odleglosc od domu w metrach, 16bit unsigned
uart_send16(GPS_direction); //kurs do domu w stopniach (-180..+180), 16bit signed
USART_HexByte(predkosc); //predkosc w km/h, 1 bajt
USART_HexByte(sat_no | (GPS_FIX_HOME<<7) | GPS_FIX<<6)); //ilośc satelit + bit6 oznacza że jest FIX, bit7 oznacza zapisanie bazy, 1 bajt
USART_HexByte(hdop); //hdop, 1 bajt w 0.1 (0.1-25.5)
USART_HexByte(CurrentMode | (armed<<4) | (THR_BELOW_MIN<<5)); //tryb lotu - 0=Manual, 1=ACRO, 2=LEVEL, 3=ALTHOLD, 4=RTH, 5=POSHOLD, 6=RTH_DSC, 7=FAILSAFE, | 0x10=ARMED | 0x20=THROTTLE powyżej 0, - 1 bajt
USART_HexByte(RSSI); //RSSI (0-100), 1 bajt
USART_HexByte(BATT_VOLT); //Napięcie w 0.1V, 1 bajt
uart_send16(CURRENT); //Prąd w 0.1A, 16bit unsigned
uart_send16(angle[PITCH]); //Pitch w 0.1 stopnia, 16bit signed
uart_send16(angle[ROLL]); //Roll w 0.1 stopnia, 16bit signed
uart_send16(pressure); //cisnienie w 0.01mBar - 50000 - 16bit insigned (50000 = 1000mBar)
USART_HexByte(RC_CHANS_STATE); // stan kanalow RC od 7-10 - po dwa bity na kanał, 00=Srodek, 01=Min, 10=Max, najstarsze bity=CH7, najmlodsze=CH10 - 1 bajt
USART_HexByte(THEMP); //Temperatura w stopniach + 90 (0 stopni = 90)
USART_HexByte(256-crc); // crc, po prawidlowym odbiorze paczki musi wynosic 0
// koniec kodowania w hex - razem 32 bajty czyli 64 znaki ASCII
USART_Transmit(13); //CR LF - koniec paczki
USART_Transmit(10);
}
RSSI: najstarszy bit (czyli 0x80) sygnalizuje prędkość powyżej 255km/h. Czyli RSSI robimy & 0x7F, oraz jeśli (RSSI & 0x80)==0x80 to predkosc = 256+predkosc.
Tryb lotu: ustawienie bitu 6 ( | 0x40) oznacza że chwilowo zablokowano trzymanie wysokości z powodu wychylenia drążka PITCH - u mnie na OSD miga AH - AltHold chwilowo zawieszony.
Chyba o niczym nie zapomniałem...
CRC liczone jako dodawanie każdego wysyłanego bajta danych (bez nagłówka i CRLF) do CRC (modulo 256).
Przy odbiorze dodanie do siebie wszystkich bajtów (wraz z bajtem CRC) plus początkowe 1 musi dać wynik 0.
Całość wysyłana 10x na sekundę od momentu prawidłowego zainicjowania GPS'a. UART na 38400baud oczywiście. No i będzie działać niezależnie od tego czy GPS to NMEA czy UBLOX.
Ostatnio zmieniony poniedziałek 29 gru 2014, 18:15 przez miś, łącznie zmieniany 10 razy.
Pzdr. -----MIŚ-----
Ok, koncepcja przetestowana. Działa. GPS olewa tą transmisję, testowałem na Glonasie MTK oraz na UBLOX'ie. Tak więc jak ktoś napisze parser danych do OSD to będzie można podpiąć takowe OSD do eleres AP. Przekazywane są praktycznie wszystkie dostępne dane włącznie z horyzontem, RSSI, napięciem baterii, prądem z czujki prądu, trybami lotu, danymi z GPS, a nawet HDOP GPS'a jakby ktoś bardzo tego potrzebował.
Pzdr. -----MIŚ-----
Lenistwo jest motorem postępu
To jest z symulatora więc nie do końca uda to realny latawiec.
Potrzebny jest odważny do sprawdzenia :) Główny potencjalny problem to strzałki i kurs.
Używa się tego genialnie prosto, pobieramy GUI (CT Tool) od minimOSD extra, wgrywamy hex'a FontUpload.hex i fonty, potem wgrywamy normalnego hexa, ustawiamy layout i tyle.
https://code.google.com/p/minimosd-extra/downloads/list
To jest z symulatora więc nie do końca uda to realny latawiec.
Potrzebny jest odważny do sprawdzenia :) Główny potencjalny problem to strzałki i kurs.
Używa się tego genialnie prosto, pobieramy GUI (CT Tool) od minimOSD extra, wgrywamy hex'a FontUpload.hex i fonty, potem wgrywamy normalnego hexa, ustawiamy layout i tyle.
https://code.google.com/p/minimosd-extra/downloads/list
samolot max 4579/1293 analog, DJI do końca zasięgu :)
coper max 1729(na 5.8)
coper max 1729(na 5.8)
No i nie przeniosłeś najważniejszej części :) czyli mojego postamiś pisze:Wydzieliłem.
Wywody na temat minima do eLeReSa są tu: http://rc-fpv.pl/viewtopic.php?t=22583
samolot max 4579/1293 analog, DJI do końca zasięgu :)
coper max 1729(na 5.8)
coper max 1729(na 5.8)
Moja culpa zapomniałem link do hex'ów i fontów, o ja nie powiem co jestemmiś pisze:Przecież tam dales linka do oryginalnego softu dla minima z MavLinkiem, więc toto nie będzie działać z AP.pma_ pisze:No i nie przeniosłeś najważniejszej części :) czyli mojego posta
Tu ejst wszystko co trza
https://www.dropbox.com/sh/334g9caxy1cu ... AxB2a?dl=0
samolot max 4579/1293 analog, DJI do końca zasięgu :)
coper max 1729(na 5.8)
coper max 1729(na 5.8)
Chętnie w wolnej chwili potestuję bo leży na półce złożony model właśnie na AP Eleres z podpiętym minimOSD.
Jak w tej wersji softu podpiąć fizycznie minima jak w eleresie mam wpięty MPU i GPS ?
Co prawda minim daje radę na sofcie "samodzielne OSD" ale jeśli Miś macza w czymś łapy to już mi się podoba :)
Jak w tej wersji softu podpiąć fizycznie minima jak w eleresie mam wpięty MPU i GPS ?
Co prawda minim daje radę na sofcie "samodzielne OSD" ale jeśli Miś macza w czymś łapy to już mi się podoba :)
Wystarczy przepiąć linię RX od minima z pinu RX eleresa na pin TX. Dane do OSD zaczynają lecieć dopiero wtedy jak eleres zainicjuje GPS'a, czyli jak zacznie mrugać zielona dioda na eleresie.
Daj mi na PW swój email to poślę Ci soft AP do testów.
Oczywiście jakby było coś nie halo, to przepinając ten jeden przewód, i wracając z softem minima do starego wrócisz do aktualnego stanu. Softu w eleresie nie będziesz musiał cofać.
Daj mi na PW swój email to poślę Ci soft AP do testów.
Oczywiście jakby było coś nie halo, to przepinając ten jeden przewód, i wracając z softem minima do starego wrócisz do aktualnego stanu. Softu w eleresie nie będziesz musiał cofać.
Pzdr. -----MIŚ-----