- Potrebne komponente:
- GPS modul i njegov rad:
- Priprema Raspberry Pi za komunikaciju s GPS-om:
- Priključci za sučelje Raspberry Pi GPS modula:
- Testiranje prije Python skripte:
Jedna od najzgodnijih ugrađenih platformi poput Arduina dala je proizvođačima i samostalnim radnicima mogućnost da lako dobivaju podatke o lokaciji pomoću GPS modula i tako grade stvari koje se oslanjaju na lokaciju. S količinom energije koju je zapakirao Raspberry Pi, zasigurno će biti poprilično strašno graditi projekte temeljene na GPS-u s istim jeftinim GPS modulima i to je fokus ovog posta. Danas ćemo u ovom projektu povezati GPS modul s Raspberry Pi 3.
Cilj ovog projekta je prikupiti podatke o lokaciji (dužinu i širinu) putem UART-a s GPS modula i prikazati ih na LCD-u 16x2, pa ako niste upoznati s načinom na koji 16x2 LCD radi s Raspberry Pi-om, ovo je još jedan izvrsna prilika za učenje.
Potrebne komponente:
- Raspberry Pi 3
- Neo 6m v2 GPS modul
- LCD zaslon od 16 x 2
- Izvor napajanja za Raspberry Pi
- LAN kabel za povezivanje pi-a s računalom u načinu bez glave
- Breadboard i Jumper kabeli
- Otpornik / potenciometar na LCD-u
- Memorijska kartica 8 ili 16Gb s Raspbian Jessie
Osim toga, moramo instalirati GPS Daemon (GPSD) knjižnicu, 16x2 LCD Adafruit knjižnicu, koju instaliramo kasnije u ovom vodiču.
Ovdje koristimo Raspberry Pi 3 s OS Raspbian Jessie. Svi osnovni hardverski i softverski zahtjevi su prethodno raspravljeni, možete ih potražiti u Uvodu o Raspberry Pi.
GPS modul i njegov rad:
GPS je skraćenica od Global Positioning System i koristi se za otkrivanje zemljopisne širine i dužine bilo kojeg mjesta na Zemlji, s točnim UTC vremenom (koordinirano univerzalnim vremenom). GPS modul glavna je komponenta u našem projektu sustava praćenja vozila. Ovaj uređaj prima koordinate sa satelita svake sekunde, s vremenom i datumom.
GPS modul šalje podatke koji se odnose na položaj praćenja u stvarnom vremenu i šalje toliko podataka u NMEA formatu (pogledajte snimku zaslona u nastavku). NMEA format sastoji se od nekoliko rečenica, u kojima nam treba samo jedna rečenica. Ova rečenica počinje od $ GPGGA i sadrži koordinate, vrijeme i ostale korisne informacije. Ovaj GPGGA odnosi se na podatke o popravcima sustava globalnog pozicioniranja. Ovdje saznajte više o čitanju GPS podataka i njegovih nizova.
Koordinate možemo izdvojiti iz $ GPGGA niza brojanjem zareza u nizu. Pretpostavimo da pronađete $ GPGGA niz i pohranite ga u niz, a zatim Latitude možete pronaći nakon dva zareza, a Longitude nakon četiri zareza. Sada se te zemljopisne širine i dužine mogu staviti u druge nizove.

