Sommario:

Monitoraggio GPS con progetto display OLED: 5 passaggi (con immagini)
Monitoraggio GPS con progetto display OLED: 5 passaggi (con immagini)

Video: Monitoraggio GPS con progetto display OLED: 5 passaggi (con immagini)

Video: Monitoraggio GPS con progetto display OLED: 5 passaggi (con immagini)
Video: Display e-paper con esphome italiano 2024, Dicembre
Anonim
Monitoraggio GPS con progetto display OLED
Monitoraggio GPS con progetto display OLED
Monitoraggio GPS con progetto display OLED
Monitoraggio GPS con progetto display OLED
Monitoraggio GPS con progetto display OLED
Monitoraggio GPS con progetto display OLED
Monitoraggio GPS con progetto display OLED
Monitoraggio GPS con progetto display OLED

Ciao a tutti, in questo rapido articolo condividerò con voi il mio progetto: modulo GPS ATGM332D con microcontrollore SAMD21J18 e display SSD1306 OLED 128*64, ho costruito un PCB speciale per esso su Eagle Autodesk e lo programma utilizzando Atmel studio 7.0 e ASF4 così in questo articolo condividerò con te questo viaggio e i file che ho usato se ti interessa farlo da solo.

Ora se stai programmando la tua MCU/scheda di sviluppo usando Arduino, questo progetto dovrebbe essere relativamente facile per te, ma qui userò ASF4 (framwork software avanzato 4) di Atmel/Microchip che si basa sul linguaggio C e ti darebbe un'idea per come leggere il messaggio GPS NMEA utilizzando il driver USART Asincrono (Callback) e fornirti una semplice libreria che puoi utilizzare con qualsiasi Microcontrollore e piattaforma diversa semplicemente aggiungendo il Driver appropriato che stai utilizzando per ricevere il messaggio dal GPS (messaggio NMEA).

Dividerò questo articolo in:

  1. Progettazione PCB.
  2. BOM è necessario assemblare il PCB
  3. Un rapido sguardo al software e al codice stesso e un test per l'hardware e il software.
  4. infine, ma non meno importante, qualche punto di miglioramento per questo progetto.

Troverai tutto il materiale relativo a questo progetto su Github (qui)

Passaggio 1: progettazione PCB utilizzando Eagle

Progettazione PCB con Eagle
Progettazione PCB con Eagle
Progettazione PCB con Eagle
Progettazione PCB con Eagle
Progettazione PCB con Eagle
Progettazione PCB con Eagle
Progettazione PCB con Eagle
Progettazione PCB con Eagle

Questo progetto si basa principalmente sul modulo GPS ATGM332D, GPS semplice da utilizzare poiché ha bisogno solo di un paio di componenti passivi per funzionare e potremmo aggiungere una batteria di backup per salvare l'ora/data se spegniamo la fonte di alimentazione principale dal modulo.

e per controllare tutti i segnali nel circuito sono andato con il microcontrollore ATSAMD21J18B, il pacchetto TQFP64 poiché ha 128 KB di memoria di programma e 32 KB di memoria dati (e ne ho molti sul mio banco di lavoro).

il circuito deve essere alimentato da una sorgente USB 5V, inoltre l'USB può fungere da porta COM virtuale (CDC USB) ed è possibile aggiungere un codice per esso se si desidera comunicare con il dispositivo tramite USB.

per il display ho selezionato SSD1306 display OLED da 0,96' con bus SPI, è piccolo ma è adatto alle dimensioni del PCB che volevo, la dimensione della scheda 100x31 mm.

la programmazione del microcontrollore avverrà tramite il programmatore SWD (io uso Atmel ICE) e lo collegherò tramite un connettore pin da 1,27 mm 10p.

inoltre ho usato Fusion360 per ottenere una vista 3D per la scheda e puoi vedere anche alcune immagini renderizzate.

Passaggio 2: saldatura del PCB

Saldatura del PCB
Saldatura del PCB
Saldatura del PCB
Saldatura del PCB
Saldare il PCB
Saldare il PCB

Hai la possibilità di ordinare uno stencil con il tuo PCB, è più facile applicare la pasta saldante sulla scheda usando lo stencil, ho usato la piastra calda per saldare i componenti insieme, anche l'uso dell'aria calda è OK ma fai attenzione durante la saldatura del LED poiché sono così sensibili al calore.

saldare il lato inferiore è un po' più semplice poiché ha solo l'intestazione del pin SWD e la batteria di backup, che puoi saldare usando il saldatore.

prima di collegare il circuito con qualsiasi fonte di alimentazione USB, verificare eventuali cortocircuiti.

