Sommario:

Tracciamento GPS in tempo reale: 3 passaggi
Tracciamento GPS in tempo reale: 3 passaggi

Video: Tracciamento GPS in tempo reale: 3 passaggi

Video: Tracciamento GPS in tempo reale: 3 passaggi
Video: GPS Tracker SENZA SIM per MOTO e AUTO - Come PREVENIRE il FURTO | ZEN By Beepings 2024, Dicembre
Anonim

Di elizabethnaFollow Altro dell'autore:

Tracker dolcetto o scherzetto Pumpkin Pi
Tracker dolcetto o scherzetto Pumpkin Pi
Tracker dolcetto o scherzetto Pumpkin Pi
Tracker dolcetto o scherzetto Pumpkin Pi
Come costruire un monitor di temperatura Raspberry Pi
Come costruire un monitor di temperatura Raspberry Pi
Come costruire un monitor di temperatura Raspberry Pi
Come costruire un monitor di temperatura Raspberry Pi
Trasmetti dati da Fogli Google a una dashboard
Trasmetti dati da Fogli Google a una dashboard
Trasmetti dati da Fogli Google a una dashboard
Trasmetti dati da Fogli Google a una dashboard

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

Stato iniziale
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

BerryGPS-GSM e Raspberry Pi Zero
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à

Dashboard di posizione e velocità
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: