GPS + OLED display demo con chipKIT UNO32™
Sfruttando il Pmod Shield UNO per chipKIT UNO32™ e la schedina Pmod compatibile che ho realizzato qualche tempo fa con il ricevitore GPS Globaltop FGPMMOPA6H ho preparato una demo che legge i dati provenienti dal ricevitore GPS e li riporta sul display del PMod OLED :
Il PMod Oled consente di avere a bordo un display OLED monocromatico (bianco su sfondo nero) da 128×32 pixel, con la piedinatura tipica dei PMods, quindi direttamente utilizzabile su schede Cerebot e sul PMod Shield UNO. Il display è lo stesso tipo che abbiamo già incontrato tempo fa sul Basic IO Shield, quindi vale tutto quello che è già stato detto in precedenza.
La demo è abbastanza semplice, per l’estrazione dei dati dal ricevitore GPS ho preso spunto da un lavoro di Gonzalez Martin apportando alcune modifiche. Il procedimento è semplice: si resta in ascolto sulla seriale in attesa di ricevere il carattere di nuova linea (line feed, 0x0A) dato che le frasi GPS terminano tutte con un carriage return e un line feed.
Si comincia quindi a memorizzare la frase GPS ricevuta in un buffer. Vengono controllati i primi 6 caratteri del buffer per assicurarsi che corrispondano alla stringa $GPRMC che identifica la frase GPS che ci interessa, nella quale sono contenuti data/orario in formato UTC, latitudine, longitudine e stato di acquisizione dei satelliti. Anzichè la frase $GPRMC alcuni preferiscono estrarre la $GPGGA che contiene anche il numero di satelliti, ma non contiene la data. Un elenco dettagliato delle frasi NMEA restituiti dai ricevitori GPS potete trovarlo qui, ma tenete conto che non tutti i ricevitori GPS possono tirare fuori tutte le frasi.
Se i primi 6 caratteri del buffer corrispondono alla stringa $GPRMC, si passa a memorizzare tutta la frase, salvando in un array a parte la posizione delle virgole che ci servirà per separare i vari pezzi che compongono la frase. La memorizzazione termina nel momento in cui incontriamo il carattere * che delimita la fine della stringa. A questo punto, conoscendo com’è strutturata la frase e la posizione delle virgole, estrarre i singoli componenti dal buffer è questione banale.
Mostro quindi i dati sul display OLED sfruttando le librerie della Digilent. Sul display, in basso a destra riporto un “NO” se lo stato di acquisizione non è “fixed”, e un OK se lo è. I 4 led inclusi sul Pmod shield si accendono e spengono in sequenza con velocità più bassa se lo stato non è fixed. I dati prelevati dal GPS sono riportati tal quale senza conversioni.
Indice dei contenuti
Note sul montaggio
Per questa demo avete bisogno di un chipKIT UNO32, del chipKIT Pmod Shield UNO, del PMod OLED e di un ricevitore GPS compatibile Pmod. Le librerie per il display OLED le potete scaricare nella pagina ufficiale. Le librerie vanno copiate in una cartella “libraries” presente nella cartella degli sketch (non la cartella libraries dell’IDE!).
Localizziamo quindi la cartella dove vengono salvati gli sketch. Tale cartella viene impostata in MPIDE (così come nell’ide di Arduino) dal menù File -> Preferences. Generalmente è Documenti\mpide. Bene, andiamo in questa cartella e creiamo una cartella “libraries” qualora non fosse già presente e copiamo all’interno la cartella OLED.
Il Pmod OLED va montato sull’header JC e il ricevitore GPS, dotato di scheda PMod-compatibile, va montato nella fila superiore dell’header JD. Da MPIDE bisogna selezionare la board-variant chipKIT UNO32 with Pmod shield (menù tools->board)
Downloads
chipKIT GPS + OLED demo (366 download)
Links
- Mirifica : Acquisto prodotti Digilent e ricevitore GPS
- Pmod OLED
- Articolo sul Pmod shield
- Articolo sul ricevitore Globaltop FGPMMOPA6H