Eksperimentai su GPS moduliu

Nusipirkau GPS modulį, turėdamas tikslą jį panaudoti quadrocopter‘yje. Tačiau prieš tai norėjosi pabandyti jį pasijungti prie mikrokontrolerio, pasižiūrėti kokioje formoje modulis perduoda informaciją apie koordinates, ir ką ten dar perduoda be koordinačių. Pasirodo viskas ten gana paprasta.

Modulis perdavinėja informaciją per RS232. Greitis gali būti pasirenkamas programuojant patį modulį. Informacija perduodama specialiu protokolu (NMEA). Informacija perduodama tekstinėmis eilutėmis, kiekviena iš jų perduoda kažkokią informaciją. Eilutė prasideda identifikatoriumi, kuris apibrėžia kas bus perduodama, kiekviena reikšmė atskiriama kableliais, eilutės pabaigoje yra kontrolinė suma. Kadangi informacija grynai tekstinė, pažiūrėti kas perduodama labai paprasta, tereikia pasijungti prie kompiuterio ir pažiūrėti terminalo lange. Modulis perdavinėja ne tik koordinates, bet ir nemažai kitos informacijos. Pvz.: kiek palydovų matoma, judėjimo greitis, aukštis, kryptis, laikas, informacija apie kiekvieną palydovą ir t.t.

Pasijungiau prie mikrokontrolerio mega8. Kad matyčiau informaciją, pasijungiau NOKIA 3310 ekraną, kurį naudojau ankstesniuose savo eksperimentuose. Pirmas tikslas buvo gauti koordinates. Tam reikia pasirinkti kurią nors eilutę (pvz. GPGGA) ir paimti iš ten koordinates. Šioje eilutėje yra ir daugiau informacijos – laikas, matomų palydovų skaičius, aukštis virš jūros lygio. Principas paprastas: kadangi eilutę modulis perdavinėja pastoviai (pvz. kas 1s), tai reikia ją skaityti ir, išrinkus reikiamą informaciją, parodyti ekrane. Padariau begalinį ciklą, kuris pastoviai atlieka aprašytą procedūrą. Rezultate informacija ekrane pastoviai keičiasi, kai keičiasi koordinatės. Kaip tai atrodė, matosi nuotraukoje. Pagal koordinates galit pažiūrėti (google earth) kur aš tuo metu buvau… :)

Kai tai nusibodo, sugalvojau naują užduotį: įrašinėti informaciją apie judėjimą į atmintį, o paskui tai atkurti, perduodant į google earth programą, kad galima būtų matyti kur buvo važiuojama (einama, skrendama) . Užduotis pasirodė gerokai sudėtingesnė. Įrašymui paėmiau 24LC512 atminties mikroschemą. Su ja bendraujama I2C protokolu. Atminties tokiam tikslui buvo daugiau nei reikia. Pirmas neaiškus dalykas – kaip išvis informaciją perduoti į google earth. Paieškos internete parodė, kad toks poreikis kilo ne tik man. Yra programų, kurios skaito informaciją iš modulio (per COM portą), ir perduoda į google earth. Liko neaiškus vienas dalykas – kokią informaciją reikia perdavinėti. Kaip jau minėjau, aš informaciją norėjau perdavinėti ne tiesiogiai iš modulio, o iš įrašyto log‘o. Reiškia reikėjo atkurti NMEA protokolo eilutes, naudojant informaciją iš atminties. Tačiau rašyti viską į atmintį – nesąmonė. Tam reikėtų labai daug atminties. Todėl aš įrašinėjau tik tą informaciją, kuri mane domino, o viską ko trūksta, sukurdavau formuodamas eilutes. Eilutės būtinai turi atitikti standartą, be to, gale turi būti suskaičiuotos kontrolinės sumos. Pvz. man nereikėjo perdavinėti į google earth informacijos apie tai, kiek matoma palydovų – tai neturi jokios reikšmės, tačiau eilutėje tokia informacija turi būti. Reiškia galima įrašyti bet ką, svarbu kad būtų. Čia nereikia suprasti, kad palydovų skaičius apskritai neturi reikšmės. Turi labai didelę – nuo to priklauso koordinačių tikslumas. Bet maršruto piešimui, tai nebuvo svarbu. Todėl tokios informacijos aš neįrašinėjau į atmintį. Kaip ir daug kitos…

Teko padaryti daug eksperimentų, kol supratau, kokia informacija reikalinga, kad google earth pradėtų braižyti maršrutą. Bet rezultatas yra, viskas veikia. Kaip atrodo maršrutas matosi nuotraukoje. Informacija įrašinėjama maždaug kas sekundę, kiekvienu žingsniu įrašau 13 baitų. Nesunku paskaičiuoti, kiek laiko galima įrašinėti į tokią atmintį. Bandymui įrenginys buvo padėtas mašinoje, ir įjungtas įrašymas. Parvažiavęs pasijungiau prie kompiuterio ir paleidau atkūrimą. Maršrutas nubraižytas google earth programoje.

Šie eksperimentai man leido suprasi, kaip veikia GPS modulis, kaip jis perdavinėja informaciją, kaip ją nuskaityti mikrokontroleriu, kaip įrašinėti informaciją apie judėjimą į atmintį. Manau dabar reikėtų pabandyti įdėti į kokį lėktuvą, įrašinėjant dar ir aukščio informaciją. O parskridus pasižiūrėti, kokiu greičiu buvo skrendama, kokiame aukštyje. Tiesa, aukščio tikslumas man neaiškus, kartais rodo visai kažkokias nesąmones. Tačiau matosi, kad kuo daugiau palydovų matoma, tuo stabilesnė aukščio informacija. Galima manyti, kad atviroje vietoje (kur matoma 8-10 palydovų), ši informacija bus pakankamai tiksli. Bet tai parodys tolimesni eksperimentai.

Manau išbandysiu ir skrydžius į nurodytus taškus. Tai tikrai įdomu. Įdomu ne nusipirkti, o pačiam suprogramuoti…

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

3 Responses to Eksperimentai su GPS moduliu

  1. Donatas says:

    Sveikas,

    šauniai,
    kur pirk ir kiek mokėjai už moduliuką? dar tokiu patogiu jungimu.

  2. Stuzer says:

    Labas, gerai varai. Man irgi įdomu, kur galima gauti tokį moduliuką.

  3. ReM says:

    Tokių, arba panašių, modulių tikrai ne vienoje vietoje galima rast. Tik ne Lietuvoje… Palieku galimybę pasinaudot google. :)

Leave a Reply

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