Ispod je $ GPGGA string, zajedno s opisom:
GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, zemljopisna širina, N, dužina, E, FQ, NOS, HDP, nadmorska visina, M, visina, M,, podaci o kontrolnoj sumi
|
Identifikator |
Opis |
|
$ GPGGA |
Podaci o popravcima sustava globalnog pozicioniranja |
|
HHMMSS.SSS |
Vrijeme u satima minutnim sekundama i milisekundama. |
|
Zemljopisna širina |
Geografska širina (koordinata) |
|
N |
Smjer N = sjever, S = jug |
|
Zemljopisna dužina |
Zemljopisna dužina (koordinata) |
|
E |
Smjer E = Istok, Z = Zapad |
|
FQ |
Ispravite podatke o kvaliteti |
|
NOS |
Broj satelita koji se koriste |
|
HPD |
Horizontalno razrjeđivanje preciznosti |
|
Visina |
Nadmorska visina od razine mora |
|
M |
Metar |
|
Visina |
Visina |
|
Kontrolna suma |
Podaci o kontrolnoj sumi |
Možete provjeriti i ostale naše GPS projekte:
- Tracker vozila temeljen na Arduinu koristeći GPS i GSM
- Sustav za upozoravanje na nezgode na bazi Arduina koji koristi GPS, GSM i akcelerometar
- Kako koristiti GPS s Arduinom
- Pratite vozilo na Google kartama koristeći Arduino, ESP8266 i GPS
Priprema Raspberry Pi za komunikaciju s GPS-om:
Ok, uskočite, tako da ovo ne postane dosadno, pretpostavit ću da već znate puno o Raspberry Pi, dovoljno da instalirate svoj OS, dobijete IP adresu, povežete se s terminalnim softverom poput kita i drugih stvari o PI. Ako imate bilo kakav problem s bilo kojom od gore spomenutih stvari, javite mi se u odjeljak za komentare i rado ću vam pomoći.
Prva stvar koju moramo učiniti da bi ovaj projekt bio u tijeku je pripremiti naš Raspberry Pi 3 da može komunicirati s GPS modulom putem UART-a, vjerujte mi, prilično je zeznuto i prilično sam se trudio da ga ispravim, ali ako slijedite pažljivo vodiča, dobit ćete ga jednim potezom, ovo je prilično najteži dio projekta. Ovdje smo koristili Neo 6m v2 GPS modul.

Da zaronimo, evo malo objašnjenja kako Raspberry Pi 3 UART radi.
Raspberry Pi ima dva ugrađena UART-a, PL011 i mini UART. Primjenjuju se pomoću različitih hardverskih blokova pa imaju malo različite karakteristike. Na Raspberry Pi 3, međutim, bežični / bluetooth modul spojen je na PLO11 UART, dok se mini UART koristi za isključivanje linux konzole. Ovisno o tome kako ga vidite, definirat ću PLO11 kao najbolji od dva UART-a zbog njegove razine implementacije. Dakle, za ovaj ćemo projekt deaktivirati Bluetooth modul s PLO11 UART-a pomoću sloja dostupnog u ažuriranoj trenutnoj verziji Raspbian Jessie.
Korak 1: Ažuriranje Raspberry Pi:
Prvo što volim učiniti prije nego što započnem svaki projekt je ažuriranje malina pi. Dakle, učinimo uobičajeno i pokrenimo naredbe u nastavku;
sudo apt-get ažuriranje sudo apt-get nadogradnja
zatim ponovno pokrenite sustav s;
sudo ponovno pokretanje
Korak 2: Postavljanje UART-a u Raspberry Pi:
Prvo što ćemo pod ovim učiniti je uređivanje datoteke /boot/config.txt . Da biste to učinili, pokrenite naredbe u nastavku:
sudo nano /boot/config.txt
na dnu datoteke config.txt dodajte sljedeće retke
dtparam = spi = na dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x za izlaz i pritisnite y i enter za spremanje.

