ORbit16™ GPS Logger Bitpack™ – GPS Viewer

I PCB di questo progetto sono terminati

Il GPS Logger Bitpack™ è una scheda di espansione per ORbit16™ che permette di implementare un sistema di visualizzazione delle coordinate GPS su display usando il codice sorgente del GPS Viewer.

Questa scheda, in realtà, è nata per il GPS Logger su Pendrive USB, ma per ora questo progetto è ancora in fase di beta-testing e, ad ogni modo, per il firmware del logger sarà rilasciato unicamente l’HEX ma… non vi disperate: il GPS Logger difatti utilizza le stesse identiche funzioni del GPS Viewer (per il quale è invece fornito il sorgente completo di progetto MPLAB) alle quali è stata quindi aggiunta la possibilità di memorizzare le coordinate su pendrive usb sfruttando le librerie già illustrate (e complete anch’esse di sorgente). In aggiunta sono disponibili anche i sorgenti Eagle del GPS Logger BitPack™.

Il GPS Viewer può utilizzare due diversi tipi di display: un display classico compatibile HD44780 da 4 righe x 20 caratteri (pilotato in I2C attraverso un IO Expander PCF8574) oppure un display grafico 84×48 basato sul controller PCD8544 (Nokia 3310/5110), oppure anche entrambi contemporaneamente!

Nota: il circuito del GPS Logger BitPack™ è fatto per alloggiare unicamente il display grafico Nokia

La selezione dell’uno dell’altro display viene eseguita nel file settings.h a riga 50 e 51:

50
51
#define USE_NOKIA_LCD	// Uncomment this if you want to use a PCF8574-based LCD
#define USE_HD44780_LCD // Uncomment this if you want to use a HD44780-based LCD through a PCF8574 IO Expander

Commentando la riga relativa non vengono più caricate le rispettive librerie, di default le righe non sono commentate per cui è previsto l’utilizzo di entrambi i display.

Il firmware riceve i dati dal ricevitore GPS, elabora la frase $GPRMC, ne estrae i dati e li mostra sul/sui display. Vengono visualizzate le coordinate, l’orario/data inviato dal satellite (opportunamente corretto) e lo stato di acquisizione (Fixed / No Fixed). Le coordinate normalmente inviate dal ricevitore GPS sono nella forma DDMM.MMMM: questo formato è poco utile dal momento che non è utilizzato da nessun programma noto. Il firmware esegue quindi la conversione delle coordinate per esprimerle in decimale nel formato DD.DDDDD°, molto più utile e direttamente utilizzabile con programmi come Google Maps, Google Earth e altri, per cui potete immaginare il sorgente che opportunità vi offre.

Ne approfitto per ringraziare Stefano Saccucci, con il quale abbiamo collaborato tempo addietro per la realizzazione di alcune funzioni di parsing.

In aggiunta, l’orario ricevuto dai satelliti è un orario UTC, per riportare tale orario a quello del nostro emisfero basta agire a riga 52 di settings.h in cui viene impostato il numero di ore da aggiungere/sottrarre:

52
#define HourC	1 // hours to add UTC

Il codice è fatto per lavorare con un ricevitore GPS avente la UART operante a 4800bps, se il GPS in vostro possesso non lavora a questo baudrate, dovete modificare il valore di BRG a riga 152:

152
OpenUART1 (U1MODEvalue, U1STAvalue, 207);

In particolare il valore 207 è calcolato per un baudrate di 4800bps, per valori diversi è riportata la formula nei commenti. La UART è quindi configurata per avere la funzione RX sul pin RP3 (indicato come BP3 su ORbit16™). Non ho configurato la funzione TX perchè non mi serve a nulla inviare dati all’antenna GPS, ad ogni modo se dovesse servirvi, questa configurazione è già pronta ma commentata.

Ho utilizzato un ricevitore GPS EM-406. Tale ricevitore opera a 5V per cui è necessario adattare il livello utilizzando un partitore di tensione. Sul GPS Logger BitPack™ ho predisposto un connettore maschio a 90° che ricalca il pinout dell’EM-406 e che ho siglato come JP1:

Il pin TX del ricevitore GPS viene collegato su R5. Il partitore formato da R5 e R6 assicura che nel punto centrale, nel quale viene collegato il pin RX del picmicro, il livello logico alto di 5V diventi 3.3V e quindi compatibile con l’ingresso scelto. Se utilizzate un ricevitore GPS operante a 3.3V non avete bisogno di ricorrere a questo accorgimento.

