- Nødvendige komponenter:
- GPS-modul og dets funktion:
- Forberedelse af Raspberry Pi til at kommunikere med GPS:
- Forbindelser til Raspberry Pi GPS-interface:
- Test før Python Script:
En af de sejeste indlejrede platforme som Arduino har givet producenter og DIYere muligheden for nemt at få placeringsdata ved hjælp af GPS-modul og dermed bygge ting, der er afhængige af placering. Med den mængde strøm, der er pakket af Raspberry Pi, vil det helt sikkert være ret fantastisk at opbygge GPS-baserede projekter med de samme billige GPS-moduler, og det er fokus for dette indlæg. I dag vil vi i dette projekt interface GPS-modul med Raspberry Pi 3.
Målet med dette projekt er at indsamle placeringsdata (længdegrad og bredde) via UART fra et GPS-modul og vise dem på en 16x2 LCD, så hvis du ikke er fortrolig med den måde, 16x2 LCD fungerer med Raspberry Pi, er dette en anden god mulighed for at lære.
Nødvendige komponenter:
- Hindbær Pi 3
- Neo 6m v2 GPS-modul
- 16 x 2 LCD
- Strømkilde til Raspberry Pi
- LAN-kabel til at forbinde pi til din pc i hovedløs tilstand
- Breadboard og Jumper kabler
- Modstand / potentiometer til LCD
- Hukommelseskort 8 eller 16 GB, der kører Raspbian Jessie
Bortset fra det skal vi installere GPS Daemon (GPSD) bibliotek, 16x2 LCD Adafruit bibliotek, som vi installerer senere i denne vejledning.
Her bruger vi Raspberry Pi 3 med Raspbian Jessie OS. Alle de grundlæggende hardware- og softwarekrav er tidligere diskuteret, du kan slå det op i Raspberry Pi Introduktion.
GPS-modul og dets funktion:
GPS står for Global Positioning System og bruges til at registrere bredde og længdegrad for enhver placering på jorden med nøjagtig UTC-tid (Universal Time Coordinated). GPS-modul er hovedkomponenten i vores køretøjssporingssystemprojekt. Denne enhed modtager koordinaterne fra satellitten for hvert sekund med tid og dato.
GPS-modul sender data relateret til sporingsposition i realtid, og det sender så mange data i NMEA-format (se skærmbilledet nedenfor). NMEA-format består af flere sætninger, hvor vi kun har brug for en sætning. Denne sætning starter fra $ GPGGA og indeholder koordinater, tid og andre nyttige oplysninger. Denne GPGGA henvises til data om Global Positioning System Fix. Lær mere om læsning af GPS-data og dens strenge her.
Vi kan udtrække koordinater fra $ GPGGA-streng ved at tælle kommaerne i strengen. Antag at du finder $ GPGGA-streng og gemmer den i en matrix, så kan Latitude findes efter to kommaer og længdegrad kan findes efter fire kommaer. Nu kan disse breddegrader og længdegrader placeres i andre arrays.
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, længdegrad, E, FQ, NOS, HDP, højde, M, højde, M,, kontrolsumdata
Identifikator |
Beskrivelse |
$ GPGGA |
Data om Global Positioning-systemrettelse |
HHMMSS.SSS |
Tid i time minut sekunder og millisekunder format. |
Breddegrad |
Breddegrad (Koordinat) |
N |
Retning N = Nord, S = Syd |
Længde |
Længdegrad (Koordinat) |
E |
Retning E = øst, W = vest |
FQ |
Ret kvalitetsdata |
NOS |
Antal anvendte satellitter |
HPD |
Vandret fortynding af præcision |
Højde |
Højde fra havets overflade |
M |
Måler |
Højde |
Højde |
Kontrolsum |
Data om kontrolsum |
Du kan tjekke vores andre GPS-projekter:
- Arduino-baseret køretøjsspor ved hjælp af GPS og GSM
- Arduino-baseret bilulykkesvarslingssystem ved hjælp af GPS, GSM og accelerometer
- Sådan bruges GPS med Arduino
- Spor et køretøj på Google Maps ved hjælp af Arduino, ESP8266 & GPS
Forberedelse af Raspberry Pi til at kommunikere med GPS:
Okay så for at hoppe ind, så dette bliver ikke kedeligt, jeg antager, at du allerede ved meget om Raspberry Pi, nok til at få dit operativsystem installeret, få IP-adressen, oprette forbindelse til terminalsoftware som kitt og andre ting om PI. Hvis du har problemer med at gøre nogen af de ovennævnte ting, skal du slå mig op under kommentarfeltet, så hjælper jeg gerne.
Den første ting, vi skal gøre for at få dette projekt i gang, er at forberede vores Raspberry Pi 3 til at være i stand til at kommunikere med GPS-modulet via UART, tro mig, det er ret vanskeligt og prøvede ret på at få det rigtigt, men hvis du følger min guide omhyggeligt, du får det på én gang, dette er temmelig den sværeste del af projektet. Her har vi brugt Neo 6m v2 GPS-modul.
For at dykke ind er her en lille forklaring på, hvordan Raspberry Pi 3 UART fungerer.
Raspberry Pi har to indbyggede UART'er, en PL011 og en mini UART. De implementeres ved hjælp af forskellige hardwareblokke, så de har lidt forskellige egenskaber. På hindbær pi 3 er det trådløse / bluetooth-modul imidlertid forbundet til PLO11 UART, mens mini UART bruges til linux-konsoludgaven. Afhængigt af hvordan du ser det, vil jeg definere PLO11 som den bedste af de to UART på grund af dens implementeringsniveau. Så for dette projekt deaktiverer vi Bluetooth-modulet fra PLO11 UART ved hjælp af et overlay, der er tilgængeligt i den opdaterede aktuelle version af Raspbian Jessie.
Trin 1: Opdatering af Raspberry Pi:
Den første ting, jeg godt kan lide, før jeg starter hvert projekt, er opdatering af hindbær pi. Så lad os gøre det sædvanlige og køre kommandoerne nedenfor;
sudo apt-get opdater sudo apt-get upgrade
genstart derefter systemet med;
sudo genstart
Trin 2: Opsætning af UART i Raspberry Pi:
Den første ting, vi vil gøre under dette, er at redigere /boot/config.txt-filen . For at gøre dette skal du køre kommandoerne nedenfor:
sudo nano /boot/config.txt
i bunden af config.txt-filen skal du tilføje følgende linjer
dtparam = spi = på dtoverlay = pi3-deaktiver-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x for at afslutte, tryk på y og enter for at gemme.
Sørg for, at der ikke er skrivefejl eller fejl ved at dobbelttjekke, da en fejl med dette kan forhindre din pi i at starte.
Hvad er årsagerne til disse kommandoer, force_turbo gør det muligt for UART at bruge den maksimale kernefrekvens, som vi i dette tilfælde indstiller til at være 250. Årsagen til dette er at sikre konsistens og integritet af de serielle data, der er modtaget. Det er vigtigt at bemærke på dette tidspunkt, at brug af force_turbo = 1 annullerer garantien for din hindbær pi, men bortset fra det er det ret sikkert.
Den dtoverlay = PI3-disable-bt afbryder bluetooth fra ttyAMA0 , dette er at give os adgang til at bruge den fulde UART strøm til rådighed via ttyAMAO i stedet for mini UART ttyS0.
Andet trin under dette UART-installationsafsnit er at redigere boot / cmdline.txt
Jeg vil foreslå, at du laver en kopi af cmdline.txt og gemmer først, før du redigerer, så du kan vende tilbage til den senere, hvis det er nødvendigt. Dette kan gøres ved hjælp af;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Erstat indholdet med;
dwc_otg.lpm_enable = 0 konsol = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 elevator = deadline fsck.repair = ja rootwait stille stænk plymouth.ignore-seriel-konsoller
Gem og luk.
Når dette er gjort, bliver vi nødt til at genstarte systemet igen for at foretage ændringer ( sudo-genstart ).
Trin 3: Deaktivering af Raspberry Pi Serial Getty Service
Det næste trin er at deaktivere Pi's serielle getty-tjeneste , kommandoen forhindrer den i at starte igen ved genstart:
sudo systemctl stop [email protected] sudo systemctl deaktiver [email protected]
Følgende kommandoer kan bruges til at aktivere det igen, hvis det er nødvendigt
sudo systemctl aktiver [email protected] sudo systemctl start [email protected]
Genstart systemet.
Trin 4: Aktivering af ttyAMAO:
Vi har deaktiveret ttyS0, næste ting er for os at aktivere ttyAMAO .
sudo systemctl aktiverer [email protected]
Trin 5: Installer Minicom og pynmea2:
Vi vil være minicom til at oprette forbindelse til GPS-modulet og give mening om dataene. Det er også et af de værktøjer, som vi vil bruge til at teste, er, at vores GPS-modul fungerer fint. Et alternativ til minicom er daemon-softwaren GPSD.
sudo apt-get install minicom
For let at parsere de modtagne data bruger vi pynmea2-biblioteket . Det kan installeres ved hjælp af;
sudo pip installerer pynmea2
Biblioteksdokumentation kan findes her
Trin 6: Installation af LCD-biblioteket:
Til denne tutorial bruger vi AdaFruit-biblioteket. Biblioteket er lavet til AdaFruit-skærme, men fungerer også til skærmkort ved hjælp af HD44780. Hvis din skærm er baseret på dette, skal den fungere uden problemer.
Jeg føler, det er bedre at klone biblioteket og bare installere direkte. At klone køre;
git-klon
skift til det klonede bibliotek og installer det
cd./Adafruit_Python_CharLCD sudo python setup.py installation
På dette stadium vil jeg foreslå en anden genstart, så vi er klar til at fortsætte med at forbinde komponenterne.
Forbindelser til Raspberry Pi GPS-interface:
Tilslut GPS-modulet og LCD'et til Raspberry Pi som vist i kredsløbsdiagrammet nedenfor.
Test før Python Script:
Jeg føler, det er vigtigt at teste GPS-modulforbindelsen, inden du fortsætter til python-scriptet. Vi bruger minicom til dette. Kør kommandoen:
sudo minicom -D / dev / ttyAMA0 -b9600
hvor 9600 repræsenterer den baudhastighed, som GPS-modulet kommunikerer med. Dette kan bruges, når vi først er sikre på datakommunikation mellem GPS og RPI, det er tid til at skrive vores python-script.
Testen kan også udføres ved hjælp af kat
sudo cat / dev / ttyAMA0
I Window kan du se NMEA-sætninger, som vi har diskuteret tidligere.
Python-script til denne Raspberry Pi GPS-vejledning er angivet nedenfor i kodeafsnittet.
Med alt sagt og gjort er det tid til at teste hele systemet. Det er vigtigt, at du sikrer, at din GPS får en god løsning, ved at tage den ud, kræver de fleste GPS mellem tre og fire satellitter for at få en løsning, selvom min fungerede indendørs.
Fungerer rigtigt? Ja…
Har du spørgsmål eller kommentarer? Slip dem i kommentarsektionen.
Demonstrationsvideo er angivet nedenfor, hvor vi har vist placeringen i breddegrad og længdegrad på LCD ved hjælp af GPS og Raspberry Pi.