Sommario:

Interfaccia Arduino Mega con modulo GPS (Neo-6M): 8 passaggi
Interfaccia Arduino Mega con modulo GPS (Neo-6M): 8 passaggi

Video: Interfaccia Arduino Mega con modulo GPS (Neo-6M): 8 passaggi

Video: Interfaccia Arduino Mega con modulo GPS (Neo-6M): 8 passaggi
Video: GPS Module Tutorial | GPS NEO 6M/7M/8M | Arduino 2024, Giugno
Anonim
Interfaccia Arduino Mega Con Modulo GPS (Neo-6M)
Interfaccia Arduino Mega Con Modulo GPS (Neo-6M)

In questo progetto ho mostrato come interfacciare un modulo GPS (Neo-6M) con Arduino Mega. La libreria TinyGPS viene utilizzata per visualizzare i dati di Longitudine e Latitudine e TinyGPS++ viene utilizzata per visualizzare Latitudine, Longitudine, Altitudine, Velocità e numero di satelliti sul monitor seriale.

Passaggio 1: componenti necessari

Hardware

  • Arduino Mega ==> $ 30
  • Modulo GPS Neo-6M ==> $ 30

Software

Arduino IDE

Il costo totale del progetto è di $ 60

Passaggio 2: informazioni sul GPS

Cos'è il GPS?

Il Global Positioning System (GPS) è un sistema di navigazione satellitare composto da almeno 24 satelliti. Il GPS funziona in qualsiasi condizione atmosferica, in qualsiasi parte del mondo, 24 ore al giorno, senza costi di abbonamento o costi di installazione.

Come funziona il GPS

I satelliti GPS girano intorno alla Terra due volte al giorno in un'orbita precisa. Ogni satellite trasmette un segnale unico e parametri orbitali che consentono ai dispositivi GPS di decodificare e calcolare la posizione precisa del satellite. I ricevitori GPS utilizzano queste informazioni e la trilaterazione per calcolare la posizione esatta di un utente. In sostanza, il ricevitore GPS misura la distanza da ciascun satellite in base al tempo necessario per ricevere un segnale trasmesso. Con le misurazioni della distanza da alcuni satelliti in più, il ricevitore può determinare la posizione di un utente e visualizzarla.

Per calcolare la tua posizione 2D (latitudine e longitudine) e tracciare il movimento, un ricevitore GPS deve essere agganciato al segnale di almeno 3 satelliti. Con 4 o più satelliti in vista, il ricevitore può determinare la tua posizione 3D (latitudine, longitudine e altitudine). Generalmente, un ricevitore GPS traccia 8 o più satelliti, ma ciò dipende dall'ora del giorno e da dove ti trovi sulla terra. Una volta che la tua posizione è stata determinata, l'unità GPS può calcolare altre informazioni, come ad esempio

  • Velocità
  • Cuscinetto
  • Traccia
  • Distanza di viaggio
  • Distanza dalla destinazione

Cos'è il segnale?

I satelliti GPS trasmettono almeno 2 segnali radio a bassa potenza. I segnali viaggiano per linea di vista, il che significa che attraverseranno nuvole, vetro e plastica ma non attraverseranno la maggior parte degli oggetti solidi, come edifici e montagne. Tuttavia, i ricevitori moderni sono più sensibili e di solito possono tracciare attraverso le case. Un segnale GPS contiene 3 diversi tipi di informazioni

Codice pseudocasuale

È un documento d'identità codice che identifica quale satellite sta trasmettendo informazioni. Puoi vedere da quali satelliti ricevi i segnali sulla pagina dei satelliti del tuo dispositivo.

Dati effemeridi

I dati sulle effemeridi sono necessari per determinare la posizione di un satellite e forniscono informazioni importanti sullo stato di salute di un satellite, data e ora correnti.

Dati dell'almanacco

I dati dell'almanacco indicano al ricevitore GPS dove dovrebbe essere ogni satellite GPS in qualsiasi momento durante il giorno e mostrano le informazioni orbitali per quel satellite e per ogni altro satellite nel sistema.

Passaggio 3: modulo GPS Neo-6M

Il modulo GPS NEO-6M è mostrato nella figura seguente. Viene fornito con un'antenna esterna e non viene fornito con pin di intestazione. Quindi dovrai saldarlo.

Panoramica del modulo GPS NEO-6M

Chip GPS NEO-6M

