
Progetto di un ricevitore GPS multifunzione. Per la realizzazione del ricevitore GPS, ho inizialmente creato un programma per PC al fine di analizzare e testare la qualità dell’antenna e per estrapolare i dati dai quattro pacchetti trasmessi dal modulo GPS.
Prova dopo prova, ho realizzato che quello che era nato come un semplice programma di test, sarebbe potuto diventare un comodo tool per la rilevazione della posizione e la memorizzazione dei punti sul percorso (waypoint). I dati incapsulati, possono essere utilizzati per la richiesta a Google di una mappa con il marker della propria posizione, oppure salvati nel formato KML per visualizzare l’itinerario direttamente su Google Earth.
Su www.mbenterprise.it/windows.php e www.mbenterprise.it/hardware.php sono pubblicati alcuni screenshot sul work in progress.
Scelta dell’elettronica per il ricevitore GPS multifunzione
Per quanto riguarda il ricevitore vero e proprio, sono in fase di sviluppo due ipotesi realizzative:

La prima prevede l’utilizzo di un microprocessore della Microchip per la gestione della periferia, ovvero un display grafico da 128x64, ingressi analogici per sensori di pressione (specifica del progetto), lettore di schede SD per il salvataggio dei percorsi, tastierino a 5 tasti per le varie funzioni, USART per la lettura dei dati dal modulo GPS.
La seconda prevede l’utilizzo di una scheda della Variscite con micro ARM9 della Ti, capace di gestire tutto ciò di cui si può avere bisogno: display da 7” con Touchscreen resistivo e risoluzione di 800x480, Lettore di schede SD, Uscita HDMI Uscita Audio, USB, micro USB, Ethernet, 4 porte seriali e Sistema operativo Windows CE 6.0

Come si può vedere dalle foto, su questo dispositivo, può essere installato lo stesso software che è in corso di realizzazione per PC, infatti il Framework.NET permette una portabilità molto alta.
Dati per la geolocalizzazione
La geolocalizzazione viene effettuata estrapolando dai pacchetti che arrivano dal Modulo GPS, i dati di cui si ha bisogno. Il modulo GPS scelto, fornisce quattro tipi differenti di pacchetti, GGA, RMC, GSV, GSA.
Esempi per i due pacchetti più importanti sono i seguenti:
$GPRMC,092204.999,A,4153.7280,N,01228.9410,E,10.00,45.0,211200,, *25 $GPGGA,092204.999,4153.7280,N,01228.9410,E,1,08,1.1,28.7,M,,,,0000*0E
Tutti i pacchetti trasmessi dai moduli GPS iniziano con Il carattere $ e sono terminati da CR e LF. I dati sono separati tra loro da carattere “,”.
Analizzando il primo pacchetto possiamo notare:
-
$GPRMC identificativo del pacchetto dati
092204.999 ora UTC ovvero le ore 9, 24 minuti e 04 secondi
A validità del segnale, A=valido, V=invalido
4153.7280 latitudine ovvero 41° 53,7280 secondi decimali
N Nord
01228.9410 longitudine ovvero 12° 28,9410 secondi decimali
E Est
10.00 velocità in nodi (per avere i Km/h bisogna moltiplicare per 1,852, per le mph per 1,5)
45.0 la direzione ovvero 45,0°
211200 la data ovvero 21 dicembre 2000
vuoto
vuoto
*25 checksum
Analizzando il secondo pacchetto possiamo notare :
-
$GPGSA identificativo del pacchetto dati
092204.999 ora UTC ovvero le ore 9, 24 minuti e 04 secondi
4153.7280 latitudine ovvero 41° 53,7280 secondi decimali
N Nord
01228.9410 longitudine ovvero 12° 28,9410 secondi decimali
E Est
1 qualità del fix: 0=invalido, 1=fix GPS
08 numero di satelliti in vista
1.1 HDOP
28.7 Altezza sul livello del mare
M M=metri
Vuoto Altezza del Geode sull’ellissoide WGS84
Vuoto M=metri
Vuoto DGPS update
Vuoto DGPS
*0E checksum
Una volta in possesso di tutti questi dati, si può passare alla visualizzazione sul dispositivo.
Ricevitore GPS multifunzione: Utilizzo dei dati per la geolocalizzazione
Nel rappresentare la bussola, bisogna tener conto che il nostro ricevitore sarà orientato lungo il nostro senso di marcia che nell’esempio è 45° NE, quindi la direzione del Nord sulla bussola sarà 360 - 45 = 315°.