Nota: lo spazio sul GPS Logger BitPack™ è fatto per alloggiare l’EM-406 o comunque un ricevitore GPS avente più o meno le stesse dimensioni. Il ricevitore GPS viene fissato con del biadesivo, per ulteriori informazioni sul montaggio potete osservare la galleria fotografica in fondo all’articolo.

Per il collegamento del display HD44780 fate riferimento al manuale di utilizzo della relativa libreria, in cui sono illustrati lo schema e i settaggi. In particolare è necessario un display da 20 caratteri per 4 righe. Se volete usare un display più piccolo dovrete modificarvi il codice perchè mostri meno informazioni. Il pcb del GPS Logger BitPack™ è  fatto per utilizzare unicamente il display Nokia, se volete utilizzare il display HD44780 dovrete realizzarvi da soli una scheda. In ogni caso per gli utenti di ORbit16™ è disponibile lo schema in formato Eagle, in questo modo potete modificare il PCB a vostro piacimento e utilizzare quindi altri connettori o altri ricevitori GPS.

Per il collegamento del display Nokia invece i settaggi sono quelli riportati nel file nlcd.h e ricalcano lo schema elettrico del GPS Logger BitPack™:

  • Clock (indicato come CLK o SCLK) su RA1 (A1/P6)
  • Data In (indicato come DIN, DN, MOSI, DATA ecc) su RB0 (BP0)
  • Data/Command (DC o D/C) su RB1 (BP1)
  • Reset (RESET o RST) su RB2 (BP2)

Come ottenere un GPS Logger BitPack™ per ORbit16™

Per questa scheda non ho previsto di farmi realizzare un PCB industriale dal momento che lo scopo di realizzare ORbit16™ nel modo che ho progettato è proprio quello di permettere a tutti di realizzarsi gli accessori in maniera facile. Ad ogni modo se non siete in grado di realizzare la basetta da soli, posso realizzarvela io e spedirla tramite posta ordinaria.

Per quanto riguarda i componenti necessari per completare il PCB potete trovarli tutti su Robot-Italy, (ho messo il link  solo per i componenti principali):

  • LCD Nokia 3310/5110 (link)
  • 2x resistenza 330Ω ¼W
  • 2x resistenza 560Ω ¼W
  • 1x resistenza 12KΩ ¼W
  • 1x resistenza 22KΩ ¼W
  • 2x condensatore ceramico 100nF (passo 2.5mm)
  • 2x led 3mm
  • 1x pulsante da pcb 12x12mm (link – quelli che vi avanzano li potete usare per il Joystick BitPack™ :D)
  • 1x pulsante da pcb 6x6mm
  • 1x strip maschio 6 pin angolo retto
  • 2x strip maschio 20 pin
  • 2x strip femmina 8 pin (per il collegamento del display)
  • ricevitore GPS EM-406 (link)
  • cavetto per ricevitore GPS EM-406 (link)
  • connettore adatto da sostituire al cavetto per il gps e innestare nel connettore 6 pin angolo retto

Il ricevitore GPS EM-406 utilizza purtroppo  un connettore particolare ed è necessario un cavetto tipo questo, il cavetto si taglia ad un’estremità e si utilizza un connettore standard a 6 poli con il passo da 2.54mm. Io ad esempio ho utilizzato questo tipo di connettore, ma ho sostituito il maschio con uno strip a 90° in modo che non dia fastidio al display che va montato sopra. Vedete le foto per maggiori informazioni. Ad ogni modo è disponibile il sorgente Eagle per cui, volendo, potete modificare il tutto per utilizzare lo stesso connettore del cavetto e non tagliare nulla.

Per il collegamento/saldatura dei due strip maschio da 20 pin, che servono per il collegamento del BitPack™ su ORbit16™, dovete usare lo stesso sistema che ho illustrato qui.

Link alla pagina ufficiale del progetto GPS Viewer

Il download dei sorgenti è riservato esclusivamente a coloro che hanno acquistato una ORbit16™. Avviso che sono disponibili i nuovi PCB revisione 2A, se siete interessati affrettatevi. Qui maggiori informazioni.

Galleria fotografica

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)