Connessione e lettura dei dati.
Collegamento ad Arduino.
Colleghiamo secondo il seguente schema. Se lo schema di collegamento è alimentato a 5V, dobbiamo collegare il pin RX del modulo GPS tramite un partitore di tensione. Vedi lo schema Figura 1.
GPS VCC -> MEGA PIN 5V
GPS RX -> MEGA TX1 (18)
GPS TX -> MEGA RX1 (19)
GPS GND -> MEGA PIN GND

Figura 1
Visualizzazione dei dati inviati dal modulo.
Il tempo necessario per stabilire una connessione con i satelliti durante il primo lancio può richiedere fino a 45 minuti, questo si chiama avvio a "freddo". Il modulo carica l'almanacco e le effemeridi. L'almanacco contiene i parametri delle orbite di tutti i satelliti e l'effemeride contiene i parametri delle orbite e degli orologi di un particolare satellite, i dati dell'almanacco sono validi per 30 giorni, l'effemeride è di 30 minuti. Se sono presenti l'almanacco e le effemeridi aggiornati, il lancio è molto più veloce.
Schizzo per l'output dei dati:
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
while (Serial1.available() > 0)
Serial.write(Serial1.read());
}
Dettagli sui dati ricevuti.
Il modulo invia i dati sotto forma di messaggi NMEA.
In questo formato riceviamo i dati dal modulo GPS GY-NEO6MV2 (Figura 2).

Figura 2
Brevemente sugli identificatori dei dati:
- GPGGA - dati dell'ultima posizione.
- GPGLL - coordinate latitudine/longitudine.
- GPGSA - DOP (GPS) e satelliti attivi.
- GPGSV - satelliti osservati.
- GPRMC - dati minimi di navigazione consigliati.
Decodifica valori da identificatori.
Stringa RMC (proprio esempio):
$GPRMC,hhmmss.sss,Status,ddmm.mmmm,N/SIndicator,dddmm.mmmm,E/WIndicator,
SpeedOverGround,CourseOverGround,ddmmyy,MagneticVariation,East/WestIndicator,Mode*Checksum
- "GP" - identificatore della fonte, nell'esempio riportato si tratta di GPS, "GL" - GLONASS, "GA" - Galileo, "GN" - GLONASS+GPS, ecc.
- "RMC" ("Recommended Minimum Specific GNSS Data") - dati GNSS specifici minimi consigliati.
- "hhmmss.sss" (UTC Time) - è l'ora in cui viene fissata la posizione in base all'UTC: "hh" sono le ore, "mm" sono i minuti, "ss.sss" sono i secondi. La durata delle frazioni di secondo varia. Gli zeri iniziali non vengono omessi.
- "Status" - stato: "A" - i dati sono affidabili, "V" - i dati sono inaffidabili.
- "ddmm.mmmm" (Latitude) - latitudine. 2 cifre di gradi ("GG"), 2 cifre di minuti interi, un punto e una parte frazionaria di minuti di durata variabile. Gli zeri iniziali non vengono omessi.
- "N/S Indicator" - "N" per la latitudine settentrionale o "S" per la latitudine meridionale.
- "dddmm.mmmm" (Longitude) - longitudine. 3 cifre di gradi ("ggg"), 2 cifre di minuti interi, un punto e una parte frazionaria di minuti di durata variabile. Gli zeri iniziali non vengono omessi.
- "E/W Indicator" - "E" per longitudine est o "W" per longitudine ovest.
- "Speed Over Ground" - è la componente orizzontale della velocità rispetto al suolo espressa in nodi. Numero in virgola mobile. Parti intere e frazionarie di lunghezza variabile.
- "Course Over Ground" - è l'angolo della traccia (direzione della velocità) in gradi. Numero in virgola mobile. Parti intere e frazionarie di lunghezza variabile. Un valore pari a 0 corrisponde al movimento verso nord, 90 verso est, 180 verso sud, 270 verso ovest.
- "ddmmyy" (Date) - giorno del mese, mese, ultime 2 cifre dell'anno (sono obbligatori gli zeri iniziali).
- "Magnetic Variation" - è la declinazione magnetica in gradi (spesso mancante), calcolata utilizzando qualche modello. Numero in virgola mobile. Parti intere e frazionarie di lunghezza variabile.
- "East/West Indicator" - direzione della declinazione magnetica: per ottenere una rotta magnetica, è necessario sottrarre la declinazione magnetica "E" - sommare "W" - alla rotta vera.
- "Mode" - indicatore della modalità: "A" - dati affidabili , "D" - differenziale, "E" - approssimazione, "N" - dati inaffidabili (spesso mancanti, questo campo inclusa la virgola manca nelle versioni precedenti di NMEA).
- "*Checksum" - somma di controllo.
Esempi di stringhe RMC:
Esempio 1.
$GPRMC,hhmmss.sss,Status,ddmm.mm,N/SIndicator ,dddmm.mm,E/WIndicator ,SpeedOverGround,,ddmmyy,,,*Checksum - il modulo riceve il segnale dai satelliti.
Esempio 2.
$GPRMC,,Status,,,,,,,ddmmyy,MagneticVariation,,*Checksum - se mancano campi con valori significa che non c'è segnale dai satelliti.
Per altri identificatori: GPGGA, GPGLL, GPGSA, GPGSV, vedere i file pdf "NMEA Reference Manual":