- Erforderliche Komponenten:
- GPS-Modul und seine Funktionsweise:
- Vorbereiten des Raspberry Pi für die Kommunikation mit GPS:
- Anschlüsse für das Raspberry Pi GPS-Modul Schnittstelle:
- Testen vor Python Script:
Eine der coolsten eingebetteten Plattformen wie das Arduino hat Herstellern und Heimwerkern die Möglichkeit gegeben, Standortdaten mithilfe des GPS-Moduls einfach abzurufen und so Dinge zu erstellen, die vom Standort abhängen. Mit der Menge an Leistung, die der Raspberry Pi bietet, wird es sicherlich großartig sein, GPS-basierte Projekte mit denselben billigen GPS-Modulen zu erstellen, und das ist der Schwerpunkt dieses Beitrags. Heute werden wir in diesem Projekt das GPS-Modul mit Raspberry Pi 3 verbinden.
Das Ziel dieses Projekts ist es, Standortdaten (Längen- und Breitengrad) über UART von einem GPS-Modul zu erfassen und auf einem 16x2-LCD anzuzeigen. Wenn Sie also nicht mit der Funktionsweise des 16x2-LCD mit dem Raspberry Pi vertraut sind, ist dies ein anderes tolle Gelegenheit zu lernen.
Erforderliche Komponenten:
- Himbeer Pi 3
- Neo 6m v2 GPS-Modul
- 16 x 2 LCD
- Stromquelle für den Raspberry Pi
- LAN-Kabel zum Anschließen des Pi an Ihren PC im Headless-Modus
- Steckbrett- und Überbrückungskabel
- Widerstand / Potentiometer zum LCD
- Speicherkarte 8 oder 16 GB mit Raspbian Jessie
Ansonsten müssen wir die GPS Daemon (GPSD) -Bibliothek, die 16x2 LCD Adafruit-Bibliothek, installieren, die wir später in diesem Tutorial installieren.
Hier verwenden wir Raspberry Pi 3 mit Raspbian Jessie OS. Alle grundlegenden Hardware- und Softwareanforderungen wurden bereits erläutert. Sie können sie in der Raspberry Pi-Einführung nachschlagen.
GPS-Modul und seine Funktionsweise:
GPS steht für Global Positioning System und wird verwendet, um den Breiten- und Längengrad eines beliebigen Ortes auf der Erde mit der genauen UTC-Zeit (Universal Time Coordinated) zu erfassen. Das GPS-Modul ist die Hauptkomponente in unserem Projekt zum Fahrzeugverfolgungssystem. Dieses Gerät empfängt die Koordinaten vom Satelliten für jede Sekunde mit Uhrzeit und Datum.
Das GPS-Modul sendet die Daten zur Verfolgungsposition in Echtzeit und sendet so viele Daten im NMEA-Format (siehe Abbildung unten). Das NMEA-Format besteht aus mehreren Sätzen, in denen wir nur einen Satz benötigen. Dieser Satz beginnt bei $ GPGGA und enthält die Koordinaten, die Zeit und andere nützliche Informationen. Dieses GPGGA wird als Fixdaten für das globale Positionierungssystem bezeichnet. Erfahren Sie hier mehr über das Lesen von GPS-Daten und deren Zeichenfolgen.
Wir können die Koordinate aus der $ GPGGA-Zeichenfolge extrahieren, indem wir die Kommas in der Zeichenfolge zählen. Angenommen, Sie finden eine $ GPGGA-Zeichenfolge und speichern sie in einem Array. Dann wird Latitude nach zwei Kommas und Longitude nach vier Kommas gefunden. Jetzt können diese Breiten- und Längengrade in andere Arrays eingefügt werden.
Unten finden Sie den $ GPGGA-String mit seiner Beschreibung:
$ GPGGA, 104534.000.7791.0381, N, 06727.4434, E, 1.08.0.9.510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, Breite, N, Länge, E, FQ, NOS, HDP, Höhe, M, Höhe, M,, Prüfsummen-Daten
Kennung |
Beschreibung |
$ GPGGA |
Fixdaten des Global Positioning Systems |
HHMMSS.SSS |
Zeit in Stunden, Minuten, Sekunden und Millisekunden. |
Breite |
Breitengrad (Koordinate) |
N. |
Richtung N = Nord, S = Süd |
Längengrad |
Längengrad (Koordinate) |
E. |
Richtung E = Ost, W = West |
FQ |
Qualitätsdaten korrigieren |
NOS |
Anzahl der verwendeten Satelliten |
HPD |
Horizontale Verdünnung der Präzision |
Höhe |
Höhe vom Meeresspiegel |
M. |
Meter |
Höhe |
Höhe |
Prüfsumme |
Prüfsummen-Daten |
Sie können unsere anderen GPS-Projekte überprüfen:
- Arduino-basierter Vehicle Tracker mit GPS und GSM
- Arduino-basiertes Fahrzeugunfall-Warnsystem mit GPS, GSM und Beschleunigungsmesser
- Verwendung von GPS mit Arduino
- Verfolgen Sie ein Fahrzeug auf Google Maps mit Arduino, ESP8266 und GPS
Vorbereiten des Raspberry Pi für die Kommunikation mit GPS:
Okay, um einzuspringen, damit es nicht langweilig wird. Ich gehe davon aus, dass Sie bereits viel über den Raspberry Pi wissen, genug, um Ihr Betriebssystem zu installieren, die IP-Adresse zu erhalten, eine Verbindung zu Terminalsoftware wie Putty und anderen Dingen herzustellen PI. Sollten Sie Probleme haben, eines der oben genannten Dinge zu tun, schlagen Sie mich im Kommentarbereich an und ich werde Ihnen gerne weiterhelfen.
Das erste, was wir tun müssen, um dieses Projekt in Gang zu bringen, ist, unseren Raspberry Pi 3 so vorzubereiten, dass er über UART mit dem GPS-Modul kommunizieren kann. Glauben Sie mir, es ist ziemlich schwierig und hat den Versuch unternommen, es richtig zu machen, aber wenn Sie folgen Mein Führer sorgfältig Sie werden es auf einmal bekommen, dies ist ziemlich der schwierigste Teil des Projekts. Hier haben wir das Neo 6m v2 GPS-Modul verwendet.
Zum Eintauchen hier eine kleine Erklärung, wie der Raspberry Pi 3 UART funktioniert.
Der Raspberry Pi verfügt über zwei integrierte UARTs, einen PL011 und einen Mini-UART. Sie werden mit unterschiedlichen Hardwareblöcken implementiert, sodass sie leicht unterschiedliche Eigenschaften aufweisen. Auf dem Himbeer-Pi 3 ist das WLAN- / Bluetooth-Modul jedoch mit dem PLO11-UART verbunden, während der Mini-UART für die Linux-Konsole verwendet wird. Je nachdem, wie Sie es sehen, werde ich den PLO11 aufgrund seiner Implementierungsstufe als den besten der beiden UART definieren. Für dieses Projekt deaktivieren wir das Bluetooth-Modul vom PLO11 UART mithilfe eines Overlays, das in der aktualisierten aktuellen Version des Raspbian Jessie verfügbar ist.
Schritt 1: Aktualisieren des Raspberry Pi:
Das erste, was ich gerne mache, bevor ich mit jedem Projekt beginne, ist das Aktualisieren des Himbeer-Pi. Lassen Sie uns also das Übliche tun und die folgenden Befehle ausführen.
sudo apt-get update sudo apt-get upgrade
Starten Sie dann das System mit neu.
sudo neu starten
Schritt 2: Einrichten des UART in Raspberry Pi:
Als erstes werden wir die Datei /boot/config.txt bearbeiten. Führen Sie dazu die folgenden Befehle aus:
sudo nano /boot/config.txt
Fügen Sie am Ende der Datei config.txt die folgenden Zeilen hinzu
dtparam = spi = on dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
Strg + x zum Beenden und drücken Sie y und Enter zum Speichern.
Stellen Sie sicher, dass keine Tippfehler oder Fehler vorliegen, indem Sie dies überprüfen, da ein Fehler möglicherweise das Booten Ihres Pi verhindert.
Was sind die Gründe für diese Befehle ? Mit force_turbo kann UART die maximale Kernfrequenz verwenden, die wir in diesem Fall auf 250 einstellen. Der Grund dafür ist, die Konsistenz und Integrität der empfangenen seriellen Daten sicherzustellen. Es ist an dieser Stelle wichtig zu beachten, dass die Verwendung von force_turbo = 1 die Garantie Ihres Himbeer-Pi ungültig macht, aber abgesehen davon ist es ziemlich sicher.
Das dtoverlay = pi3-disable-bt trennt das Bluetooth vom ttyAMA0. Dadurch können wir die volle über ttyAMAO verfügbare UART-Leistung anstelle des Mini-UART ttyS0 nutzen.
Der zweite Schritt in diesem UART-Setup-Abschnitt ist das Bearbeiten der Datei boot / cmdline.txt
Ich werde vorschlagen, dass Sie eine Kopie der Datei cmdline.txt erstellen und diese vor dem Bearbeiten zuerst speichern, damit Sie später bei Bedarf darauf zurückgreifen können. Dies kann mit erfolgen;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Ersetzen Sie den Inhalt durch;
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 lift = termine fsck.repair = yes rootwait quiet splash plymouth.ignore-serial-consoles
Speichern und schließen.
Nachdem dies erledigt ist, müssen wir das System erneut neu starten , um Änderungen vorzunehmen ( sudo-Neustart ).
Schritt 3: Deaktivieren des Raspberry Pi Serial Getty Service
Der nächste Schritt besteht darin, den seriellen Dienst getty des Pi zu deaktivieren. Der Befehl verhindert, dass er beim Neustart erneut gestartet wird:
sudo systemctl stop [email protected] sudo systemctl deaktiviert [email protected]
Die folgenden Befehle können verwendet werden, um es bei Bedarf wieder zu aktivieren
sudo systemctl enable [email protected] sudo systemctl start [email protected]
Starten Sie das System neu.
Schritt 4: ttyAMAO aktivieren:
Wir haben das ttyS0 deaktiviert. Als nächstes müssen wir das ttyAMAO aktivieren .
sudo systemctl enable [email protected]
Schritt 5: Installieren Sie Minicom und pynmea2:
Wir werden uns bemühen, eine Verbindung zum GPS-Modul herzustellen und die Daten zu verstehen. Es ist auch eines der Tools, die wir zum Testen verwenden werden, da unser GPS-Modul einwandfrei funktioniert. Eine Alternative zu Minicom ist die Daemon-Software GPSD.
sudo apt-get install minicom
Um die empfangenen Daten einfach zu analysieren, verwenden wir die pynmea2-Bibliothek . Es kann installiert werden mit;
sudo pip install pynmea2
Die Bibliotheksdokumentation finden Sie hier
Schritt 6: Installieren der LCD-Bibliothek:
Für dieses Tutorial verwenden wir die AdaFruit-Bibliothek. Die Bibliothek wurde für AdaFruit-Bildschirme erstellt, funktioniert aber auch für Anzeigetafeln mit HD44780. Wenn Ihr Display darauf basiert, sollte es ohne Probleme funktionieren.
Ich finde es besser, die Bibliothek zu klonen und direkt zu installieren. Run klonen;
Git-Klon
Wechseln Sie in das geklonte Verzeichnis und installieren Sie es
cd./Adafruit_Python_CharLCD sudo python setup.py install
In diesem Stadium werde ich einen weiteren Neustart vorschlagen, damit wir mit dem Anschließen der Komponenten fortfahren können.
Anschlüsse für das Raspberry Pi GPS-Modul Schnittstelle:
Schließen Sie das GPS-Modul und das LCD an den Raspberry Pi an, wie im folgenden Schaltplan gezeigt.
Testen vor Python Script:
Ich halte es für wichtig, die Verbindung des GPS-Moduls zu testen, bevor Sie mit dem Python-Skript fortfahren. Wir werden dafür Minicom verwenden. Führen Sie den folgenden Befehl aus:
sudo minicom -D / dev / ttyAMA0 -b9600
Dabei steht 9600 für die Baudrate, mit der das GPS-Modul kommuniziert. Dies kann verwendet werden, wenn wir uns der Datenkommunikation zwischen dem GPS und dem RPI sicher sind und es Zeit ist, unser Python-Skript zu schreiben.
Der Test kann auch mit cat durchgeführt werden
sudo cat / dev / ttyAMA0
In Window sehen Sie NMEA-Sätze, die wir zuvor besprochen haben.
Das Python-Skript für dieses Raspberry Pi GPS-Tutorial finden Sie weiter unten im Abschnitt Code.
Nachdem alles gesagt und getan ist, ist es Zeit, das gesamte System zu testen. Es ist wichtig, dass Sie sicherstellen, dass Ihr GPS eine gute Lösung erhält. Wenn Sie es herausnehmen, benötigen die meisten GPS-Geräte zwischen drei und vier Satelliten, um eine Lösung zu erhalten, obwohl meine in Innenräumen funktioniert hat.
Funktioniert richtig? Ja…
Haben Sie Fragen oder Kommentare? Legen Sie sie im Kommentarbereich ab.
Im Folgenden wird ein Demonstrationsvideo gezeigt, in dem wir den Standort in Breiten- und Längengrad auf dem LCD mithilfe von GPS und Raspberry Pi angezeigt haben.