Sommario:
- Forniture
- Passaggio 1: stato iniziale
- Passaggio 2: BerryGPS-GSM e Raspberry Pi Zero
- Passaggio 3: dashboard di posizione e velocità
Video: Tracciamento GPS in tempo reale: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Di elizabethnaFollow Altro dell'autore:
In questo tutorial, ti mostreremo come eseguire il monitoraggio della posizione in tempo reale utilizzando un BerryGPS-GSM, un Raspberry Pi Zero e lo stato iniziale. Invieremo longitudine, latitudine e velocità tramite 3G con il BerryGPS-GSM allo stato iniziale.
Forniture
- Raspberry Pi Zero
- BerryGPS-GSM
- Stato iniziale
Passaggio 1: stato iniziale
Vogliamo trasmettere in streaming tutti i nostri dati di longitudine, latitudine e velocità a un servizio cloud e fare in modo che quel servizio trasformi i nostri dati in una bella dashboard a cui possiamo accedere dal nostro laptop o dispositivo mobile. Useremo lo stato iniziale.
Passaggio 1: registrarsi per l'account di stato iniziale
Vai su https://iot.app.initialstate.com e crea un nuovo account. Ottieni una prova gratuita di 14 giorni e chiunque disponga di un indirizzo e-mail edu può registrarsi per un piano studenti gratuito.
Passaggio 2: installa ISStreamer
Installa il modulo Python stato iniziale sul tuo Raspberry Pi. Nel prompt dei comandi, esegui il seguente comando:
$ cd /home/pi/
$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash
Passaggio 3: crea un po' di Automagic
Dopo il passaggio 2 vedrai qualcosa di simile al seguente output sullo schermo:
pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: inizio dell'installazione facile di ISStreamer Python! L'installazione potrebbe richiedere un paio di minuti, prendi un caffè:) Ma non dimenticare di tornare, avrò domande più tardi! Trovato easy_install: setuptools 1.1.6 Trovato pip: pip 1.5.6 da /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major version: 1 pip minor version: 5 ISStreamer trovato, aggiornamento… Requisito già aggiornato: ISStreamer in Library/Python/2.7/site-packages Pulizia… Vuoi ottenere automaticamente uno script di esempio? [y/N] Dove vuoi salvare l'esempio? [predefinito:./is_example.py] Seleziona quale app stato iniziale stai utilizzando: 1. app.initialstate.com 2. [NOVITÀ!] iot.app.initialstate.com Inserisci la scelta 1 o 2: inserisci iot.app Nome utente.initialstate.com: Inserisci la password iot.app.initialstate.com:
Quando ti viene chiesto se vuoi ottenere automaticamente uno script di esempio, metti "y" per sì e premi invio per salvare lo script nella posizione predefinita. Per la domanda su quale app stai utilizzando, seleziona 2 (a meno che non ti sia registrato prima di novembre 2018) e inserisci nome utente e password.
Passaggio 4: eseguire lo script di esempio
Esegui lo script di prova per assicurarci di poter creare un flusso di dati sul tuo account Stato iniziale. Scrivi il seguente comando:
$ python è_esempio.py
Passaggio 5: dati di esempio
Torna al tuo account di stato iniziale nel tuo browser web. Un nuovo bucket di dati chiamato "Python Stream Example" dovrebbe essere visualizzato a sinistra nel tuo scaffale di registro (potrebbe essere necessario aggiornare la pagina). Fai clic su questo bucket per visualizzare i tuoi dati.
Passaggio 2: BerryGPS-GSM e Raspberry Pi Zero
Se stai usando un BerryGPS-GSM, puoi seguire questa guida per far funzionare il GPS e far connettere il tuo Pi tramite 3G usando PPP.
La guida collegata mostra anche come connettere automaticamente il tuo Pi alla rete dell'operatore all'avvio. Ne avrai bisogno se prevedi di eseguire il monitoraggio remoto.
Installa librerie
Dovrai installare le seguenti librerie:
$ sudo apt-get install python-pip
$ sudo pip install pynmea2 $ sudo pip install ISStreamer
Script Python principale
Qui creeremo lo script principale che trasmetterà i dati GPS allo stato iniziale. Il codice seguente crea un thread separato che viene utilizzato per monitorare la porta seriale. Questo è necessario perché abbiamo una pausa nel ciclo principale. La pausa è lì per limitare la quantità di dati che carichiamo su 3G.
Se abbiamo fatto tutto nello stesso thread durante la pausa, il buffer seriale si riempirebbe (è FIFO) e quando otteniamo il valore successivo dal buffer, sarà vecchio di alcuni secondi. Questo accade ad ogni ciclo e alla fine i dati saranno indietro di minuti o ore.
Per creare lo script python e aprire l'editor di testo inserisci il seguente comando:
$ nano GPStracker.py
Copia e incolla il seguente codice nell'editor di testo. Dovrai inserire la tua chiave di accesso allo stato iniziale sulla riga 11 dove si dice "INSERISCI LA TUA CHIAVE DI ACCESSO":
#! /usr/bin/pythonfrom gps import * from time import * import threading import datetime from ISStreamer. Streamer import Streamer gpsd = Nessuno #Setup variabile globale #Setup the Initial State stream, inserisci la tua chiave di accesso sotto streamer = Streamer(bucket_name="GPS_Tracker ", bucket_key="GPS_TRACKER", access_key="ENTER YOUR ACCESS KEY") class GPSDcollector(threading. Thread): def _init_(self, threadID): threading. Thread._init_(self) self.threadID = threadID global gpsd #bring it in scope gpsd = gps(mode=WATCH_ENABLE) #Start GPSD self.running = True #Avvia l'esecuzione di questo thread def run(self): global gpsd while gpsdThread.running: gpsd.next() if _name_ == '_main_': gpsdThread = GPSDcollector(1) # crea un thread per raccogliere dati try: gpsdThread.start() # avvialo while True: print 'GPS ', gpsd.utc, ' CPU time->', datetime.datetime.now().time(), if (gpsd.fix.longitude0) e (gpsd.fix.longitude'nan'): streamer.log("Location", "{lat}, {lon}".format(lat=gpsd.fix.latitude, lon=gpsd.fix.longitu de)) streamer.log("speed", gpsd.fix.speed) print 'lat', gpsd.fix.latitude, print 'lon', gpsd.fix.longitude, print 'speed', gpsd.fix.speed sleep (5) tranne (KeyboardInterrupt, SystemExit): #quando premi ctrl+c print "\nKilling Thread…" gpsdThread.running = False gpsdThread.join() # attendi che il thread finisca quello che sta facendo print "Fatto.\nUscita."
Salva ed esci dall'editor di testo premendo CTRL + X, Y, invio.
Avvia lo script automaticamente all'avvio
Se stai eseguendo il monitoraggio remoto, vorrai che lo script venga eseguito all'avvio. Per fare ciò, creeremo un piccolo script che avvierà il programma python principale. Immettere il seguente comando:
$ nano GPStrackerStart.sh
Copia le righe nell'editor di testo:
#!/bin/bash
dormire 15 python /home/pi/GPStracker.py &
La pausa sopra è lì per dare al Pi il tempo di avviarsi e connettersi tramite PPP.
Rendi eseguibile lo script:
$ chmod +x ~/GPStrackerStart.sh
Useremo cron per avviare lo script ogni volta che il Pi si avvia:
$ crontab -e
Aggiungi la riga sottostante in fondo:
@reboot /home/pi/GPStrackerStart.sh &
Passaggio 3: dashboard di posizione e velocità
Ora che hai il tuo progetto attivo e funzionante, i dati dovrebbero essere inviati allo stato iniziale. Avrai dati GPS e dati di velocità. È possibile utilizzare i dati GPS in un riquadro delle mappe per tracciare la posizione. Per il riquadro della mappa, assicurati di selezionare la casella di controllo Disegna percorso in modo che il tracciamento della tua posizione sia mappato come la dashboard sopra. Puoi inserire i tuoi dati di velocità in un grafico a linee per vedere la velocità nel tempo.
Consigliato:
Come utilizzare un modulo orologio in tempo reale (DS3231): 5 passaggi
Come utilizzare un modulo orologio in tempo reale (DS3231): Il DS3231 è un orologio in tempo reale (RTC) I2C a basso costo ed estremamente accurato con un oscillatore a cristallo integrato con compensazione della temperatura (TCXO) e cristallo. Il dispositivo incorpora un ingresso batteria e mantiene un cronometraggio accurato quando l'alimentazione principale al th
Risolutore bendato del cubo di Rubik in tempo reale utilizzando Raspberry Pi e OpenCV: 4 passaggi
Risolutore bendato del cubo di Rubik in tempo reale utilizzando Raspberry Pi e OpenCV: questa è la seconda versione dello strumento cubo di Rubik realizzato per la risoluzione con gli occhi bendati. La prima versione è stata sviluppata da javascript, puoi vedere il progetto RubiksCubeBlindfolded1 A differenza della precedente, questa versione utilizza la libreria OpenCV per rilevare i colori ed e
Crea bellissimi grafici dai dati di Arduino in tempo reale (e salva i dati in Excel): 3 passaggi
Crea bellissimi grafici dai dati di Arduino in tempo reale (e salva i dati in Excel): a tutti noi piace giocare con la nostra funzione P…lotter nell'IDE di Arduino. Tuttavia, sebbene possa essere utile per le applicazioni di base, i dati vengono cancellati man mano che più si aggiungono punti e non è particolarmente gradevole alla vista. Il plotter Arduino IDE non
Tracker Covid19 in tempo reale che utilizza ESP8266 e OLED - Dashboard Covid19 in tempo reale: 4 passaggi
Tracker Covid19 in tempo reale che utilizza ESP8266 e OLED | Dashboard Covid19 in tempo reale: visita il sito Web Techtronic Harsh: http://techtronicharsh.com Ovunque c'è un enorme focolaio del Novel Corona Virus (COVID19). È diventato necessario tenere d'occhio l'attuale scenario di COVID-19 nel mondo. Quindi, essendo a casa, questo è stato il p
Localizzatore GPS in tempo reale fatto in casa (SIM800L, Ublox NEO-6M, Arduino): 8 passaggi
Localizzatore GPS in tempo reale fatto in casa (SIM800L, Ublox NEO-6M, Arduino): quindi hai un modulo GSM in giro come me? Anche un localizzatore GPS? La pensiamo allo stesso modo! In questo tutorial, cercherò di guidarti come raggiungere il tuo obiettivo dal punto di vista di un principiante. Poiché non avevo precedenti conoscenze di ingegneria elettrica (per