Spisu treści:

Śledzenie GPS w czasie rzeczywistym: 3 kroki
Śledzenie GPS w czasie rzeczywistym: 3 kroki

Wideo: Śledzenie GPS w czasie rzeczywistym: 3 kroki

Wideo: Śledzenie GPS w czasie rzeczywistym: 3 kroki
Wideo: Lokalizator GPS Spot Gen 3 | Jeden przycisk może uratować moje życie! 2024, Lipiec
Anonim

Autor: elizabethnaFollow Więcej autora:

Tracker „cukierek albo psikus z dyni”
Tracker „cukierek albo psikus z dyni”
Tracker „cukierek albo psikus z dyni”
Tracker „cukierek albo psikus z dyni”
Jak zbudować monitor temperatury Raspberry Pi?
Jak zbudować monitor temperatury Raspberry Pi?
Jak zbudować monitor temperatury Raspberry Pi?
Jak zbudować monitor temperatury Raspberry Pi?
Przesyłaj dane z Arkuszy Google do pulpitu nawigacyjnego
Przesyłaj dane z Arkuszy Google do pulpitu nawigacyjnego
Przesyłaj dane z Arkuszy Google do pulpitu nawigacyjnego
Przesyłaj dane z Arkuszy Google do pulpitu nawigacyjnego

W tym samouczku pokażemy, jak śledzić lokalizację w czasie rzeczywistym za pomocą BerryGPS-GSM, Raspberry Pi Zero i stanu początkowego. Wyślemy długość, szerokość geograficzną i prędkość przez 3G z BerryGPS-GSM do stanu początkowego.

Kieszonkowe dzieci

  • Raspberry Pi Zero
  • BerryGPS-GSM
  • Stan początkowy

Krok 1: Stan początkowy

Stan początkowy
Stan początkowy

Chcemy przesyłać strumieniowo wszystkie nasze dane dotyczące długości, szerokości geograficznej i prędkości do usługi w chmurze, aby ta usługa przekształciła nasze dane w ładny pulpit nawigacyjny, do którego możemy uzyskać dostęp z naszego laptopa lub urządzenia mobilnego. Użyjemy stanu początkowego.

Krok 1: Zarejestruj się, aby uzyskać początkowe konto państwowe

Przejdź do https://iot.app.initialstate.com i utwórz nowe konto. Otrzymujesz 14-dniowy bezpłatny okres próbny i każdy, kto ma adres e-mail edu, może zarejestrować się w bezpłatnym planie studenckim.

Krok 2: Zainstaluj ISStreamer

Zainstaluj moduł Pythona stanu początkowego na swoim Raspberry Pi. W wierszu polecenia uruchom następujące polecenie:

$ cd /home/pi/

$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

Krok 3: Zrób Automagię

Po kroku 2 zobaczysz na ekranie coś podobnego do następującego:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Początek ISStreamer Python Łatwa instalacja! Instalacja może potrwać kilka minut, napij się kawy:) Ale nie zapomnij wrócić, będę miał pytania później! Znaleziono easy_install: setuptools 1.1.6 Znaleziono pip: pip 1.5.6 z /Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg (python 2.7) pip wersja główna: 1 pip wersja podrzędna: 5 Znaleziono ISStreamer, aktualizuję… Wymaganie już aktualne: ISStreamer w bibliotece/Python/2.7/site-packages Porządkowanie… Czy chcesz automagicznie uzyskać przykładowy skrypt? [t/N] Gdzie chcesz zapisać przykład? [domyślnie:./is_example.py] Wybierz, której aplikacji stanu początkowego używasz: 1. app.initialstate.com 2. [NOWOŚĆ!] iot.app.initialstate.com Wybierz 1 lub 2: Wpisz iot.app Nazwa użytkownika.initialstate.com: Wprowadź hasło iot.app.initialstate.com:

Na pytanie, czy chcesz automagicznie uzyskać przykładowy skrypt, wpisz „y” jako tak i naciśnij enter, aby zapisać skrypt w domyślnej lokalizacji. W przypadku pytania o to, której aplikacji używasz, wybierz 2 (chyba że zarejestrowałeś się przed listopadem 2018 r.) i wprowadź swoją nazwę użytkownika i hasło.

Krok 4: Uruchom przykładowy skrypt

Uruchom skrypt testowy, aby upewnić się, że możemy utworzyć strumień danych na Twoje konto stanu początkowego. Napisz następujące polecenie:

$ python is_example.py

Krok 5: Przykładowe dane

Wróć do swojego konta stanu początkowego w przeglądarce internetowej. Po lewej stronie na półce dziennika powinien pojawić się nowy zasobnik danych o nazwie „Przykład strumienia Pythona” (może być konieczne odświeżenie strony). Kliknij ten zasobnik, aby wyświetlić swoje dane.

Krok 2: BerryGPS-GSM i Raspberry Pi Zero

BerryGPS-GSM i Raspberry Pi Zero
BerryGPS-GSM i Raspberry Pi Zero

