- Componenti richiesti:
- Modulo GPS e suo funzionamento:
- Preparazione del Raspberry Pi per comunicare con il GPS:
- Collegamenti per il modulo GPS Raspberry Pi Interfacciamento:
- Test prima dello script Python:
Una delle piattaforme incorporate più interessanti come Arduino ha dato ai produttori e ai fai-da-te la possibilità di ottenere facilmente i dati sulla posizione utilizzando il modulo GPS e quindi costruire cose che si basano sulla posizione. Con la quantità di potenza accumulata dal Raspberry Pi, sarà sicuramente fantastico costruire progetti basati su GPS con gli stessi moduli GPS economici e questo è l'obiettivo di questo post. Oggi in questo progetto interfacciamo il modulo GPS con Raspberry Pi 3.
L'obiettivo di questo progetto è raccogliere i dati sulla posizione (longitudine e latitudine) tramite UART da un modulo GPS e visualizzarli su un LCD 16x2, quindi se non hai familiarità con il modo in cui l'LCD 16x2 funziona con il Raspberry Pi, questo è un altro grande opportunità per imparare.
Componenti richiesti:
- Raspberry Pi 3
- Modulo GPS Neo 6m v2
- LCD 16 x 2
- Fonte di alimentazione per Raspberry Pi
- Cavo LAN per collegare il pi al PC in modalità headless
- Cavi breadboard e jumper
- Resistore / potenziometro sul display LCD
- Scheda di memoria da 8 o 16 GB con Raspbian Jessie
Oltre a questo, abbiamo bisogno di installare la libreria GPS Daemon (GPSD), la libreria 16x2 LCD Adafruit, che installeremo più avanti in questo tutorial.
Qui stiamo usando Raspberry Pi 3 con Raspbian Jessie OS. Tutti i requisiti hardware e software di base sono stati discussi in precedenza, puoi cercarli nell'introduzione di Raspberry Pi.
Modulo GPS e suo funzionamento:
GPS è l'acronimo di Global Positioning System e viene utilizzato per rilevare la latitudine e la longitudine di qualsiasi luogo sulla Terra, con l'ora esatta UTC (Universal Time Coordinated). Il modulo GPS è il componente principale del nostro progetto di sistema di localizzazione dei veicoli. Questo dispositivo riceve le coordinate dal satellite per ogni secondo, con ora e data.
Il modulo GPS invia i dati relativi alla posizione di tracciamento in tempo reale e invia tanti dati in formato NMEA (vedi lo screenshot qui sotto). Il formato NMEA è composto da più frasi, in cui è necessaria solo una frase. Questa frase parte da $ GPGGA e contiene le coordinate, l'ora e altre informazioni utili. Questo GPGGA è denominato Global Positioning System Fix Data. Scopri di più sulla lettura dei dati GPS e delle relative stringhe qui.
Possiamo estrarre le coordinate dalla stringa $ GPGGA contando le virgole nella stringa. Supponiamo di trovare la stringa $ GPGGA e di memorizzarla in un array, quindi Latitude può essere trovata dopo due virgole e Longitude può essere trovata dopo quattro virgole. Ora queste latitudine e longitudine possono essere inserite in altri array.
Di seguito è riportata la stringa $ GPGGA, insieme alla sua descrizione:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43,9, M`` * 47
$ GPGGA, HHMMSS.SSS, latitudine, N, longitudine, E, FQ, NOS, HDP, altitudine, M, altezza, M, dati di checksum
Identificatore |
Descrizione |
$ GPGGA |
Dati di correzione del sistema di posizionamento globale |
HHMMSS.SSS |
Tempo in formato ora minuti secondi e millisecondi. |
Latitudine |
Latitudine (coordinate) |
N |
Direzione N = Nord, S = Sud |
Longitudine |
Longitudine (coordinate) |
E |
Direzione E = Est, W = Ovest |
FQ |
Correggi dati di qualità |
NOS |
Numero di satelliti utilizzati |
HPD |
Diluizione orizzontale della precisione |
Altitudine |
Altitudine dal livello del mare |
M |
Meter |
Altezza |
Altezza |
Checksum |
Dati di checksum |
Puoi controllare i nostri altri progetti GPS:
- Tracker di veicoli basato su Arduino che utilizza GPS e GSM
- Sistema di allarme per incidenti automobilistici basato su Arduino con GPS, GSM e accelerometro
- Come usare il GPS con Arduino
- Traccia un veicolo su Google Maps utilizzando Arduino, ESP8266 e GPS
Preparazione del Raspberry Pi per comunicare con il GPS:
Va bene, quindi saltare, quindi non diventa noioso, presumo che tu sappia già molto sul Raspberry Pi, abbastanza per installare il tuo sistema operativo, ottenere l'indirizzo IP, connetterti a software del terminale come putty e altre cose sul PI. In caso di problemi con una delle cose sopra menzionate, contattami nella sezione commenti e sarò felice di aiutarti.
La prima cosa che dobbiamo fare per avviare questo progetto è preparare il nostro Raspberry Pi 3 per essere in grado di comunicare con il modulo GPS tramite UART, credetemi, è piuttosto complicato e ci è voluto un bel po 'di tentativi per farlo bene, ma se lo segui la mia guida attentamente lo otterrai in una volta sola, questa è abbastanza la parte più difficile del progetto. Qui abbiamo utilizzato il modulo GPS Neo 6m v2.
Per approfondire, ecco una piccola spiegazione di come funziona l'UART Raspberry Pi 3.
Il Raspberry Pi ha due UART integrati, un PL011 e un mini UART. Sono implementati utilizzando diversi blocchi hardware, quindi hanno caratteristiche leggermente diverse. Sul raspberry pi 3 invece, il modulo wireless / bluetooth è connesso all'UART PLO11, mentre il mini UART è utilizzato per l'uscita della console Linux. A seconda di come lo vedi, definirò PLO11 come il migliore dei due UART a causa del suo livello di implementazione. Quindi per questo progetto disattiveremo il modulo Bluetooth dall'UART PLO11 utilizzando un overlay disponibile nella versione corrente aggiornata di Raspbian Jessie.
Passaggio 1: aggiornamento del Raspberry Pi:
La prima cosa che mi piace fare prima di iniziare ogni progetto è aggiornare il raspberry pi. Quindi facciamo il solito ed eseguiamo i comandi seguenti;
sudo apt-get update sudo apt-get upgrade
quindi riavviare il sistema con;
sudo riavvio
Passaggio 2: configurazione dell'UART in Raspberry Pi:
La prima cosa che faremo in questo caso è modificare il file /boot/config.txt . Per fare ciò, esegui i comandi seguenti:
sudo nano /boot/config.txt
in fondo al file config.txt, aggiungi le seguenti righe
dtparam = spi = su dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x per uscire e premere y e invio per salvare.
Assicurati che non ci siano errori di battitura o errori controllando due volte poiché un errore potrebbe impedire l'avvio del tuo pi.
Quali sono le ragioni di questi comandi, force_turbo consente a UART di utilizzare la frequenza di core massima che stiamo impostando in questo caso su 250. La ragione di ciò è garantire la coerenza e l'integrità dei dati seriali ricevuti. È importante notare a questo punto che l'uso di force_turbo = 1 invaliderà la garanzia del tuo raspberry pi, ma a parte questo, è abbastanza sicuro.
Il dtoverlay = pi3-disable-bt disconnette il bluetooth dal ttyAMA0 , questo per consentirci di utilizzare tutta la potenza UART disponibile tramite ttyAMAO invece del mini UART ttyS0.
Il secondo passaggio in questa sezione di configurazione UART è modificare il file boot / cmdline.txt
Ti suggerirò di fare una copia del cmdline.txt e di salvarlo prima di modificarlo in modo da poterlo tornare in seguito se necessario. Questo può essere fatto usando;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Sostituisci il contenuto con;
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 lift = deadline fsck.repair = yes rootwait quiet splash plymouth.ignore-serial-consoles
Salva ed esci.
Fatto ciò, dovremo riavviare nuovamente il sistema per effettuare le modifiche ( sudo reboot ).
Passaggio 3: disabilitazione del servizio Getty seriale Raspberry Pi
Il passo successivo è disabilitare il servizio di getty seriale del Pi, il comando gli impedirà di riavviarsi al riavvio:
sudo systemctl stop [email protected] sudo systemctl disabilita [email protected]
I seguenti comandi possono essere utilizzati per abilitarlo nuovamente, se necessario
sudo systemctl abilita [email protected] sudo systemctl avvia [email protected]
Riavvia il sistema.
Passaggio 4: attivazione di ttyAMAO:
Abbiamo disabilitato ttyS0, la prossima cosa da fare è abilitare ttyAMAO .
sudo systemctl abilita [email protected]
Passaggio 5: installa Minicom e pynmea2:
Saremo minicom a connettersi al modulo GPS e dare un senso ai dati. È anche uno degli strumenti che useremo per testare il funzionamento del nostro modulo GPS. Un'alternativa a minicom è il software demone GPSD.
sudo apt-get install minicom
Per analizzare facilmente i dati ricevuti, utilizzeremo la libreria pynmea2 . Può essere installato utilizzando;
sudo pip install pynmea2
La documentazione della libreria può essere trovata qui
Passaggio 6: installazione della libreria LCD:
Per questo tutorial utilizzeremo la libreria AdaFruit. La libreria è stata realizzata per gli schermi AdaFruit ma funziona anche per i tabelloni utilizzando HD44780. Se il tuo display si basa su questo, dovrebbe funzionare senza problemi.
Penso sia meglio clonare la libreria e installarla direttamente. Per clonare eseguire;
git clone
cambia nella directory clonata e installalo
cd./Adafruit_Python_CharLCD sudo python setup.py install
A questo punto, suggerirò un altro riavvio in modo da essere pronti per procedere alla connessione dei componenti.
Collegamenti per il modulo GPS Raspberry Pi Interfacciamento:
Collega il modulo GPS e l'LCD al Raspberry Pi come mostrato nello schema del circuito di seguito.
Test prima dello script Python:
Ritengo sia importante testare la connessione del modulo GPS prima di procedere allo script python, per questo utilizzeremo minicom. Esegui il comando:
sudo minicom -D / dev / ttyAMA0 -b9600
dove 9600 rappresenta la velocità di trasmissione alla quale comunica il modulo GPS. Questo può essere utilizzato per una volta che siamo sicuri della comunicazione dei dati tra il GPS e l'RPI, è ora di scrivere il nostro script Python.
Il test può essere eseguito anche utilizzando cat
sudo cat / dev / ttyAMA0
In Window, puoi vedere le frasi NMEA di cui abbiamo discusso in precedenza.
Lo script Python per questo tutorial GPS Raspberry Pi è fornito di seguito nella sezione Codice.
Con tutto quello che è stato detto e fatto, è tempo di testare l'intero sistema. È importante che ti assicuri che il tuo GPS stia ottenendo una buona correzione, estraendolo, la maggior parte dei GPS richiede da tre a 4 satelliti per ottenere una correzione, anche se il mio ha funzionato al coperto.
Funziona bene? Sì…
Hai domande o commenti? Trascinali nella sezione dei commenti.
Di seguito è riportato un video dimostrativo, in cui abbiamo mostrato la posizione in latitudine e longitudine su LCD utilizzando GPS e Raspberry Pi.