Provjerite nema li pogrešaka u kucanju ili pogreškama dvostrukom provjerom jer bi pogreška u ovom slučaju mogla spriječiti podizanje sustava pi.
Koji su razlozi za ove naredbe, force_turbo omogućuje UART-u da koristi maksimalnu frekvenciju jezgre koju u ovom slučaju postavljamo na 250. Razlog tome je osiguravanje dosljednosti i cjelovitosti primljenih serijskih podataka. U ovom trenutku važno je napomenuti da će upotreba force_turbo = 1 poništiti jamstvo za vašu malinu pi, ali pored toga i prilično je sigurno.
Dtoverlay = PI3-onesposobiti-BT isključuje Bluetooth iz ttyAMA0 , to je da nam omogućiti pristup koristiti sve UART snage na raspolaganju preko ttyAMAO umjesto mini UART ttyS0.
Drugi korak u ovom odjeljku za postavljanje UART-a je uređivanje boot / cmdline.txt
Predložit ću vam da napravite kopiju cmdline.txt i prvo ga spremite prije uređivanja kako biste se kasnije po potrebi vratili natrag. To se može učiniti pomoću;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Zamijenite sadržaj s;
dwc_otg.lpm_enable = 0 konzola = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 dizalo = rok fsck.repair = da rootwait tihi pljusak plymouth.ignore-serial-consoles
Spremi i izađi.
Nakon toga ćemo morati ponovno pokrenuti sustav kako bismo izvršili promjene ( sudo reboot ).
Korak 3: Onemogućivanje usluge Raspberry Pi Serial Getty
Sljedeći je korak onemogućavanje Pi- jeve serijske usluge getty , naredba će spriječiti ponovno pokretanje pri ponovnom pokretanju:
sudo systemctl zaustavi [email protected] sudo systemctl onemogući [email protected]
Sljedeće se naredbe mogu upotrijebiti za ponovno omogućavanje ako je potrebno
sudo systemctl omogući [email protected] sudo systemctl start [email protected]
Ponovo pokrenite sustav.
Korak 4: Aktiviranje ttyAMAO:
Onemogućili smo ttyS0, sljedeća stvar je da omogućimo ttyAMAO .
sudo systemctl omogućiti [email protected]
Korak 5: Instalirajte Minicom i pynmea2:
Bit ćemo minikom za povezivanje s GPS modulom i razumijevanje podataka. To je također jedan od alata koji ćemo koristiti za testiranje jer naš GPS modul radi u redu. Alternativa minicomu je demon program GPSD.
sudo apt-get instalirati minicom
Da bismo lako raščlanili primljene podatke, poslužit ćemo se knjižnicom pynmea2 . Može se instalirati pomoću;
sudo pip instalirati pynmea2
Dokumentaciju iz knjižnice možete pronaći ovdje
Korak 6: Instaliranje LCD biblioteke:
Za ovaj ćemo vodič koristiti knjižnicu AdaFruit. Biblioteka je napravljena za zaslone AdaFruit, ali također radi i za prikazne ploče pomoću HD44780. Ako se vaš zaslon temelji na tome, trebao bi raditi bez problema.
Mislim da je bolje klonirati knjižnicu i samo izravno instalirati. Klonirati trčanje;
git klon
promijenite u klonirani direktorij i instalirajte ga
cd./Adafruit_Python_CharLCD sudo python setup.py instalacija
U ovoj fazi predložit ću još jedno ponovno pokretanje kako bismo bili spremni za povezivanje komponenata.
Priključci za sučelje Raspberry Pi GPS modula:
Spojite GPS modul i LCD na Raspberry Pi kako je prikazano na donjem krugovnom dijagramu.

Testiranje prije Python skripte:
Smatram važnim testirati vezu GPS modula prije nego što nastavim s python skriptom, za to ćemo zaposliti minicom. Pokrenite naredbu:
sudo minicom -D / dev / ttyAMA0 -b9600
gdje 9600 predstavlja brzinu prijenosa pri kojoj GPS modul komunicira. Ovo se može koristiti jednom kad se uvjerimo u podatkovnu komunikaciju između GPS-a i RPI-a, vrijeme je da napišemo našu python skriptu.
Test se može obaviti i pomoću mačke
sudo mačka / dev / ttyAMA0

U prozoru možete vidjeti NMEA rečenice o kojima smo ranije razgovarali.
Python Script za ovaj vodič za Raspberry Pi GPS dan je u nastavku u odjeljku Code.
Uz sve rečeno i učinjeno, vrijeme je da testiramo cijeli sustav. Važno je da osigurate da vaš GPS dobiva dobar popravak, vadeći ga, većina GPS-a zahtijeva između tri do 4 satelita da ga popravi, iako je moj radio u zatvorenom.

Radi li točno? Da…
Imate pitanja ili komentara? Bacite ih u odjeljak za komentare.
Demonstracijski video prikazan je u nastavku, gdje smo prikazali lokaciju u geografskoj širini i dužini na LCD-u koristeći GPS i Raspberry Pi.
