- Zahtevane komponente:
- GPS modul in njegovo delovanje:
- Priprava Raspberry Pi za komunikacijo z GPS:
- Povezave za povezavo modula Raspberry Pi GPS:
- Testiranje pred Python Script:
Ena najbolj kul vgrajenih platform, kot je Arduino, je proizvajalcem in domačim izdelovalcem omogočila, da z GPS modulom enostavno dobijo podatke o lokaciji in tako gradijo stvari, ki se zanašajo na lokacijo. Glede na količino moči, ki jo prinaša Raspberry Pi, bo zagotovo izjemno graditi projekte, ki temeljijo na GPS-u, z enakimi poceni GPS-moduli in to je v središču te objave. Danes bomo v tem projektu povezali GPS modul z Raspberry Pi 3.
Cilj tega projekta je zbrati podatke o lokaciji (zemljepisne dolžine in širine) prek UART-a iz GPS-modula in jih prikazati na LCD-u 16x2, tako da, če niste seznanjeni z načinom delovanja 16x2 LCD-ja z Raspberry Pi, je to še ena odlična priložnost za učenje.
Zahtevane komponente:
- Raspberry Pi 3
- GPS modul Neo 6m v2
- 16 x 2 LCD
- Vir napajanja za Raspberry Pi
- LAN kabel za povezavo pi-ja z računalnikom v načinu brez glave
- Breadboard in Jumper kabli
- Upor / potenciometer na LCD
- Pomnilniška kartica 8 ali 16 GB z Raspbian Jessie
Razen tega moramo namestiti knjižnico GPS Daemon (GPSD), knjižnico LCD Adafruit 16x2 LCD, ki jo namestimo kasneje v tej vadnici.
Tu uporabljamo Raspberry Pi 3 z OS Raspbian Jessie. Vse osnovne zahteve glede strojne in programske opreme so že obravnavane, poglejte v uvodu Raspberry Pi.
GPS modul in njegovo delovanje:
GPS pomeni sistem za globalno določanje položaja in se uporablja za zaznavanje zemljepisne širine in dolžine katere koli lokacije na Zemlji s točno določenim UTC časom (univerzalni koordinirani čas). GPS modul je glavna sestavina našega projekta sistema za sledenje vozil. Ta naprava prejme koordinate s satelita vsako sekundo s časom in datumom.
Modul GPS pošilja podatke, povezane s položajem sledenja, v realnem času in pošlje toliko podatkov v obliki NMEA (glejte spodnjo sliko zaslona). Oblika NMEA je sestavljena iz več stavkov, v katerih potrebujemo le en stavek. Ta stavek se začne od $ GPGGA in vsebuje koordinate, čas in druge koristne informacije. Ta GPGGA se imenuje Global Fix System Fix Data. Več informacij o branju podatkov GPS in njihovih nizih najdete tukaj.
Iz niza $ GPGGA lahko izvlečemo koordinate s štetjem vejic v nizu. Recimo, da najdete niz $ GPGGA in ga shranite v matriko, nato Latitude najdemo po dveh vejicah, Longitude pa po štirih vejic. Zdaj lahko te zemljepisne širine in dolžine uvrstimo v druge nize.
Spodaj je niz $ GPGGA skupaj z opisom:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, zemljepisna širina, N, dolžina, E, FQ, NOS, HDP, nadmorska višina, M, višina, M,, podatki o kontrolni vsoti
Identifikator |
Opis |
$ GPGGA |
Podatki o popravkih sistema globalnega pozicioniranja |
HHMMSS.SSS |
Čas v obliki ure v minuti in sekundah in milisekundah. |
Zemljepisna širina |
Zemljepisna širina (koordinata) |
N |
Smer N = sever, S = jug |
Zemljepisna dolžina |
Zemljepisna dolžina (koordinata) |
E |
Smer E = vzhod, W = zahod |
FQ |
Popravite podatke o kakovosti |
NOS |
Število uporabljenih satelitov |
HPD |
Horizontalno redčenje natančnosti |
Nadmorska višina |
Nadmorska višina od morske gladine |
M |
Merilnik |
Višina |
Višina |
Kontrolna vsota |
Podatki o kontrolni vsoti |
Preverite lahko tudi druge naše GPS projekte:
- Sledilnik vozil na osnovi Arduina z uporabo GPS in GSM
- Sistem za opozarjanje na nezgode na osnovi Arduina z uporabo GPS, GSM in merilnika pospeška
- Kako uporabljati GPS z Arduinom
- Sledite vozilu v Google Zemljevidih z uporabo Arduino, ESP8266 in GPS
Priprava Raspberry Pi za komunikacijo z GPS:
V redu, tako da vskočite, tako da to ne bo postalo dolgočasno, predvidevam, da o Raspberry Pi že veste veliko, dovolj, da namestite svoj OS, pridobite naslov IP, se povežete s programsko opremo terminala, kot je kit in druge stvari o PI. Če imate kakršno koli težavo pri zgoraj omenjenih stvareh, me pokličite v razdelku za komentarje in z veseljem vam bom pomagal.
Prva stvar, ki jo moramo narediti za začetek tega projekta, je, da pripravimo naš Raspberry Pi 3, da bo lahko komuniciral z GPS modulom prek UART-a, verjemite mi, da je precej zapleten in sem se zelo potrudil, da ga pravilno uredim, vendar če sledite moj vodič skrbno boste dobili naenkrat, to je dokaj najtežji del projekta. Tu smo uporabili GPS modul Neo 6m v2.
Tukaj je majhna razlaga, kako deluje Raspberry Pi 3 UART.
Raspberry Pi ima dva vgrajena UART-a, PL011 in mini UART. Izvajajo se z uporabo različnih strojnih blokov, tako da imajo nekoliko različne značilnosti. Na Raspberry Pi 3 pa je brezžični / bluetooth modul priključen na PLO11 UART, medtem ko se mini UART uporablja za izklop linux konzole. Glede na to, kako ga vidite, bom PLO11 zaradi njegove izvedbene ravni opredelil kot najboljšega izmed obeh UART. Tako bomo za ta projekt deaktivirali modul Bluetooth iz PLO11 UART s prekrivanjem, ki je na voljo v posodobljeni trenutni različici Raspbian Jessie.
1. korak: Posodabljanje Raspberry Pi:
Prva stvar, ki jo najraje počnem pred vsakim projektom, je posodobitev maline pi. Omogočimo običajno in zaženite spodnje ukaze;
posodobitev sudo apt-get
nato znova zaženite sistem z;
sudo ponovni zagon
2. korak: Nastavitev UART v Raspberry Pi:
Prvo, kar bomo storili pri tem, je urediti datoteko /boot/config.txt . Če želite to narediti, zaženite spodnje ukaze:
sudo nano /boot/config.txt
na dnu datoteke config.txt dodajte naslednje vrstice
dtparam = spi = na dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x za izhod in pritisnite y in enter za shranjevanje.
Prepričajte se, da ni napak pri tipkanju ali napak z dvojnim preverjanjem, saj lahko napaka s tem prepreči zagon pi-ja.
Kateri so razlogi za te ukaze, force_turbo omogoča UART, da uporabi največjo frekvenco jedra, ki jo v tem primeru nastavimo na 250. Razlog za to je zagotoviti doslednost in celovitost prejetih serijskih podatkov. Na tej točki je pomembno opozoriti, da bo uporaba force_turbo = 1 razveljavila garancijo za vaš malin pi, vendar je poleg tega precej varna.
Dtoverlay = PI3-onemogočiti-BT prekine bluetooth iz ttyAMA0 , to je, da nam omogočajo dostop do uporabljati polno UART moč, ki je na voljo prek ttyAMAO namesto mini UART ttyS0.
Drugi korak v tem razdelku za nastavitev UART je urejanje zagona / cmdline.txt
Predlagam vam, da naredite kopijo cmdline.txt in jo najprej shranite pred urejanjem, da jo boste lahko pozneje vrnili po potrebi. To lahko storite z uporabo;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Vsebino zamenjajte z;
dwc_otg.lpm_enable = 0 konzola = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 dvigalo = rok fsck.repair = da rootwait tiho splash plymouth.ignore-serial-consoles
Shrani in izstopi.
Po tem bomo morali sistem znova zagnati, da bomo izvedli spremembe ( sudo reboot ).
Korak 3: Onemogočanje storitve Raspberry Pi Serial Getty
Naslednji korak je onemogočiti Pi-jevo serijsko storitev getty , ukaz bo preprečil ponovni zagon ob ponovnem zagonu:
sudo systemctl stop [email protected] sudo systemctl onemogoči [email protected]
Po potrebi lahko znova omogočite naslednje ukaze
sudo systemctl omogoči [email protected] sudo systemctl start [email protected]
Znova zaženite sistem.
4. korak: Aktiviranje ttyAMAO:
Onemogočili smo ttyS0, naslednja stvar je, da omogočimo ttyAMAO .
sudo systemctl omogoči [email protected]
5. korak: Namestite Minicom in pynmea2:
Minicom bomo, da se bomo povezali z modulom GPS in osmislili podatke. To je tudi eno od orodij, ki ga bomo uporabili za testiranje, saj naš GPS modul deluje v redu. Alternativa minicomu je demonska programska oprema GPSD.
sudo apt-get namestite minicom
Za lažje razčlenitev prejetih podatkov bomo uporabili knjižnico pynmea2 . Lahko ga namestite z uporabo;
sudo pip namestite pynmea2
Dokumentacijo knjižnice najdete tukaj
6. korak: Namestitev knjižnice LCD:
Za to vadnico bomo uporabili knjižnico AdaFruit. Knjižnica je bila narejena za zaslone AdaFruit, deluje pa tudi za razstavne plošče z uporabo HD44780. Če vaš zaslon temelji na tem, bi moral delovati brez težav.
Bolje se mi zdi, da knjižnico kloniram in jo samo namestim. Klonirati tek;
klon git
spremenite v klonirani imenik in ga namestite
cd./Adafruit_Python_CharLCD sudo python setup.py namestitev
Na tej stopnji bom predlagal še en ponovni zagon, da bomo lahko nadaljevali s povezovanjem komponent.
Povezave za povezavo modula Raspberry Pi GPS:
Modul GPS in LCD priključite na Raspberry Pi, kot je prikazano na spodnjem vezju.
Testiranje pred Python Script:
Pomembno se mi zdi, da preizkusim povezavo modula GPS, preden nadaljujem s skriptom python, za to bomo uporabili minicom. Zaženite ukaz:
sudo minicom -D / dev / ttyAMA0 -b9600
kjer 9600 predstavlja hitrost prenosa, s katero komunicira modul GPS. To lahko uporabimo enkrat, ko smo prepričani v podatkovno komunikacijo med GPS in RPI, čas je, da napišemo naš skript python.
Preizkus lahko opravimo tudi z uporabo mačke
sudo cat / dev / ttyAMA0
V oknu si lahko ogledate stavke NMEA, o katerih smo že govorili.
Python Script za to vadnico Raspberry Pi GPS je spodaj v odseku Code.
Ob vsem omenjenem je čas, da preizkusimo celoten sistem. Pomembno je, da zagotovite, da bo vaš GPS dobro popravil, tako da ga odstranite, saj večina GPS potrebuje od tri do štiri satelite, da ga popravi, čeprav je moj delal v zaprtih prostorih.
Deluje kajne? Ja…
Imate vprašanja ali komentarje? Spustite jih v odsek za komentarje.
Demonstracijski video je podan spodaj, kjer smo na GPS-ju s pomočjo GPS in Raspberry Pi prikazali lokacijo v zemljepisni širini in dolžini.