FrSky telemetrija (2 dalis)

Prieš pajungdamas siųstuvą prie kompiuterio, pasižiūrėjau oscilografu, ar tikrai iš RS232 eina duomenys, ir kokie ten loginiai lygiai. Pasirodo ten ne 3V ir ne 5V, kaip galima būtų tikėtis, ten yra tikras COM portas (lygiai +12V -12V). Keistas sprendimas, juk šis portas dažniausiai yra jungiamas prie mikrokontrolerio, todėl reikia lygių konverterio. Bet yra kaip yra. Pasidariau lygių keitiklį su pora tranzistorių.

Duomenys iš imtuvo matosi. Pastoviai transliuojama RSSI (ryšio signalo lygiai) ir dviejų analoginių įėjimų reikšmės. Analoginių įėjimų maksimali galima įtampa – 3,3V. Matavimas – 255 lygiai. Tai nedaug, bet dauguma atvejų tokio tikslumo pilnai užtenka. Kol imtuvas negauna jokių duomenų į RS232 portą, jokių duomenų netransliuojama. Pradžiai pabandžiau pasijungti mikrokontrolerį, parašiau paprastutę programą , kuri per RS232 perdavinėja „Hello world“ tipo pranešimą. :) Pranešimas normaliai perduodamas, kompiuteryje matosi. Dar reikia paminėti, kad imtuvo RS232 yra invertuotas. Nežinau kam tai, bet to negalima pamiršti, kitaip niekas neveiks.

Kaip jau minėjau visi pačio FrSky gaminami davikliai jungiasi į HUB‘ą, kuris jų duomenis paverčia į specialų protokolą, kurį gali suprasti FrSky modulis su LCD ekranu, kuris ir parodo visus duomenis.

Kadangi aš neketinu pirkti šio modulio, tai pats HUB‘o protokolas manęs nelabai ir domina. Pažiūrėjau tik susipažinimo tikslais.

Perdavinėjant duomenis reikia kiek įmanoma sumažinti jų kiekį ir perdavinėti su tarpais. Nereikia pamiršti, kad ryšio kanalas dvipusis, pagrindinis siųstuvo darbas yra perdavinėti valdymo signalus imtuvui, o priiminėti telemetriją yra antraeilis dalykas. Jei duomenų bus per daug, dalis duomenų tiesiog bus neperduota. RS232 greitis – 9600, tačiau realus perdavimo greitis ~ 1200. Bet kadangi perdavinėjami duomenys nėra kritiškai svarbūs, pvz. akumuliatoriaus įtampa, GPS koordinatės, tai vieno kito paketo pametinas beveik neturi jokios reikšmės. Pvz. jei GPS koordinatės bus perduodamos du kartus per sekundę, tai vieno iš šių paketų pametimas net nebus pastebėtas. Reikia tik pasirūpinti, kad nebūtų galimybės priimti klaidingus duomenis, tam reikėtų naudoti kontrolines sumas, jei paketas klaidingas į jį tiesiog nekreipti dėmesio.

Nenagrinėsiu čia smulkiai FrSky protokolo, visa tai yra gana normaliai aprašyta. Čia matosi duomenys, kuriuose yra tik RSSI ir analoginių įėjimų reikšmės. Paketas prasideda ir baigiasi 7E. Keturi nuliniai baitai perduodami visada, kažkaip neekonomiškai išnaudojamos labai ribotos perdavimo galimybės.

Bandymui pasirašiau kompiuteryje programą, kuri iššifruoja FrSky protokolą ir parodo duomenis. Užduotis pasirodė ne visai paprasta, teko nemažai pasėdėt. Bet rezultatas yra. Pabandžiau nedidelį duomenų paketą perdavinėti su kontroline suma ir paskaičiuoti, kiek pasitaikys klaidų. Paaiškėjo, kad klaidų visai nėra. Pabandžiau imtuvą palikti automobilyje už 50 m nuo namų, pats buvau namuose už mūrinių sienų. Veikia, klaidų nėra.

Kol kas viskas eksperimentų lygyje, bandysiu pasirašyti programą mikrokontroleriui, kuri perdavinės GPS duomenis. Tiesiogiai NMEA duomenų perdavinėti negalima, reikia išrinkti tik tai, ko reikia ir paversti paketais su kontrolinėmis sumomis. Mano tikslas matyti skrydžio maršrutą google žemėlapyje.

Prieš tai reikėtų dar pasidaryti srovės matavimo modulį. Bandysiu panaudoti Allegro srovės daviklį, kurį jau turiu.

3 dalis.

This entry was posted in Elektronika, Programavimas, RC modeliai. Bookmark the permalink.

One Response to FrSky telemetrija (2 dalis)

  1. gintaras says:

    Ačiū Remigijau už puikų FrSky telemetrijos aprašymą. Net ir man pasidarė įdomu jos galimybėmis pasinaudoti.

Leave a Reply

Your email address will not be published. Required fields are marked *