- Nødvendige komponenter:
- GPS-modul og dens arbeid:
- Forbereder Raspberry Pi for å kommunisere med GPS:
- Tilkoblinger for Raspberry Pi GPS-modul Grensesnitt:
- Testing før Python Script:
En av de kuleste innebygde plattformene som Arduino har gitt produsenter og DIYere muligheten til å få lokasjonsdata enkelt ved hjelp av GPS-modul og dermed bygge ting som er avhengige av plassering. Med mengden kraft pakket av Raspberry Pi, vil det absolutt være ganske fantastisk å bygge GPS-baserte prosjekter med de samme billige GPS-modulene, og det er fokus for dette innlegget. I dag i dette prosjektet vil vi grensesnitt GPS-modul med Raspberry Pi 3.
Målet med dette prosjektet er å samle stedsdata (lengdegrad og breddegrad) via UART fra en GPS-modul og vise dem på en 16x2 LCD, så hvis du ikke er kjent med måten 16x2 LCD fungerer med Raspberry Pi, er dette en annen flott mulighet til å lære.
Nødvendige komponenter:
- Raspberry Pi 3
- Neo 6m v2 GPS-modul
- 16 x 2 LCD
- Strømkilde for Raspberry Pi
- LAN-kabel for å koble pi til PCen din i hodeløs modus
- Breadboard og Jumper kabler
- Motstand / potensiometer til LCD-skjermen
- Minnekort 8 eller 16 GB som kjører Raspbian Jessie
Annet enn det må vi installere GPS Daemon (GPSD) bibliotek, 16x2 LCD Adafruit bibliotek, som vi installerer senere i denne opplæringen.
Her bruker vi Raspberry Pi 3 med Raspbian Jessie OS. Alle de grunnleggende maskinvare- og programvarekravene er tidligere diskutert, du kan slå opp i Raspberry Pi Introduksjon.
GPS-modul og dens arbeid:
GPS står for Global Positioning System og brukes til å oppdage bredde og lengdegrad på ethvert sted på jorden, med nøyaktig UTC-tid (Universal Time Coordinated). GPS-modul er hovedkomponenten i vårt kjøretøysporingssystemprosjekt. Denne enheten mottar koordinatene fra satellitten for hvert sekund, med tid og dato.
GPS-modulen sender data relatert til sporingsposisjon i sanntid, og den sender så mange data i NMEA-format (se skjermbildet nedenfor). NMEA-format består av flere setninger, der vi bare trenger en setning. Denne setningen starter fra $ GPGGA og inneholder koordinatene, tiden og annen nyttig informasjon. Denne GPGGA henvises til Global Positioning System Fix Data. Lær mer om å lese GPS-data og strengene her.
Vi kan trekke ut koordinat fra $ GPGGA-streng ved å telle kommaene i strengen. Anta at du finner $ GPGGA-streng og lagrer den i en matrise, så kan du finne Latitude etter to komma og lengdegrad etter fire komma. Nå kan disse breddegradene og lengdegradene plasseres i andre matriser.
Nedenfor er $ GPGGA-strengen, sammen med beskrivelsen:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0,9,510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, breddegrad, N, lengdegrad, E, FQ, NOS, HDP, høyde, M, høyde, M,, sjekksumdata
Identifikator |
Beskrivelse |
$ GPGGA |
Data om globale posisjoneringssystemer |
HHMMSS.SSS |
Tid i time minutt sekunder og millisekunder format. |
Breddegrad |
Breddegrad (Koordinat) |
N |
Retning N = Nord, S = Sør |
Lengdegrad |
Lengdegrad (koordinat) |
E |
Retning E = Øst, W = Vest |
FQ |
Løs kvalitetsdata |
NOS |
Antall satellitter som brukes |
HPD |
Horisontal fortynning av presisjon |
Høyde |
Høyde fra havnivå |
M |
Måler |
Høyde |
Høyde |
Sjekksum |
Kontrollsumdata |
Du kan sjekke de andre GPS-prosjektene våre:
- Arduino-basert kjøretøyspor ved bruk av GPS og GSM
- Arduino-basert bilulykkesvarslingssystem ved hjelp av GPS, GSM og akselerometer
- Hvordan bruke GPS med Arduino
- Spor et kjøretøy på Google Maps ved hjelp av Arduino, ESP8266 og GPS
Forbereder Raspberry Pi for å kommunisere med GPS:
Ok så å hoppe inn, så dette blir ikke kjedelig, jeg antar at du allerede vet mye om Raspberry Pi, nok til å få operativsystemet ditt installert, få IP-adressen, koble til terminalprogramvare som kitt og andre ting om PI. Hvis du har problemer med å gjøre noe av det som er nevnt ovenfor, kan du slå meg opp under kommentarfeltet, så hjelper jeg deg gjerne.
Det første vi må gjøre for å få dette prosjektet i gang er å forberede Raspberry Pi 3 for å kunne kommunisere med GPS-modulen via UART, tro meg, det er ganske vanskelig og prøvde å gjøre det riktig, men hvis du følger min guide nøye vil du få det på en gang, dette er ganske vanskeligst i prosjektet. Her har vi brukt Neo 6m v2 GPS-modul.
For å dykke inn, her er en liten forklaring på hvordan Raspberry Pi 3 UART fungerer.
Raspberry Pi har to innebygde UART-er, en PL011 og en mini UART. De er implementert ved hjelp av forskjellige maskinvareblokker, slik at de har litt forskjellige egenskaper. På bringebær pi 3 er imidlertid den trådløse / bluetooth-modulen koblet til PLO11 UART, mens mini UART brukes til linux-konsollutgaven. Avhengig av hvordan du ser det, vil jeg definere PLO11 som den beste av de to UART på grunn av implementeringsnivået. Så for dette prosjektet vil vi deaktivere Bluetooth-modulen fra PLO11 UART ved hjelp av et overlegg tilgjengelig i den oppdaterte gjeldende versjonen av Raspbian Jessie.
Trinn 1: Oppdatering av Raspberry Pi:
Det første jeg liker å gjøre før jeg starter hvert prosjekt, er å oppdatere bringebær-pi. Så la oss gjøre det vanlige og kjøre kommandoene nedenfor;
sudo apt-get update sudo apt-get upgrade
start systemet på nytt med;
sudo omstart
Trinn 2: Sette opp UART i Raspberry Pi:
Det første vi vil gjøre under dette er å redigere /boot/config.txt-filen . For å gjøre dette, kjør kommandoene nedenfor:
sudo nano /boot/config.txt
Legg til følgende linjer nederst i config.txt-filen
dtparam = spi = på dtoverlay = pi3-deaktiver-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x for å avslutte og trykk på y og enter for å lagre.
Forsikre deg om at det ikke er noen skrivefeil eller feil ved å dobbeltsjekke, fordi en feil med dette kan forhindre at pi starter opp.
Hva er årsakene til disse kommandoene, force_turbo gjør det mulig for UART å bruke den maksimale kjernefrekvensen som vi i dette tilfellet setter til å være 250. Årsaken til dette er å sikre konsistens og integritet av seriedataene som er mottatt. Det er viktig å merke seg på dette tidspunktet at bruk av force_turbo = 1 vil ugyldiggjøre garantien på bringebær-pi, men i tillegg er det ganske trygt.
Den dtoverlay = PI3-disable-bt kobler Bluetooth fra ttyAMA0 , er dette for å gi oss tilgang til å bruke hele UART strøm tilgjengelig via ttyAMAO i stedet for mini UART ttyS0.
Andre trinn under denne UART-oppsettdelen er å redigere boot / cmdline.txt
Jeg vil foreslå at du lager en kopi av cmdline.txt og lagrer først før du redigerer, slik at du kan gå tilbake til den senere om nødvendig. Dette kan gjøres ved hjelp av;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Erstatt innholdet med;
dwc_otg.lpm_enable = 0 konsoll = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 elevator = deadline fsck.repair = ja rootwait stille sprut plymouth.ignore-seriell-konsoller
Lagre og lukk.
Når dette er gjort, må vi starte systemet på nytt for å utføre endringer ( sudo-omstart ).
Trinn 3: Deaktivering av Raspberry Pi Serial Getty Service
Det neste trinnet er å deaktivere Pi-serien getty-tjenesten , kommandoen vil forhindre at den starter igjen ved omstart:
sudo systemctl stopp [email protected] sudo systemctl deaktiver [email protected]
Følgende kommandoer kan brukes til å aktivere det igjen om nødvendig
sudo systemctl aktiver [email protected] sudo systemctl start [email protected]
Start systemet på nytt.
Trinn 4: Aktivering av ttyAMAO:
Vi har deaktivert ttyS0, neste ting er for oss å aktivere ttyAMAO .
sudo systemctl aktiverer [email protected]
Trinn 5: Installer Minicom og pynmea2:
Vi vil være minicom for å koble til GPS-modulen og gi mening om dataene. Det er også et av verktøyene vi vil bruke til å teste er at GPS-modulen vår fungerer bra. Et alternativ til minicom er daemon-programvaren GPSD.
sudo apt-get install minicom
For å enkelt analysere de mottatte dataene, bruker vi pynmea2-biblioteket . Den kan installeres ved hjelp av;
sudo pip installere pynmea2
Biblioteksdokumentasjon finner du her
Trinn 6: Installere LCD-biblioteket:
For denne opplæringen bruker vi AdaFruit-biblioteket. Biblioteket er laget for AdaFruit-skjermer, men fungerer også for skjermkort ved hjelp av HD44780. Hvis skjermen din er basert på dette, bør den fungere uten problemer.
Jeg føler at det er bedre å klone biblioteket og bare installere direkte. Å klone løpe;
git klone
bytt til den klonede katalogen og installer den
cd./Adafruit_Python_CharLCD sudo python setup.py install
På dette stadiet vil jeg foreslå en ny omstart, så vi er klare til å koble til komponentene.
Tilkoblinger for Raspberry Pi GPS-modul Grensesnitt:
Koble GPS-modulen og LCD-skjermen til Raspberry Pi som vist i kretsdiagrammet nedenfor.
Testing før Python Script:
Jeg føler det er viktig å teste GPS-modulforbindelsen før du går videre til python-skriptet. Vi vil bruke minicom for dette. Kjør kommandoen:
sudo minicom -D / dev / ttyAMA0 -b9600
hvor 9600 representerer baudhastigheten som GPS-modulen kommuniserer med. Dette kan brukes en gang når vi er sikre på datakommunikasjon mellom GPS og RPI, det er på tide å skrive pythonscriptet vårt.
Testen kan også gjøres med katt
sudo cat / dev / ttyAMA0
I Window kan du se NMEA setninger som vi har diskutert tidligere.
Python Script for denne Raspberry Pi GPS-opplæringen er gitt nedenfor i Kodeseksjonen.
Med alt sagt og gjort, er det på tide å teste hele systemet. Det er viktig at du sørger for at GPSen din får en god løsning, ved å ta den ut, krever de fleste GPS mellom tre og fire satellitter for å få en løsning, selv om min fungerte innendørs.
Fungerer riktig? Ja…
Har du spørsmål eller kommentarer? Slipp dem i kommentarseksjonen.
Demonstrasjonsvideo er gitt nedenfor, hvor vi har vist posisjonen i bredde og lengdegrad på LCD ved hjelp av GPS og Raspberry Pi.