ERK'2020, Portorož, 29-32 29 Spremljanje satelitov GPS v vidnem polju na osnovi modula NEO-6M Blaž Bertalanič, Aljaž Blatnik, Boštjan Batagelj Univerza v Ljubljani, Fakulteta za elektrotehniko, Tržaška 25, 1000 Ljubljana, Slovenija E-pošta: blaz.bertalanic@outlook.com Real time tracking of GPS satellites in view with module NEO-6M Abstract. With the help of module NEO-6M we created an application with which we are able to track GPS satellites in view in real-time. The application is able to interpret the results that it gets from the satellite and show them to a user in a friendly manner. With it we can observe the signal-to-noise ratio of the signals received from the satellites in view and also display its approximate direction of position in the sky through azimuth and elevation. We were able to make a product that can be a sufficient tool for students to work with at laboratory work in the school process. 1 Uvod Radijski sistem globalne navigacije (angl. Global positioning system – GPS), temelji na osnovi serije satelitov, ki krožijo okoli Zemlje. Ta sistem nam omogoča določanje naše geolokacije, ki je določitev lokacije podane glede na Zemljo v danem koordinatnem sistemu [1] v primeru, da imamo v vidnem polju štiri ali več satelitov. Večina komercialnih naprav nam podaja le informacije o naši lokaciji v obliki zemljepisne širine in dolžine, ali pa nam na zemljevidu prikažejo točko, kjer se trenutno nahajamo. Drugi podatki so skriti, oziroma nimajo večjega pomena za uporabnika. Seveda je eno od vprašanj, ki se nam porodi, kako močan signal sploh potrebujemo, da lahko uspešno določimo našo lokacijo, oziroma pri kakšni moči signala lahko rečemo, da je nek satelit v našem vidnem polju. GPS sicer spada v skupino GNSS (angl. Global Navigation Satellite System), ki predstavlja skupino satelitov, ki krožijo okoli Zemlje in so primarno namenjeni določanju geolokacije. GPS je bil narejen s strani ameriškega obrambnega ministrstva za potrebe varnosti . Projekt se je začel že daljnega leta 1973, prvi prototip pa so izstrelili v vesolje 5 let kasneje. Do leta 1993 je ameriška vlada že imela konstalacijo 24 satelitov [2]. Do danes se je ta številka povečala na 31 delujočih satelitov [3]. Glavna značilnost GNSS sistemov je, da imajo vsi sateliti na krovu atomsko uro, ki predstavlja časovno referenco, potrebno za delovanje sistema, hkrati pa je komunikacija do končnega uporabnika enosmerna. Vsak satelit posreduje svojo natančno časovno referenco in navigacijsko sporočilo s svojo efemerido, s pomočjo katerih nato sprejemnik preračuna svojo geolokacijo, vendar za to potrebuje vsaj 4 satelite v vidnem polju, ki so potrebni za triangulacijo položaja [4]. Sateliti GPS se gibljejo na približni višini 20200 kilometrov od Zemljine površine, ki jo v svoji tirnici preletijo dvakrat na dan [6]. Tirnice satelitov so izbrane tako, da je na večini točk na Zemlji vedno v vidnem polju sprejemnika vsaj 6 satelitov [7]. Končni cilj aplikacije je bilo pripraviti merilno orodje za uporabo na laboratorijskih vajah, kjer bi lahko študenti v realnem času opazovali kaj se dogaja z močjo sprejetih signalov satelitov v vidnem polju, ko na sprejemnik vplivamo z različnimi motilniki, ki bodo v signal vnašali motnjo, oziroma koliko močno motnjo moramo proizvesti, da sprejemnik ni več zmožen zaznave signala iz satelitov. Aplikacija mora temeljiti na odprtokodnih rešitvah in ni odvisna od omrežne povezave, oziroma se mora izvajati lokalno. Pri tem mora biti uporabniški vmesnik čim bolj preprost za uporabo, hkrati pa morajo biti podatki prikazani na razumljiv in nedvoumen način. Na trgu se nahajajo tudi konkurenčni produkti izdelani aplikaciji, ki pa so večinoma neprimerni za uporabo v didaktične namene. Aplikacija proizvajalca naprave NEO-6M, z imenom u-Center [8], omogoča spremljanje vseh podatkov o satelitih, toda te prikazuje v neprijaznem grafičnem vmesniku, težave pa ima tudi s stabilnostjo saj po nekaj minutah uporabe postane neodzivna. NEO-6M se zaradi cenovne dostopnosti uporablja tudi v številnih domačih projektih, vendar so vsi namenjeni predvsem spremljanju zemljepisne dolžine in širine ter posledično določanju geolokacije, ne pa tudi za prikaz in interpretacijo satelitov v vidnem polju. Naš merilni sistem je sestavljen iz dveh delov in sicer strojnega dela, ki ga sestavlja modul proizvajalca uBlox NEO-6M in služi kot sprejemnik GPS signala. Modul posreduje želeno informacijo v obliki stavka NMEA (angl. National Marine Electronics Association) na računalnik, kjer ta stavek obdelamo in primerno prikažemo končnemu uporabniku. Koncept sistema je prikazan na sliki 1. V nadaljevanj je opisana uporabljena strojna oprema za končno aplikacijo, ter programski rešitvi interpretacije pridobljenih podatkov iz strojne opreme in njihovem prikazu. Slika 1: Koncept našega merilnega sistema 30 2 Strojna oprema aplikacije Strojna oprema je sestavljena iz zunanje in notranje enote. Notranjo enoto sestavlja preprost čip FT232R proizvajalca Future Technology Devices International (krajše FTDI), ki deluje kot posrednik za komunikacijo med vodilom USB in serijsko komunikacijo med zunanjo enoto in računalnikom. V zunanji enoti najdemo izdelek proizvajalca uBlox, katerega srce predstavlja modul GPS NEO-6M (Slika 2). 2.1 NEO-6M To je izjemno zmogljiv sprejemni modul, saj je sposoben na enkrat spremljati kar 22 satelitov na 50 različnih frekvenčnih kanalih nosilca L1 (1575,42 MHz), ki so v vidnem polju. Naprava je zmožna zaznati signal jakosti zgolj -161 dBm in pri tem porabi samo 45 mA toka, v primeru varčevanja z energijo, ko sprejemnik selektivno vklaplja in izklaplja svoje komponente, pa je poraba toka v območju 11 mA in je zato primeren za baterijske naprave. NEO je s predpisano anteno sposoben do petkrat na sekundo posodobiti lokacijo z do 2,5 m horizontalno točnostjo. Zraven je potrebno poudariti tudi, da je pri vročen zagonu čas do prvega izračuna pozicije (angl. Time-To-First-Fix) manjši od 1 sekunde, se pravi potrebuje sprejemnik manj kot 1 sekundo od vklopa do prvih natančno izračunanih in oddanih podatkov. Na modulu sta prisotna tudi električno izbrisljiva programirljiva bralna pomnilnika (angl Electrically Erasable Programmable Read-Only Memory - EEPROM) in baterija, ki skupaj poskrbita, da se ob izklopu na modulu ohranijo nekateri podatki o pozicijah satelitov (GNSS podatki) in druge nastavitve modula, ki so pomembne za hitrejši zagon lokalizacije. V teoriji se hitrost do prve uklenitve s satelitom izračuna po enačbi (Napaka! Vira sklicevanja ni bilo mogoče najti.), kjer 𝑡 0 predstavlja čas potreben za vsake faze v zaporedju kodnega multipleksa, krajše C/A (angl. »Code division multiplex«) in znaša približno 10 ms. Črka 𝑁 predstavlja število vseh satelitov, ki v GPS konstalaciji znaša trenutno 31, 𝑁 ′ pa predstavlja število satelitov, ki jih lahko trenutno vidimo na nebu, kar v povprečju znaša 8 satelitov. Črka 𝑀 število poskusov uklenitve na posamezni frekvenci, ki pri naši napravi znaša 10 poskusov, medtem ko oznaka 𝐾 število frekvenčnih kanalov na katerih lahko naša naprava zazna satelite. Ko vnesemo vse podatke v enačbo lahko izračunamo, da bi se moral modul NEO-6M sinhronizirati v dobrih 8 sekundah. Zaradi že omenjenega shranjevanja določenih podatkov s pomočjo baterije, ki te podatke drži v spominu, se naprava lahko sinhronizira bistveno hitreje. 𝑡 = 𝑡 0 ⋅ 1023 ⋅ 𝑁 𝑁 ′ ⋅ 𝑀 ⋅ 1 𝐾 (1) Slika 2: GPS modul NEO 6M z anteno 2.2 Antena Na čip je preko priključka U.FL priklopljena krpičasta antena z oznako 1575R-A. Antena sprejema satelitski signal v območju med 1561 MHz in 1575,42 MHz, ima dobitek 26 dBi in desno sučno polarizacijo. Polarizacija je potrebna predvsem za odpravo neželenih odbojev. Sateliti namreč svoj signal oddajajo z desno sučno polarizacijo, vendar vsi ne pridejo neposredno do sprejemnika ampak se lahko pred sprejemom odbijejo od tal in bi tako lahko vnašali pogrešek pri določanju lokacije. Od tal odbitim signalom se zaradi odbojnosti spremeni polarizacija v levo sučno in na tak način lahko sprejemnik loči neposredni signal od odbitega. 3 Programski del in prikaz rezultatov Programski del aplikacije je bil izdelan v programskem jeziku Python [9]. Celotna komunikacija s čipom NEO poteka preko serijske povezave s pomočjo knjižnice PySerial [10], ki pošilja stavke NMEA, medtem ko je za grafični vmesnik uporabljena knjižnica Tkinter [11]. Tabela rezultatov je narejena s pomočjo knjižnice Tkinter-table [12], vsi grafi pa so narejeni s pomočjo Matplotlib [13]. Program deluje tako, da najprej vzpostavi komunikacijo s čipom NEO in preveri število stavkov, ki jih lahko pričakuje in si jih shranjuje toliko časa, da si zabeleži vse pričakovane. Iz tako sprejetih podatkov nato izlušči tiste vrednosti, ki nas zanimajo (identifikacijsko številko satelita, razmerje signal šum, azimut in elevacijo). V primeru razmerja signal šum podatke tudi uredi po velikosti od najvišjega proti najnižjemu in nato vse izluščene podatke prikaže v uporabniškem vmesniku. Diagram poteka programa je predstavljen na sliki 3. 31 Slika 3: Diagram poteka prikaza rezultatov 3.1 Stavki NMEA in obdelava podatkov Stavki NMEA so bili definirani s strani National Marine Electronics Association (NMEA) in so bili prvotno namenjani za komunikacijo med različno pomorsko elektronsko opremo. Vsak stavek se začne z znakom »$« in konča z »*« in rezultatom zgoščevalne funkcije (angl. hash function). V standardu je definiranih 29 različnih stavkov NMEA za različne uporabe, od tega jih je 10 namenjenih za GPS. Za našo aplikacijo smo uporabili stavek GSV (»Satellites in view«), ki prikazuje podatke o satelitih v vidnem polju. Tipična oblika sprejetega podatka je »$GPGSV,4,1,16,01,40,083,46,02,17,308,41,12,07,344, 39,14,22,228,45*75«, kjer so z vejico ločeni posamezni podatki. Prvi podatek predstavlja tip stavka, v našem primeru GSV, drugi podatek predstavlja število stavkov, ki jih potrebujemo za sprejem vseh podatkov. Tretji podatek nam pove kateri stavek je po vrsti, od števila ki predstavljajo vse podatke, četrti pa nam pove koliko satelitov se nahaja v vidnem polju. Nato sledijo podatki o samih satelitih in sicer PRN, kar predstavlja psevdo naključno kodo (angl. pseudo-random noise sequence), ki se uporabi v kodiranju signala. Vsak satelit ima svoj PRN ,ki je tudi unikatna identifikacija satelita. [9] Podatki, ki sledijo PRN so azimut glede na pravi sever, tudi geografcki sever [8], elevacija, ki je prav tako normirana na pravi sever in razmerje signal šum (angl. Signal-to-noise ratio – SNR). Vsak stavek lahko vsebuje te podatke za maksimalno 4 satelite, zato za večje število sprejetih satelitov potrebujemo več stavkov NMEA, kar nam tudi pove drugi podatek. Potrebno je omeniti, da sta podatka, ki jih čip poda o azimutu in elevaciji vezana na položaj uporabnika, torej je v središču, na točki (0,0) v polarnih koordinatah, sprejemnik. To pomeni, da če bi se obrnili v smeri geografskega severa, ki se nahaja na azimutu 0°, lahko v grobem ocenili smer v kateri se nahaja posamezni opazovani satelit. Zaradi načina zapisa podatkov o satelitih, ki se izpisujejo v zaporednih stavkih NMEA, je bil glavni izziv kako zajeti vse in jih potem na koncu uporabiti kot celoto. To nam je uspelo narediti s pomočjo stalne zbirke, v katero smo zapisovali podatke o satelitih. Te podatke smo posodabljali z vsakim naslednjim prispelim stavkom, dokler nismo zapisali vseh prispelih podatkov, oziroma vseh potrebnih stavkov. Število teh podajajo stavki NMEA za zajem vseh satelitov v vidnem polju. Aplikacija po končani zapolnitvi zbirke razvrsti satelite po jakosti signala, od najnižjega do najvišjega in posodobi prikaz na uporabniškem vmesniku. Nato izprazni zbirko in naredi prostor za vnos novih podatkov iz NMEA stavkov, celotni cikel pa se ponavlja. 3.2 Tabela zaznanih satelitov V zgornjem levem kotu uporabniškega vmesnika se nahaja tabela s podatki za posamezne satelite v vidnem polju. V prvem stolpcu je prikazana PRN oznaka satelita, ki je za vsakega unikatna, nato njegova elevacija, ki se lahko giblje med 0° in 90°, sledi azimut, ki se giblje med 0°in 360° glede na pravi sever in na koncu še SNR, ki se lahko giblje med 0 in 99 decibeli. Vsi vnosi so urejeni po velikosti SNR in sicer so na vrhu tisti sateliti z največjim SNR, medtem ko so čisto spodaj tisti z najnižjim razmerjem. 3.3 Graf razmerja moči zaznanih satelitov V levem spodnjem kotu aplikacije se nahaja vizualni prikaz razmerja moči sprejetih satelitov v obliki stolpčnega grafa. Podobno kot v tabeli rezultatov so tudi tukaj posamezni sateliti predstavljeni s svojim PNR, nato pa višina stolpca predstavlja velikost razmerja med signalom in šumom sprejetega satelita. Podatki so urejeni tako, da se prikazana moč niža iz leve proti desni. Osveževanje prikaza poteka vsakih 100 ms, kar je nekoliko hitreje kot poteka osveževanje podatkov iz modula, ki je v območju 200 ms. 3.4 Prikaz položaja satelitov Desno spodaj se nahaja grafika, kjer so v polarnih koordinatah prikazani položaji posameznih satelitov glede na njihovo elevacijo in azimut glede na geografski sever (Slika 2). Elevacija je predstavljena z radijem, kjer koordinata (0,0) predstavlja 90° elevacijo, medtem ko azimut poteka v smeri urinega kazalca od 0° do 360°. Prikazi se osvežujejo na 200 ms, ker podatki o položaju satelita zelo malo variirajo in zato je tolikšno osveževanje potrebno predvsem zaradi lepše animacije premikanja. Slika 4: Uporabniški vmesnik aplikacije 32 4 Diskusija in možne nadgradnje Na koncu nam je uspelo izdelati program, ki je preprost za uporabo in z razumljivim prikazom podatkov, ki jih pridobimo v obliki NMEA stavkov iz satelitov. Celotna aplikacija deluje brez tehničnih težav in je sposobna podatke osveževati vsakih 100 ms, medtem ko se podatki o približni smeri položaja satelitov osvežujejo z 200 ms, ker ti bolj kot ne ostajajo konstantni. Zaradi tega je aplikacija primerna za prikaz še tako majhnih sprememb pri meritvah razmerja signal šum, kar je tudi eden od pogojev za uporabo na laboratorijskih vajah. V programski kodi so predvideni nastavki za morebitno nadgradnjo aplikacije, s katerimi lahko bistveno olajšamo delo in pospešimo nadaljnji razvoj. Aplikacijo bi bilo mogoče tudi nadgraditi, da bi lahko obdelala in prikazovala tudi druge stavke NMEA. V prvi vrsti bi lahko na interaktivnem zemljevidu prikazovala trenutno lokacijo sprejemnika, kot tudi projekcijo položaja satelitov v vidnem polju na azimutnem zemljevidu, vendar bi za to potrebovala internetno povezavo, kar pa ni bilo zaželeno v trenutni izvedbi. Eden od načrtov je tudi, da bi si aplikacija beležila vse posredovane podatke o jakosti signala skozi čas in nato ob koncu meritev prikazala graf celotnega potek upadanja moči v odvisnosti od časa in tako omogočila dodaten podatek za kasnejšo analizo. 5 Zaključek V članku je predstavljena rešitev za pridobivanje posameznih podatkov o satelitih GPS v vidnem polju in njihov prikaz na grafičnem vmesniku. V realnem času je izvedena meritev razmerja signal-šum satelitov v vidnem polju. Celotna aplikacija temelji na strojni opremi, kjer je uporabljena nizkocenovna naprava NEO-6M, ki omogoča zajem satelitskih signalov s frekvenco 5 Hz. Uporabnik tako lahko pridobi podatke o razmerju signal šum sprejetega signala posameznega satelita in njegovo približno smer lokacije na nebu v obliki azimuta ter elevacije. Podatki, ki se zajemajo s pomočjo navedene naprave se posredujejo v obliki NMEA stavkov v Python skripto, ki te stavke obdela, iz njih izlušči pomembne podatke in jih pretvori v primerno obliko za urejanje ter končni prikaz. Grafični vmesnik, ki je razumljiv in preprost za uporabo, prikazuje podatke na tri različne načine, ki skupaj ponujajo najboljšo reprezentacijo za končnega uporabnika. Uspelo nam je narediti produkt, ki predstavlja primerno orodje za študente pri izvedbi laboratorijskih vaj. Literatura [1] [1] TRIGLAV, Joc, 2012, Analiza pomena geolokacije kot funkcije časa : doktorska disertacija [na spletu]. Univerza v Ljubljani, Fakulteta za gradbeništvo in geodezijo . [Dostopano 20 marec 2020] [2] https://en.wikipedia.org/wiki/Global_Positioning_System(prvi dostop 12.3.2020) [3] US Government. "GPS.gov". GPS.gov. US Govt. Pridobljeno 21 marca 2015. [4] McNeff, J. (2002), “The Global Positioning System”, IEEE Transactions on Microwave theory and techniques, VOL 50, No.3, Marec 2002 [5] https://en.wikipedia.org/wiki/Global_Positioning_System(prvi dostop 12.3.2020) [6] Agnew, D.C.; Larson, K.M. (2007). "Finding the repeat times of the GPS constellation". GPS Solutions. 11 (1): 71–76. [7] https://en.wikipedia.org/wiki/List_of_GPS_satellites (prvi dostop 12.3.2020) [8] https://www.u-blox.com/en/product/u-center (prvi dostop 12.3.2020) [9] https://www.python.org/ (prvi dostop 10.3.2020) [10] https://pypi.org/project/pyserial/ (prvi dostop 10.3.2020) [11] https://docs.python.org/3/library/tkinter.html (prvi dostop 10.3.2020) [12] https://github.com/dmnfarrell/tkintertable (prvi dostop 10.3.2020) [13] https://matplotlib.org/ (prvi dostop 10.3.2020) [14] Massatt, Paul; Wayne Brady (Summer 2002). "Optimizing performance through constellation management". Crosslink: 17– 21. Archived from the original on January 25, 2012. [15] McClure, Bruce (2013). "Polaris is the North Star". Astronomy Essentials. EarthSky. Archived from the original on 2014-03-09. Retrieved 2014-04-28