Il cuore del modulo è un chip GPS NEO-6M di u-blox. Può tracciare fino a 22 satelliti su 50 canali e raggiunge il più alto livello di sensibilità del settore, ovvero un tracciamento di -161 dB, consumando solo 45 mA di corrente di alimentazione. Il motore di posizionamento u-blox 6 vanta anche un Time-To-First-Fix (TTFF) inferiore a 1 secondo. Una delle migliori caratteristiche fornite dal chip è la modalità di risparmio energetico (PSM). Consente una riduzione del consumo energetico del sistema accendendo e spegnendo selettivamente parti del ricevitore. Ciò riduce drasticamente il consumo energetico del modulo a soli 11 mA rendendolo adatto per applicazioni sensibili all'alimentazione come l'orologio da polso GPS. I pin di dati necessari del chip GPS NEO-6M sono suddivisi in intestazioni di passo da 0,1 . Ciò include i pin necessari per la comunicazione con un microcontrollore su UART.

Nota: il modulo supporta baud rate da 4800 bps a 230400 bps con baud predefinito di 9600.

Indicatore LED di posizione fissa

C'è un LED sul modulo GPS NEO-6M che indica lo stato di Position Fix. Lampeggerà a varie velocità a seconda dello stato in cui si trova

  1. Nessun lampeggio ==> significa che sta cercando i satelliti
  2. Lampeggia ogni 1s – significa che la correzione della posizione è stata trovata

Regolatore LDO da 3,3 V

La tensione operativa del chip NEO-6M va da 2,7 a 3,6 V. Tuttavia, il modulo viene fornito con il regolatore 3V3 a caduta ultra bassa MIC5205 di MICREL. I pin logici sono anche tolleranti a 5 volt, quindi possiamo collegarlo facilmente a un Arduino o a qualsiasi microcontrollore logico a 5 V senza utilizzare alcun convertitore di livello logico.

Batteria e EEPROM

Il modulo è dotato di una EEPROM seriale a due fili HK24C32. Ha una dimensione di 4 KB ed è collegato al chip NEO-6M tramite I2C. Il modulo contiene anche una batteria a bottone ricaricabile che funge da supercondensatore.

Una EEPROM insieme alla batteria aiuta a mantenere la RAM con batteria tampone (BBR). Il BBR contiene i dati dell'orologio, i dati di posizione più recenti (dati orbitali GNSS) e la configurazione del modulo. Ma non è pensato per l'archiviazione permanente dei dati.

Poiché la batteria mantiene l'orologio e l'ultima posizione, il tempo di prima correzione (TTFF) si riduce significativamente a 1 secondo. Ciò consente blocchi di posizione molto più rapidi.

Senza la batteria il GPS si avvia sempre a freddo, quindi il blocco GPS iniziale richiede più tempo. La batteria si carica automaticamente quando viene applicata l'alimentazione e conserva i dati fino a due settimane senza alimentazione.

pinout

GND è il pin di terra e deve essere collegato al pin GND di Arduino

Il pin TxD (trasmettitore) viene utilizzato per la comunicazione seriale

Il pin RxD (ricevitore) viene utilizzato per la comunicazione seriale

VCC fornisce alimentazione al modulo. Puoi collegarlo direttamente al pin 5V su Arduino

Passaggio 4: Arduino Mega

Arduino è una piattaforma elettronica open source basata su hardware e software di facile utilizzo. Le schede Arduino sono in grado di leggere input - luce su un sensore, un dito su un pulsante o un messaggio Twitter - e trasformarlo in un output - attivando un motore, accendendo un LED, pubblicando qualcosa online. Puoi dire alla tua scheda cosa fare inviando una serie di istruzioni al microcontrollore sulla scheda. Per farlo si utilizza il linguaggio di programmazione Arduino (basato su Wiring) e il Software Arduino (IDE), basato su Processing.

Arduino Mega

Arduino Mega 2560 è una scheda microcontrollore basata su Atmega2560.

  • Ci sono 54 pin I/O digitali e 16 pin analogici incorporati sulla scheda che rendono questo dispositivo unico e si distingue dagli altri. Su 54 I/O digitali, 15 sono utilizzati per PWM (modulazione di larghezza di impulso).
  • Sulla scheda viene aggiunto un oscillatore a cristallo di frequenza 16MHz.
  • La scheda viene fornita con una porta per cavo USB che viene utilizzata per collegare e trasferire il codice dal computer alla scheda.
  • Il jack di alimentazione CC è accoppiato con la scheda utilizzata per alimentare la scheda.
  • La scheda viene fornita con due regolatori di tensione, ad esempio 5 V e 3,3 V che offrono la flessibilità di regolare la tensione secondo i requisiti.
  • C'è un pulsante di reset e 4 porte seriali hardware chiamate USART che producono una velocità massima per l'impostazione della comunicazione.
  • Ci sono tre modi per alimentare la scheda. Puoi utilizzare un cavo USB per alimentare la scheda e trasferire il codice alla scheda oppure puoi accenderla utilizzando Vin della scheda o tramite jack di alimentazione o pastella.

