- Vereiste componenten:
- GPS-module en zijn werking:
- De Raspberry Pi voorbereiden om te communiceren met GPS:
- Aansluitingen voor Raspberry Pi GPS-module-interface:
- Testen vóór Python-script:
Een van de coolste embedded platforms zoals de Arduino heeft makers en doe-het-zelvers de mogelijkheid gegeven om gemakkelijk locatiegegevens te krijgen met behulp van een GPS-module en zo dingen te bouwen die afhankelijk zijn van locatie. Met de hoeveelheid kracht die door de Raspberry Pi wordt geleverd, zal het zeker best geweldig zijn om op GPS gebaseerde projecten te bouwen met dezelfde goedkope GPS-modules en dat is de focus van dit bericht. Vandaag zullen we in dit project de GPS-module koppelen met Raspberry Pi 3.
Het doel van dit project is om locatiegegevens (lengte- en breedtegraad) te verzamelen via UART van een GPS-module en deze weer te geven op een 16x2 LCD, dus als je niet bekend bent met de manier waarop de 16x2 LCD werkt met de Raspberry Pi, is dit een andere geweldige kans om te leren.
Vereiste componenten:
- Raspberry Pi 3
- Neo 6m v2 GPS-module
- 16 x 2 LCD-scherm
- Stroombron voor de Raspberry Pi
- LAN-kabel om de pi aan te sluiten op uw pc in headless-modus
- Breadboard en startkabels
- Weerstand / potentiometer naar de LCD
- Geheugenkaart 8 of 16 Gb met Raspbian Jessie
Verder moeten we de GPS Daemon (GPSD) -bibliotheek, 16x2 LCD Adafruit-bibliotheek installeren, die we later in deze tutorial installeren.
Hier gebruiken we Raspberry Pi 3 met Raspbian Jessie OS. Alle basisvereisten voor hardware en software zijn eerder besproken, u kunt het opzoeken in de Raspberry Pi-introductie.
GPS-module en zijn werking:
GPS staat voor Global Positioning System en wordt gebruikt om de lengte- en breedtegraad van elke locatie op aarde te detecteren, met de exacte UTC-tijd (Universal Time Coordinated). GPS-module is het belangrijkste onderdeel van ons voertuigvolgsysteemproject. Dit apparaat ontvangt voor elke seconde de coördinaten van de satelliet, met tijd en datum.
De GPS-module verzendt de gegevens met betrekking tot het volgen van de positie in realtime, en het verzendt zoveel gegevens in NMEA-formaat (zie de onderstaande schermafbeelding). Het NMEA-formaat bestaat uit meerdere zinnen, waarin we maar één zin nodig hebben. Deze zin begint vanaf $ GPGGA en bevat de coördinaten, tijd en andere nuttige informatie. Deze GPGGA wordt verwezen naar Global Positioning System Fix Data. Lees hier meer over het lezen van GPS-gegevens en de bijbehorende snaren.
We kunnen coördinaten uit de tekenreeks $ GPGGA halen door de komma's in de tekenreeks te tellen. Stel dat u de tekenreeks $ GPGGA vindt en deze in een array opslaat, dan vindt u Latitude na twee komma's en vindt u Longitude na vier komma's. Nu kunnen deze lengte- en breedtegraad in andere arrays worden geplaatst.
Hieronder staat de $ GPGGA-string, samen met de beschrijving:
$ GPGGA, 104534.000,7791,0381, N, 06727,4434, E, 1,08,0,9,510,4, M, 43,9, M`` * 47
$ GPGGA, HHMMSS.SSS, breedtegraad, N, lengtegraad, E, FQ, NOS, HDP, hoogte, M, hoogte, M`` checksum data
ID |
Omschrijving |
$ GPGGA |
Gegevens van het Global Positioning-systeem |
HHMMSS.SSS |
Tijd in uur minuten seconden en milliseconden formaat. |
Breedtegraad |
Breedtegraad (coördinaat) |
N |
Richting N = Noord, S = Zuid |
Lengtegraad |
Lengtegraad (coördinaat) |
E. |
Richting E = Oost, W = West |
FQ |
Kwaliteitsgegevens repareren |
NOS |
Aantal gebruikte satellieten |
HPD |
Horizontale verdunning van precisie |
Hoogte |
Hoogte vanaf zeeniveau |
M. |
Meter |
Hoogte |
Hoogte |
Checksum |
Checksum-gegevens |
U kunt onze andere GPS-projecten bekijken:
- Op Arduino gebaseerde voertuigvolger met behulp van GPS en GSM
- Op Arduino gebaseerd waarschuwingssysteem voor voertuigongevallen met behulp van GPS, GSM en Accelerometer
- GPS gebruiken met Arduino
- Volg een voertuig op Google Maps met Arduino, ESP8266 en GPS
De Raspberry Pi voorbereiden om te communiceren met GPS:
Oké, dus om erin te springen, dus dit wordt niet saai, ik neem aan dat je al veel weet over de Raspberry Pi, genoeg om je besturingssysteem te installeren, het IP-adres te verkrijgen, verbinding te maken met terminalsoftware zoals stopverf en andere dingen over de PI. Mocht je een probleem hebben met een van de hierboven genoemde dingen, neem dan contact met me op onder het commentaargedeelte en ik zal je graag helpen.
Het eerste dat we moeten doen om dit project op gang te krijgen, is onze Raspberry Pi 3 voorbereiden om te kunnen communiceren met de GPS-module via UART, geloof me, het is best lastig en het kostte nogal wat moeite om het goed te krijgen, maar als je volgt mijn gids zorgvuldig, je krijgt het in één keer, dit is redelijk het moeilijkste deel van het project. Hier hebben we de Neo 6m v2 GPS-module gebruikt.
Om erin te duiken, volgt hier een kleine uitleg over hoe de Raspberry Pi 3 UART werkt.
De Raspberry Pi heeft twee ingebouwde UART's, een PL011 en een mini UART. Ze zijn geïmplementeerd met behulp van verschillende hardwareblokken, zodat ze enigszins verschillende kenmerken hebben. Op de Raspberry Pi 3 is de draadloze / bluetooth-module echter verbonden met de PLO11 UART, terwijl de mini UART wordt gebruikt voor de Linux-console-uitgang. Afhankelijk van hoe u het ziet, zal ik de PLO11 definiëren als de beste van de twee UART vanwege het implementatieniveau. Dus voor dit project zullen we de Bluetooth-module van de PLO11 UART deactiveren met behulp van een overlay die beschikbaar is in de bijgewerkte huidige versie van de Raspbian Jessie.
Stap 1: de Raspberry Pi bijwerken:
Het eerste dat ik leuk vind om te doen voordat ik aan elk project begin, is het updaten van de framboos pi. Dus laten we het gebruikelijke doen en de onderstaande opdrachten uitvoeren;
sudo apt-get update sudo apt-get upgrade
start het systeem vervolgens opnieuw op met;
sudo opnieuw opstarten
Stap 2: UART instellen in Raspberry Pi:
Het eerste dat we hieronder zullen doen, is het /boot/config.txt-bestand bewerken. Voer hiervoor de onderstaande opdrachten uit:
sudo nano /boot/config.txt
Voeg onder aan het config.txt-bestand de volgende regels toe
dtparam = spi = op dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x om af te sluiten en druk op y en enter om op te slaan.
Zorg ervoor dat er geen typefouten of fouten zijn door dubbel te controleren of een fout hiermee kan voorkomen dat uw pi opstart.
Wat zijn de redenen voor deze commando's, force_turbo stelt UART in staat om de maximale kernfrequentie te gebruiken die we in dit geval instellen op 250. De reden hiervoor is om de consistentie en integriteit van de ontvangen seriële gegevens te waarborgen. Het is belangrijk om op dit punt op te merken dat het gebruik van force_turbo = 1 de garantie van je Raspberry Pi ongeldig maakt, maar daarnaast is het redelijk veilig.
De dtoverlay = pi3-disable-bt verbreekt de bluetooth van de ttyAMA0 , dit is om ons toegang te geven om het volledige UART-vermogen te gebruiken dat beschikbaar is via ttyAMAO in plaats van de mini UART ttyS0.
De tweede stap onder deze UART-instellingensectie is om het bestand boot / cmdline.txt te bewerken
Ik zal je aanraden om een kopie van cmdline.txt te maken en deze eerst op te slaan voordat je gaat bewerken, zodat je er later indien nodig naar kunt terugkeren. Dit kan gedaan worden met;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Vervang de inhoud door;
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 elevator = deadline fsck.repair = ja rootwait rustige splash plymouth.ignore-serial-consoles
Bewaar en sluit af.
Als dit is gebeurd, moeten we het systeem opnieuw opstarten om wijzigingen door te voeren ( sudo reboot ).
Stap 3: de Raspberry Pi Serial Getty-service uitschakelen
De volgende stap is om de Pi-serie van de getty-service uit te schakelen, de opdracht zal voorkomen dat deze opnieuw start bij het opnieuw opstarten:
sudo systemctl stop [email protected] sudo systemctl schakel [email protected] uit
De volgende opdrachten kunnen worden gebruikt om het indien nodig weer in te schakelen
sudo systemctl inschakelen [email protected] sudo systemctl start [email protected]
Start het systeem opnieuw op.
Stap 4: ttyAMAO activeren:
We hebben de ttyS0 uitgeschakeld, het volgende is dat we de ttyAMAO inschakelen .
sudo systemctl inschakelen [email protected]
Stap 5: Installeer Minicom en pynmea2:
We zullen minicom zijn om verbinding te maken met de GPS-module en de gegevens te begrijpen. Het is ook een van de tools die we zullen gebruiken om te testen, of onze GPS-module goed werkt. Een alternatief voor minicom is de daemon-software GPSD.
sudo apt-get install minicom
Om de ontvangen gegevens gemakkelijk te ontleden, maken we gebruik van de pynmea2-bibliotheek . Het kan worden geïnstalleerd met;
sudo pip installeer pynmea2
Bibliotheekdocumentatie is hier te vinden
Stap 6: De LCD-bibliotheek installeren:
Voor deze tutorial gebruiken we de AdaFruit-bibliotheek. De bibliotheek is gemaakt voor AdaFruit-schermen, maar werkt ook voor displayborden met HD44780. Als uw beeldscherm hierop is gebaseerd, zou het zonder problemen moeten werken.
Ik voel dat het beter is om de bibliotheek te klonen en gewoon rechtstreeks te installeren. Run klonen;
git clone
ga naar de gekloonde map en installeer het
cd./Adafruit_Python_CharLCD sudo python setup.py installeren
In dit stadium zal ik een nieuwe herstart voorstellen, zodat we klaar zijn om door te gaan met het aansluiten van de componenten.
Aansluitingen voor Raspberry Pi GPS-module-interface:
Sluit de GPS-module en het LCD-scherm aan op de Raspberry Pi zoals weergegeven in het onderstaande schakelschema.
Testen vóór Python-script:
Ik vind het belangrijk om de GPS-moduleverbinding te testen voordat we verder gaan met het python-script.We zullen hiervoor minicom gebruiken. Voer het commando uit:
sudo minicom -D / dev / ttyAMA0 -b9600
waarbij 9600 de baudrate vertegenwoordigt waarmee de GPS-module communiceert. Dit kan worden gebruikt voor als we zeker zijn van datacommunicatie tussen de GPS en de RPI, het is tijd om ons pythonscript te schrijven.
De test kan ook worden gedaan met kat
sudo cat / dev / ttyAMA0
In Window kunt u NMEA-zinnen zien die we eerder hebben besproken.
Python-script voor deze Raspberry Pi GPS-zelfstudie wordt hieronder gegeven in de sectie Code.
Met alles gezegd en gedaan, is het tijd om het hele systeem te testen. Het is belangrijk dat u ervoor zorgt dat uw GPS een goede fix krijgt, door deze uit te schakelen, hebben de meeste GPS tussen de drie tot 4 satellieten nodig om een fix te krijgen, hoewel de mijne binnen werkte.
Werkt goed? Ja…
Heeft u vragen of opmerkingen? Zet ze neer in het commentaargedeelte.
Hieronder wordt een demonstratievideo gegeven, waarin we de locatie in lengte- en breedtegraad op het LCD-scherm hebben weergegeven met behulp van GPS en Raspberry Pi.