Jeśli używasz BerryGPS-GSM, możesz postępować zgodnie z tym przewodnikiem, aby uruchomić GPS i połączyć Pi przez 3G za pomocą PPP.

Połączony przewodnik pokazuje również, jak automatycznie połączyć Pi z siecią operatora po uruchomieniu. Będzie to potrzebne, jeśli planujesz przeprowadzić zdalne śledzenie.

Zainstaluj biblioteki

Będziesz musiał zainstalować następujące biblioteki:

$ sudo apt-get install python-pip

$ sudo pip install pynmea2 $ sudo pip install ISStreamer

Główny skrypt Pythona

Tutaj stworzymy główny skrypt, który będzie przesyłał strumieniowo dane GPS do stanu początkowego. Poniższy kod tworzy osobny wątek, który służy do monitorowania portu szeregowego. Jest to potrzebne, ponieważ w głównej pętli mamy przerwę. Przerwa ma na celu ograniczenie ilości przesyłanych danych przez 3G.

Jeśli zrobiliśmy wszystko w tym samym wątku podczas pauzy, bufor szeregowy zapełniłby się (jest to FIFO) i gdy otrzymamy kolejną wartość z bufora, będzie on stary o kilka sekund. Dzieje się tak w każdej pętli i ostatecznie dane będą opóźnione o minuty lub godziny.

Aby utworzyć skrypt Pythona i otworzyć edytor tekstu, wprowadź następujące polecenie:

$ nano GPStracker.py

Skopiuj i wklej następujący kod do edytora tekstu. Będziesz musiał wprowadzić swój klucz dostępu do stanu początkowego w wierszu 11, gdzie jest napisane „WPROWADŹ SWÓJ KLUCZ DOSTĘPU”:

#! /usr/bin/pythonfrom gps import * from time import * import threading import datetime from ISStreamer. Streamer import Streamer gpsd = Brak #Ustaw zmienną globalną #Ustaw strumień stanu początkowego, wprowadź klucz dostępu poniżej streamer = Streamer(bucket_name="GPS_Tracker ", bucket_key="GPS_TRACKER", access_key="WPROWADŹ KLUCZ DOSTĘPU") class GPSDcollector(threading. Thread): def _init_(self, threadID): threading. Thread._init_(self) self.threadID = threadID globalny gpsd #bring it in scope gpsd = gps(mode=OBEJRZYJ_WŁĄCZONE) #Uruchom GPSD self.running = True #Uruchom ten wątek def run(self): global gpsd while gpsdThread.running: gpsd.next() if _name_ == '_main_': gpsdThread = GPSDcollector(1) # utwórz wątek do zbierania danych spróbuj: gpsdThread.start() # uruchom go, gdy True: print 'GPS ', gpsd.utc, 'CPU time->', datetime.datetime.now().time(), if (gpsd.fix.longitude0) i (gpsd.fix.longitude'nan'): streamer.log("Lokalizacja", "{lat}, {lon}".format(lat=gpsd.fix.szerokość, 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) z wyjątkiem (KeyboardInterrupt, SystemExit): #po naciśnięciu ctrl+c print "\nZabijanie wątku…" gpsdThread.running = False gpsdThread.join() # poczekaj, aż wątek zakończy to, co robi print "Gotowe.\nWychodzenie”.

Zapisz i wyjdź z edytora tekstu, naciskając CTRL + X, Y, enter.

Uruchom skrypt automatycznie przy starcie

Jeśli robisz zdalne monitorowanie, chciałbyś, aby skrypt uruchamiał się przy starcie. W tym celu stworzymy mały skrypt, który uruchomi główny program Pythona. Wpisz następujące polecenie:

$ nano GPStrackerStart.sh

Skopiuj wiersze do edytora tekstu:

#!/kosz/bash

spać 15 python /home/pi/GPStracker.py &

Powyższa pauza ma na celu dać Pi czas na uruchomienie i połączenie przez PPP.

Uczyń skrypt wykonywalnym:

$ chmod +x ~/GPStrackerStart.sh

Użyjemy crona do uruchomienia skryptu przy każdym uruchomieniu Pi:

$ crontab -e

Dodaj poniższą linię na dole:

@reboot /home/pi/GPStrackerStart.sh &

Krok 3: Pulpit nawigacyjny lokalizacji i prędkości

Pulpit nawigacyjny lokalizacji i prędkości
Pulpit nawigacyjny lokalizacji i prędkości

Teraz, gdy masz już swój projekt i działa, dane powinny być wysyłane do stanu początkowego. Będziesz mieć dane GPS i dane o prędkości. Możesz użyć danych GPS w kafelku mapy do śledzenia lokalizacji. W przypadku kafelka mapy zaznacz pole wyboru Narysuj ścieżkę, aby śledzenie lokalizacji było odwzorowane tak, jak na powyższym pulpicie nawigacyjnym. Możesz umieścić swoje dane dotyczące prędkości na wykresie liniowym, aby zobaczyć prędkość w czasie.

Zalecana: