domenica 24 settembre 2017

GPS (seconda parte)

Ora che ci sono note alcune informazioni riguardanti la lettura dei dati GPS con Arduino.

Per questo ho scritto un breve programmino che cattura tutta la stringa in uscita dal modulo GPS e la rielabora grossolanamente restituendo sulla monitor seriale tutti i dati estratti.
Il codice è pubblicato sul mio repository sulla piattaforma GitHub all'indirizzo:

https://github.com/UmbyWanKenobi/GPS-example/blob/master/gps_hardware.ino

a cui potete fare riferimento per il codice, che è ben commentato (almeno lo spero).
La sottostringa da me usata è la GPGA, la quale fornisce i principali dati riguardanti lo stato della connessione ( FIX ) corrente, la correzione del dato orario di rilevamento, le informazioni minime GPS e lo stato dei satelliti.

 $ GPGGA, 123519,4807.038, N, 01.131,000, E, 1,08,0.9,545.4, M, 46,9, M ,, * 47
14
Dove:
     Il sistema di posizionamento globale di GGA corregge i dati
     123519 Correzione prese alle 12:35:19 UTC
     4807.038, N Latitudine 48 deg 07.038 'N
     01131.000, E Longitude 11 deg 31.000 'E
     1 qualità del Fix: 0 = non valido
                               1 = riparazione GPS (SPS)
                               2 = correzione DGPS
                               3 = correzione PPS
          4 = cinematica in tempo reale (1)
          5 = Real-Time Kinematic flottante (1)
                               6 = stima (calcolo morto) 
          7 = modalità di immissione manuale
          8 = Modalità di simulazione
     08 Numero di satelliti in fase di tracciamento
     0.9 Diluizione orizzontale della posizione
     545.4, M Altitudine, metri, al di sopra del livello del mare medio
     46.9, M Altezza di geoide (livello medio del mare) sopra WGS84
                      ellissoide
     (campo vuoto) in secondi dall'ultimo aggiornamento DGPS
     (campo vuoto) Numero ID della stazione DGPS
     * 47 i dati di checksum, sempre inizia con *

La quota di geoide, più propriamente detta quota ortometrica, è l'elevazione del punto sulla superficie terrestre rispetto alla superficie del livello medio del mare.
Se manca l'altezza del geoide l'altitudine indicata potrebbe essere non corretta. Alcune implementazioni non standard riportano l'altitudine rispetto all'ellissoide anziché all'altitudine geoidale. Alcune unità non presentano affatto le altitudini negative. 
Le altre sottostringhe riportano altri dati in cui alcuni campi sono ripetuti oltre a altre funzioni come la velocità di spostamento, la deriva del Nord magnetico e la data, Alcuni campi sono riservati e altri semplicemente vengono ignorati da alcuni chip come questo (il MEO 6M), per esempio quello relativo alla deriva magnetica che invece potrebbe essere utile per la calibrazione delle bussole elettroniche.
Ora cercherò un chip che fornisce anche questa informazione e magari che generi l'interrupt per la sincronizzazione dell'orologio interno di Arduino. Sarebbe fantastico!


Cieli sereni

(1) Indice per gli algoritmi di alta precisione per la navigazione. l?RTK è una tecnica che migliora l'accuratezza delle misurazioni della posizione GPS, tuttavia è anche una delle più difficili da comprendere e da implementare.

Nessun commento:

Posta un commento