Ecco come i dati relativi alla longitudine ed alla latitudine vengono inviati a Google per ottenere come risposta una mappa con evidenziata la nostra posizione (Blu Point marker). Nel programma sono presenti due tasti per chiedere la mappa (roadmap) oppure la vista ibrida (hybrid) ovvero la vista satellitare con in sovraimpressione le strade.

Questa è la stessa mappa ma in versione ibrida. Sono inoltre presenti due pulsanti per aumentare o diminuire il livello di zoom.

I dati salvati in formato KML, possono essere utilizzati anche con il programma Google Earth. I dati in questo formato possono contenere varie informazioni che saranno poi gestite come Layer dal programma della Google. Il programma in questo momento incapsula le seguenti informazioni:
Partenza, Arrivo e dati del percorso.

Questi Livelli (layer) possono essere accesi o spenti semplicemente cliccando nel relativo quadratino, togliendo o rimettendo il simbolo di spunta.
Modulo GPS
Per quanto riguarda il modulo GPS mi sono affidato alla Fastrax. Il modulo scelto è il modello UP500 che in soli 22 x 22 x 8 millimetri riesce a concentrare l’elettronica e l’antenna con una sensibilità durante la navigazione di -159dBm e 32 canali. Questo tipo di antenna è particolarmente performante all’interno delle città in cui i palazzi e le vie particolarmente strette impediscono una corretta ricezione del segnale radio.

Questo modulo è dotato di interfaccia seriale TTL che ne facilita la connessione verso microprocessori o dispositivi tipo touchscreen con windows CE. La tensione di alimentazione può andare da 3,3V a 5,5V ed anche questo permette una facile connessione verso molti tipi ci circuiti. Inoltre se si lavora a 3,3V il consumo è di soli 90mW.
L’ottima sensibilità del dispositivo fa sì che possa essere collocato all’interno del contenitore (purché plastico o metallico ma con opportune aperture) senza necessità di utilizzare un’antenna esterna; ma come si vedrà più avanti, la presenza della porta seriale ne permetterà un uso ancora più interessante.
I messaggi trasmessi sono quelli del protocollo NMEA Datum WGS84 e precisamente:
GGA, RMC, GSV, GSA ad intervalli di 1 secondo. Analizzando i vari dati inseriti in questi quattro pacchetti, possiamo estrarre l’ora UTC (ovvero quella del meridiano di Greenwich), la Latitudine, la Longitudine, l’altezza rispetto al livello del mare, altezza rispetto l’ellissoide WGS84, la devianza (da cui si deriva la direzione), la velocità in nodi, i satelliti in vista con le rispettive elevazioni, azimuth e SNR, la qualità del fix. Una volta impacchettati i vari dati non resta quindi che passarli al programma per le elaborazioni del caso.
Connessione del modulo GPS al ricevitore
Per collegare il modulo GPS al resto del circuito, si può far uso di uno strip maschio/femmina da saldare sullo stampato del ricevitore, oppure di un connettore maschio tipo Amp o Wago (passo 2,54 mm). Su questo connettore saranno presenti l’alimentazione VDD e GND, il pin per la batteria di backup che può essere collegato a VDD, RXD e TXD da collegare alla seriale del micro e PPS che permette di capire quando il modulo ha agganciato almeno quattro satelliti (emettendo un impulso per secondo).
Questo sarebbe il modo classico di collegare l’antenna. Ma nel caso in cui il contenitore dovesse essere stagno, o posizionato in auto, riducendo notevolmente la sensibilità dell’antenna? Dovremmo per forza pensare di inserire un connettore per un’antenna esterna. Fortunatamente la tecnologia ci viene in aiuto ed in special modo quella relativa alla trasmissione dati wireless a corto raggio.
Il mondo delle trasmissioni dati ha subito negli ultimi tempi un’accelerazione considerevole e se fino a pochi anni fa per connettere vari dispositivi all’interno di un’auto si sarebbe pensato al Bluetooth, oggi si può fare utilizzando la tecnologia wifi.
Per far questo, ho impiegato dei moduli XBee. Questo piccolo modulo dalle dimensioni di solo 27 x 22 millimetri (come il modulo GPS) consente di creare una piccola rete all’interno dall’auto, a costi esigui. Le uniche connessioni sono: Alimentazione (3,3V) e massa ed il TXD del modulo GPS al TXD dello XBee.
Dal lato ricevitore o ricevitori basterà fare altrettanto, e cioè fornire l’alimentazione e collegare il TXD dello XBee al ricevitore delle rispettive porte seriali.
In questo modo, il segnale ricevuto dal modulo GPS sarà trasmesso a più ricevitori, risparmiando sui costi dell’antenna (un’antenna costa come tre moduli XBee). Inoltre il modulo GPS può essere così posizionato nel punto più comodo.
Il modulo GPS può anche essere alimentato a batterie in quanto a 3,3V il consumo totale si aggira in 100mW (30mA @ 3,3V). Con le batterie in commercio ora, è possibile trasmettere per 24 ore consecutive.
Questo è un esempio tipico di connessione per moduli XBee. Sono presenti degli integrati supplementari che non serviranno se si vuole accoppiare il trasmettitore al modulo GPS.

