venerdì 9 ottobre 2015

Confronto tra moduli GPS per Arduino

Per riprendere il discorso che avevo iniziato qui con Android, mi sono comprato un paio di moduli GPS Breakout da interfacciare ad Arduino

Avevo quindi la necessita' di comprare due moduli GPS uguali e mi sono orientato sul GPS Breakout di Adafruit. Ho fatto l'errore pero' di comprarne un modulo su Aliexpress ed uno su RobotItaly



Indicativamente i due moduli sembrano identici ma si osservi  che quello acquistato da RobotItaly riporta sulla faccia la sigla Adafruit mentre quello comprato in Cina non ha la sigla sul davanti mentre sul retro riporta Deek-Robot. A parte cio' la disposizione dei componenti e' simile a parte il fatto che il led del Fix e' rosso su Adafruit e' rosso mentre e' verde su Deek-Robot (a livello di prezzo sono quasi simili, 40 Euro per Adafruit contro circa 25 Euro per Deek-Robot)

Entrambi sono dichiarati avere in chipset MTK3339 (22 satelliti su 66 canali) abilitati a ricevere correzione SBAS/WAAS

Oltre  al livello hardware, ho potuto notare alcune differenze penso a livello di firmware. Il modello DeekRobot e' estremamente veloce nel fare il fix del punto ed ad acquisire il fix del DPGS oltre a ricevere un elevato numero di satelliti al contrario del modello Adafruit  a cui occorrono anche minuti per fare il fix normale ed il fix DGPS. Peraltro quando il componente DeekRoboto ha ottenuto il fix GPS non lampeggia il led mentre quello Adafruit continua ad accendere il led anche a fix acquisito

Messi a confronto con una acquisizione in parallelo in condizioni ottimali di visibilita' del cielo (da 7 a 8 satelliti visibili) si osserva il comportamento completamente differente dei dati registrati


I dati di Adafruit (in blu) sono molto raggruppati attorno a quello che e' il punto vero di misura (peraltro il valore medio della misura corrisponde alla posizione reale) mentre i dati di Deek-Robot (in verde) mostrano una deriva del segnale anche molto lontano dal punto reale di misure (i due GPS erano ubicati affiancati a distanza di 40 cm con un tempo di acquisizione di oltre 15 minuti)

I due punti gialli sono il baricentro delle due serie di misura. Il baricentro della serie verde e' esterno alla nuvola dei punti mentre quello della serie blu si trova al centro della propria nuvola dei punti

Da questa prova i risultati dei due componenti sono totalmente differenti e non correlabili.

La stessa prova e' stata fatta anche in ambiente urbano con una visibilita' del cielo limitata dalla presenza di alti palazzi (in genere erano visibili solo 5 satelliti)


In questo caso la distribuzione dei dati e' molto piu' spargliata (come prevedibile). C'e' pero da osservare un dettaglio; plottando Lat_GPS1 contro Lat_GPS2 e Lon_GPS1 contro Lon_GPS2 si osserva un tracciato che mostra una curiosa similarita' (i punti di medesimo colore sono relativi allo stesso minuto di acquisizione)

Correlazione Latitudine
Correlazione Longitudine
Plottando la distanza tra i punti dei due GPS (mettendo insieme dati ad uguale orario) si continua ad osservare una correlazione (seppure variabile nel tempo)


In conclusione, nonostante la somiglianza dei due componenti, questi si comportano in modo differenti e non e'stato possibile ripetere l'esperienza fatta con i due telefoni Android. Da un punto di vista della scelta, il componente Adafruit, nonostante la lentezza nell'effettuare il fix gps ed il fix dgps e nonostante la difficolta' ad agganciare un alto numero di satelliti sembra ottenere le prestazioni migliori in condizioni di cielo aperto e prestazioni simili ad Deek Robot in ambiente urbano