Specifiche

pinout

Pin Descrizione

  • 5V e 3,3V ==>Questo pin viene utilizzato per fornire una tensione regolata in uscita intorno a 5V. Questo alimentatore regolato alimenta il controller e altri componenti sulla scheda. Può essere ottenuto da Vin della scheda o cavo USB o un altro alimentatore di tensione 5V regolato. Mentre un'altra regolazione della tensione è fornita dal pin 3.3V. La potenza massima che può assorbire è 50mA.
  • GND ==>Ci sono 5 pin di terra disponibili sulla scheda, il che lo rende utile quando sono necessari più pin di terra per il progetto.
  • Reset ==> Questo pin viene utilizzato per ripristinare la scheda. L'impostazione di questo pin su LOW ripristinerà la scheda.
  • Vin ==> E' la tensione di ingresso fornita alla scheda che va da 7V a 20V. Tramite questo pin è possibile accedere alla tensione fornita dal jack di alimentazione. Tuttavia, la tensione di uscita attraverso questo pin alla scheda verrà automaticamente impostata su 5V.
  • Comunicazione seriale ==> RXD e TXD sono i pin seriali utilizzati per trasmettere e ricevere dati seriali, ovvero Rx rappresenta la trasmissione di dati mentre Tx è utilizzato per ricevere dati. Esistono quattro combinazioni di questi pin seriali dove Serail 0 contiene RX (0) e TX (1), Serial 1 contiene TX (18) e RX (19), Serial 2 contiene TX (16) e RX (17), e Serial 3 contiene TX(14) e RX(15).
  • Interrupt esterni ==> Sei pin vengono utilizzati per creare interrupt esterni, ovvero interruzione 0 (0), interruzione 1 (3), interruzione 2 (21), interruzione 3 (20), interruzione 4 (19), interruzione 5 (18). Questi pin producono interruzioni in diversi modi, ad esempio fornendo un valore BASSO, fronte di salita o discesa o modifica del valore ai pin di interruzione.
  • LED ==> Questa scheda è dotata di LED integrato collegato al pin digitale 13. Il valore HIGH su questo pin accenderà il LED e il valore LOW lo spegnerà.
  • AREF ==> AREF sta per Analog Reference Voltage che è una tensione di riferimento per gli ingressi analogici.
  • Pin analogici ==> Ci sono 16 pin analogici incorporati sulla scheda etichettati da A0 a A15. È importante notare che tutti questi pin analogici possono essere utilizzati come pin I/O digitali. Ogni pin analogico ha una risoluzione a 10 bit. Questi pin possono misurare da terra a 5V. Tuttavia, il valore superiore può essere modificato utilizzando AREF e la funzione analogReference().
  • I2C ==>Due pin 20 e 21 supportano la comunicazione I2C dove 20 rappresenta SDA (Serial Data Line utilizzata principalmente per contenere i dati) e 21 rappresenta SCL (Serial Clock Line utilizzata principalmente per fornire la sincronizzazione dei dati tra i dispositivi)
  • SPI Communication ==> SPI sta per Serial Peripheral Interface utilizzata per la trasmissione di dati tra il controller e altri componenti periferici. Per la comunicazione SPI vengono utilizzati quattro pin, ad esempio 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS).

Passaggio 5: Arduino IDE

Qui presumo che tu abbia già installato Arduino IDE.

1. Scarica la libreria richiesta indicata di seguito

TinyGPS lib

2. Dopo averlo scaricato. Estrailo e spostalo nella cartella C:\Users\…\Documents\Arduino\libraries assicurati che non ci sia (-).

3. Apri l'IDE Arduino e copia il codice dalla sezione del programma.

4. Quindi seleziona la scheda per quella vai su Strumenti ==> Schede ==> seleziona la scheda qui stiamo usando Arduino Mega 2560

5. Dopo aver selezionato la scheda, seleziona la porta per quella vai su Strumenti ==> Porte

6. Dopo aver selezionato la scheda e la porta, fai clic su Carica.

7. Una volta caricato il codice, aprire il terminale seriale per vedere l'output.

Passaggio 6: connessioni

Arduino MEGA ==> NEO-6M GPS

  • 3.3V ==> VCC
  • GND ==> GND
  • Tx1 (18) ==> Rx
  • Rx (19) ==> Tx

Puoi anche usare Serial2 o Serial3 invece di Serial1

Consigliato: