Inhoudsopgave:
- Benodigdheden
- Stap 1: Oorspronkelijke staat
- Stap 2: BerryGPS-GSM & Raspberry Pi Zero
- Stap 3: Dashboard voor locatie en snelheid
Video: Realtime GPS-tracking: 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Door elizabethnaVolg meer door de auteur:
In deze zelfstudie laten we u zien hoe u realtime locatietracking uitvoert met behulp van een BerryGPS-GSM, een Raspberry Pi Zero en Initial State. We sturen lengte-, breedte- en snelheid via 3G met de BerryGPS-GSM naar Initial State.
Benodigdheden
- Raspberry Pi Zero
- BerryGPS-GSM
- Oorspronkelijke toestand
Stap 1: Oorspronkelijke staat
We willen al onze lengte-, breedtegraad- en snelheidsgegevens naar een cloudservice streamen en die service onze gegevens laten omzetten in een mooi dashboard waartoe we toegang hebben vanaf onze laptop of mobiele apparaat. We zullen de beginstatus gebruiken.
Stap 1: Registreer u voor een eerste staatsaccount
Ga naar https://iot.app.initialstate.com en maak een nieuw account aan. Je krijgt een gratis proefperiode van 14 dagen en iedereen met een edu-e-mailadres kan zich registreren voor een gratis studentenabonnement.
Stap 2: Installeer de ISStreamer
Installeer de Initial State Python-module op uw Raspberry Pi. Voer in de opdrachtprompt de volgende opdracht uit:
$ cd /home/pi/
$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash
Stap 3: Maak wat Automagic
Na stap 2 ziet u iets dat lijkt op de volgende uitvoer op het scherm:
pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Begin ISStreamer Python Eenvoudige installatie! Dit kan een paar minuten duren om te installeren, neem wat koffie:) Maar vergeet niet terug te komen, ik heb later vragen! Easy_install gevonden: setuptools 1.1.6 Gevonden pip: pip 1.5.6 van /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip hoofdversie: 1 pip kleine versie: 5 ISStreamer gevonden, updaten… Vereiste al up-to-date: ISStreamer in Library/Python/2.7/site-packages Opruimen… Wil je automatisch een voorbeeldscript krijgen? [j/N] Waar wil je het voorbeeld opslaan? [default:./is_example.py] Selecteer a.u.b. welke Initial State-app u gebruikt: 1. app.initialstate.com 2. [NIEUW!] iot.app.initialstate.com Voer keuze 1 of 2 in: Voer iot.app in.initialstate.com gebruikersnaam: Voer het iot.app.initialstate.com wachtwoord in:
Wanneer u wordt gevraagd of u automatisch een voorbeeldscript wilt krijgen, plaatst u "y" voor ja en drukt u op enter om uw script op de standaardlocatie op te slaan. Voor de vraag welke app je gebruikt, selecteer 2 (tenzij je je voor november 2018 hebt aangemeld) en voer je gebruikersnaam en wachtwoord in.
Stap 4: Voer het voorbeeldscript uit
Voer het testscript uit om er zeker van te zijn dat we een gegevensstroom naar uw Initial State-account kunnen maken. Schrijf het volgende commando:
$ python is_voorbeeld.py
Stap 5: Voorbeeldgegevens
Ga terug naar uw Initial State-account in uw webbrowser. Een nieuwe data-bucket genaamd "Python Stream-voorbeeld" zou aan de linkerkant in uw logplank moeten verschijnen (mogelijk moet u de pagina vernieuwen). Klik op deze bucket om uw gegevens te bekijken.
Stap 2: BerryGPS-GSM & Raspberry Pi Zero
Als u een BerryGPS-GSM gebruikt, kunt u deze handleiding volgen om de GPS te laten werken en uw Pi verbinding te laten maken via 3G met behulp van PPP.
De gekoppelde gids laat ook zien hoe u uw Pi automatisch verbinding kunt laten maken met het netwerk van de koerier bij het opstarten. U hebt deze nodig als u van plan bent om op afstand te volgen.
Bibliotheken installeren
U moet de volgende bibliotheken installeren:
$ sudo apt-get install python-pip
$ sudo pip install pynmea2 $ sudo pip install ISStreamer
Hoofd Python-script
Hier zullen we het hoofdscript maken dat de GPS-gegevens naar de oorspronkelijke staat zal streamen. De onderstaande code creëert een aparte thread die wordt gebruikt om de seriële poort te bewaken. Dit is nodig omdat we een pauze hebben in de hoofdlus. De pauze is er om te beperken hoeveel gegevens we uploaden via 3G.
Als we tijdens de pauze alles in dezelfde thread zouden doen, zou de seriële buffer vol raken (het is FIFO) en wanneer we de volgende waarde van de buffer krijgen, zal deze een paar seconden oud zijn. Dit gebeurt elke lus en uiteindelijk lopen de gegevens minuten of uren achter.
Voer de volgende opdracht in om het python-script te maken en de teksteditor te openen:
$ nano GPStracker.py
Kopieer en plak de volgende code in de teksteditor. U moet uw Initial State Access Key invoeren op regel 11, waar staat "VOER UW TOEGANGSSLEUTEL IN":
#! /usr/bin/pythonfrom gps import * from time import * import threading import datetime from ISStreamer. Streamer import Streamer gpsd = Geen #Setup globale variabele #Setup de Initial State stream, voer hieronder uw toegangssleutel in streamer = Streamer(bucket_name="GPS_Tracker ", bucket_key="GPS_TRACKER", access_key="VOER UW TOEGANGSSLEUTEL IN") 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 #Start deze thread def run(self): global gpsd while gpsdThread.running: gpsd.next() if _name_ == '_main_': gpsdThread = GPSDcollector(1) # maak een thread om gegevens te verzamelen probeer: gpsdThread.start() # start het op terwijl True: print 'GPS', gpsd.utc, ' CPU time->', datetime.datetime.now().time(), if (gpsd.fix.longitude0) en (gpsd.fix.longitude'nan'): streamer.log("Locatie", "{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) behalve (KeyboardInterrupt, SystemExit): #wanneer je op ctrl+c drukt print "\nKilling Thread…" gpsdThread.running = False gpsdThread.join() # wacht tot de thread klaar is met wat hij doet print "Done.\nExiting."
Sla op en verlaat de teksteditor door op CTRL + X, Y, enter te drukken.
Start het script automatisch bij het opstarten
Als u bewaking op afstand uitvoert, wilt u dat het script bij het opstarten wordt uitgevoerd. Om dit te doen, zullen we een klein script maken dat het hoofdprogramma van Python zal starten. Voer de volgende opdracht in:
$ nano GPStrackerStart.sh
Kopieer de regels naar de teksteditor:
#!/bin/bash
slaap 15 python /home/pi/GPStracker.py &
De pauze hierboven is er om de Pi de tijd te geven om op te starten en verbinding te maken via PPP.
Maak het script uitvoerbaar:
$ chmod +x ~/GPStrackerStart.sh
We zullen cron gebruiken om het script te starten elke keer dat de Pi opstart:
$ crontab -e
Voeg de onderstaande regel toe aan de onderkant:
@reboot /home/pi/GPStrackerStart.sh &
Stap 3: Dashboard voor locatie en snelheid
Nu u uw project in gebruik heeft, zouden de gegevens naar de oorspronkelijke staat moeten worden verzonden. Je hebt GPS-gegevens en snelheidsgegevens. U kunt de GPS-gegevens in een kaarttegel gebruiken om de locatie te volgen. Zorg ervoor dat u voor de kaarttegel het selectievakje Pad tekenen aanvinkt, zodat uw locatietracking in kaart wordt gebracht zoals het dashboard hierboven. U kunt uw snelheidsgegevens in een lijngrafiek plaatsen om de snelheid in de loop van de tijd te zien.
Aanbevolen:
Realtime grafiek plotten op Android vanaf Arduino via HC-05: 3 stappen
Realtime grafiek plotten op Android van Arduino via HC-05: Hallo, hier is een tutorial over hoe je een realtime grafiek met waarden van een microcontroller zoals een Arduino naar de app kunt plotten. Het gebruikt een Bluetooth-module zoals de HC-05 om te fungeren als een berichtenapparaat om de gegevens tussen de Ar
Realtime apparaatherkenning met behulp van EM Footprints: 6 stappen
Realtime apparaatherkenning met behulp van EM-voetafdrukken: dit apparaat is bedoeld om verschillende elektronische apparaten te classificeren op basis van hun EM-signalen. Voor verschillende apparaten hebben ze verschillende EM-signalen die erdoor worden uitgezonden. We hebben een IoT-oplossing ontwikkeld om de elektronische apparaten te identificeren met behulp van Particle
MicroPython-programma: gegevens over coronavirusziekte (COVID-19) in realtime bijwerken: 10 stappen (met afbeeldingen)
MicroPython-programma: gegevens over coronavirusziekte (COVID-19) in realtime bijwerken: in de afgelopen weken heeft het aantal bevestigde gevallen van coronavirusziekte (COVID 19) wereldwijd de 100.000 overschreden, en de wereldgezondheidsorganisatie (WHO) heeft de nieuwe uitbraak van coronavirus-pneumonie om een wereldwijde pandemie te zijn. Ik was heel
COVID-19 Realtime Tracker voor ESP32: 3 stappen
COVID-19 Realtime Tracker voor ESP32: Deze kleine tracker helpt u op de hoogte te blijven van de uitbraak van het coronavirus en de situatie in uw land. Het display toont afwisselend de huidige gegevens van verschillende landen naar keuze. De gegevens worden verzameld door de website www.wo
Zelfgemaakte realtime GPS-tracker (SIM800L, Ublox NEO-6M, Arduino) - Ajarnpa
Zelfgemaakte Realtime GPS Tracker (SIM800L, Ublox NEO-6M, Arduino): Dus jij hebt net als ik een GSM-module liggen? Ook een GPS-tracker? Wij denken hetzelfde! In deze instructables zal ik proberen je te begeleiden hoe je je doel kunt bereiken vanuit het perspectief van een newbie. Omdat ik geen eerdere kennis van elektrotechniek had (om