U15 ed U16 sono infatti dei traslatori di livello programmabili attraverso il pin 5. Infatti, i pin 1, 3 e 5 sono collegati all’alimentazione a 5V, mentre i pin 2, 4 e 6 sono collegati all’alimentazione a 3,3V. In particolare il pin 5 serve per stabilire il verso del segnale. Infatti il pin 3 di U15 è collegato a massa e quindi il segnale passerà dal pin 4 (ingresso) al pin 3 (uscita) traslato di livello da 3,3 a 5 volt. Il pin 3 di U18 invece è collegato a +5 e quindi il segnale passerà dal pin 3(ingresso) al pin 4 (uscita) traslato di livello da 5 a 3,3 volt.
Nel nostro caso, questi due integrati non serviranno in quanto anche il modulo GPS può essere alimentato a 3,3V e quindi il pin 2 del modulo GPS (TDX) sarà direttamente collegato al pin 3 del modulo XBee (DIN) per essere trasmesso.
La portata di questi moduli al chiuso è di circa 60/100 Mt, quindi non ci saranno problemi all’interno dell’abitacolo nel caso si volesse usare il ricevitore in auto.
Nel caso in cui lo si volesse usare in barca, questo sistema si rivelerebbe ancora più efficace: il modulo GPS può essere posizionato nel punto più alto (al fine di facilitare la ricezione del segnale GPS) ed il ricevitore invece in ogni punto della barca, anche sotto coperta. L’uscita del circuito è TTL a 3,3 o 5V, a seconda che si usi diretto o con i traslatori di livello.
Per collegare il ricevitore alla porta seriale del PC o del win CE, è necessario inserire un ulteriore traslatore di livello, ovvero un MAX232 che restituisce in uscita i criteri della porta seriale (+/- 12V).
Lo schema di connessione è il seguente:

Si possono utilizzare più moduli del genere e collegare quindi più ricevitori al modulo GPS.
Il lavoro è ancora in corso, e molti dettagli saranno cambiati e migliorati.
La scelta dell’elettronica per la visualizzazione delle informazioni GPS non è ancora definita, ma potrebbe anche essere sviluppata in parallelo, creando un master evoluto (il dispositivo winCE) ed uno slave (dispositivo con PIC microchip).

Ottimo progetto mi piace !
Progetto davvero interessante!! Sono un pò digiuno nella programmazione Framework.net e la cosa che non ho ben capito è come si fa ad interfacciarsi direttamente alle mappe di google. Al contrario, la descrizione dell’hardware e come si estraggono i dati d’interesse dai pacchetti gps è davvero molto chiara ed esauriente. Sicuramente, ancora una volta, saltano all’attenzione le potenzialità di core ARM rispetto ad altri core/microcontrollori.
anche a me non è molto chiaro come si interfacci alle mappe di google, anche dal punto di vista della comunicazione internet. voglio dire, come fa a collegarsi ad internet in strada? scusatemi se la domanda è stupida 🙂
il ricevitore salva su scheda SD il percorso in formato kml per essere utilizzato con Google Earth.
Per la gestione delle mappe di google maps è necessaria una connessione dati che può essere fatta con la connessione tethering con uno smarthphone od in alternativa con una chivetta dati USB.
Ottimo progetto! Utilizzando le mappe di google maps si ha anche una maggiore sicurezza essendo aggiornate costantemente. Ovviamente servirà anche una connessione dati per l’aggiornamento.
avevo realizzato un navigatore GPS con un computer portatile, tramite una chiave bluetooth e un ricevitore GPS bluetooth, ma indubbiamente questo progetto va ben oltre l’assemblaggio e l’ottimizzazione di componenti.
questo potrebbe diventare molto interessante per controllare i miei marmocchi,
con un arduino Nano e togliendo tutto cosa non serve riducendoli al minimo del funzionamento,
l’ometto in fondo alla borsa sua visto il casino che c’è in fondo non vedrà,
nella sera posso controllare dove è andata a passeggio al posto di andare a scuola.
foto è un wildfire?? grazie a ki ha pubblikato se risponde
Puoi contattare l’autore direttamente dal modulo contact del suo profilo 😉