collega l'antenna GPS e assicurati di saldare correttamente il connettore, ho fissato l'antenna sul lato inferiore della scheda.

Fase 3: Software… Funzionalità… Risultati

Image
Image
Software… Funzionalità… Risultati
Software… Funzionalità… Risultati
Software… Funzionalità… Risultati
Software… Funzionalità… Risultati

Il software sarà diviso in 4 parti:

  1. USART per comunicare con il modulo GPS ATGM332.
  2. SPI per comunicare con OLED.
  3. USB CDC.
  4. GPIO per controllare i LED

collegare prima il connettore USB per accendere il circuito e quindi collegare il cavo a nastro con connettore SWD.

Scarica il codice da github (Link qui).

per ottenere la Geo-Localizzazione hai 3 diverse opzioni di messaggi NMEA:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Ho usato la frase GPRMC per ottenere la posizione, l'ora e la data (l'ora è 0.0 GMT) quindi nel codice troverai:

GPRMC. Enable=1;/*0 se non è necessario questo messaggio*/

GPGGA. Enable=0;/*0 se non è necessario questo messaggio*/

GPGLL. Enable=0;/*0 se non è necessario questo messaggio*/

puoi abilitarli tutti insieme e leggerli allo stesso tempo ottenere i dati di cui hai bisogno.

una volta che c'è una frase GPRMC valida, theGPRMC. Ready diventerà 1 e puoi ottenere tutti i dati disponibili in questa frase, controlla questo link per vedere i dati disponibili in questa frase.

semplicemente se Fix è 'A' significa che la posizione è disponibile, se Fix è 'V' significa che la posizione non è disponibile.

nota che ATSAMD21 ha un RTC interno, ma qui non lo uso e invece uso ora e data direttamente dal GPS, quindi se non vuoi usare la batteria di backup CR1220, una volta scollegata la fonte di alimentazione USB lo farai perdere l'ora/data e alla successiva accensione del circuito l'area ora/data sul display sarà vuota finché il GPS non avrà un valore di ora/data valido.

il display ti mostrerà lo stato attuale del GPS e ti mostrerà la Geo-localizzazione una volta che sarà disponibile, tuttavia ci sono 3 LED sulla Scheda:

  1. LED verde collegato a PA06 e lampeggia se è presente un valore di geolocalizzazione valido.
  2. LED arancione collegato a PA07 e lampeggia una volta al secondo se non è presente una geolocalizzazione valida.
  3. LED rosso questo è collegato al pin PPS del Modulo GPS e lampeggerà solo quando c'è un segnale valido relativo alla posizione.

Risultati

Il circuito ha funzionato molto bene con me, ottenere la geolocalizzazione dal GPS ha impiegato 20-30 secondi all'aperto con una visione chiara del cielo e tra gli edifici senza alcun problema anche con l'antenna sul lato inferiore della scheda.

Passaggio 4: custodia stampata in 3D… una specie di

Custodia stampata in 3D… una specie di
Custodia stampata in 3D… una specie di

Ho preparato un caso semplice (supporto più preciso) per questo circuito ma a causa dell'epidemia di COVID-19 e del blocco in cui mi trovo in questo momento, non sono riuscito a raggiungere la mia stampante 3d per stamparlo, quindi aggiornerò questa sezione con stl file e una foto per il titolare una volta disponibile.

Passaggio 5: cose da migliorare…

Cose da migliorare…
Cose da migliorare…
Cose da migliorare…
Cose da migliorare…
Cose da migliorare…
Cose da migliorare…
  1. Spostando il connettore SWD verso il lato superiore poiché è più facile collegarlo al tuo programmatore.
  2. Alimentando il circuito dalla batteria al litio, l'ho fatto saldando un ponticello e ha funzionato bene, tenendo presente che il regolatore lineare (LDO) ha una tensione di caduta V se (Vbat - Vout) inferiore al limite Vdrop il circuito potrebbe non funzionare propriamente.
  3. rendere un pulsante utente un po' più grande in modo che sia più facile da premere.
  4. aggiungendo il codice USB CDC in modo da poter comunicare/progettare un programma speciale per MAC/PC/linux.
  5. Per l'antenna GPS, ho usato l'antenna attiva per questo progetto, utilizzando un'antenna passiva è possibile, aggiungendo un op-Amp a basso rumore come AT2659 (controlla anche lo schema su ATGM332 Datasheet P.14).
  6. per OLED 0.96' SSD1306, la libreria ufficiale di microchip originariamente per display 128*32, per modificare il codice per lavorare con 128*64 devi andare su ssd1306.c e modificare il codice (controlla l'immagine).

Consigliato: