Arduino Tutorial: Global Positioning System (GPS)

Das Global Positioning System (GPS) gibt es seit den 80er Jahren und es ist immer noch eines der wichtigsten Features, die Sie in jedes elektronische System integrieren können. Die Idee, etwas (oder jemanden) zu verfolgen, ist cool genug, aber ohne Telefon oder Internetverbindung ist es viel cooler. In diesem Arduino-GPS-Tutorial werden wir die Grundlagen des GPS erörtern und Sie hoffentlich beim Bau von Arduino-GPS-Projekten unterstützen.

 

Wie wird der Standort verfolgt?

Das gesamte GPS-System hängt von 24 (Minimum) Satelliten ab, die die Erde umkreisen. Jeder Satellit strahlt ständig seine aktuelle Zeit und Position aus. Im Allgemeinen erfordert ein GPS-Empfänger eine Verbindung zu mindestens vier dieser Satelliten, um Daten zu erhalten, um die Position zu berechnen. Der Empfänger berechnet auch die Taktdifferenz zwischen ihm und dem Satelliten.

 

 

Die horizontale Standardgenauigkeit eines GPS-Empfängers beträgt 15 Meter. Erweiterungsschemata wie WAAS und DGPS werden implementiert, um die Genauigkeit auf 2-3 Meter zu verbessern. Assisted GPS (A-GPS) ist ein weiteres Erweiterungsschema, das hauptsächlich von Mobiltelefonen verwendet wird. Bei diesem Schema sucht der GPS-Empfänger "Unterstützung" von Mobilfunknetzen, um die Genauigkeit zu verbessern.

 

NMEA-Sätze

Der berechnete Längengrad, Breitengrad und die Höhe können von Geräten mit dem NMEA 0183-Protokoll gelesen werden. Dieses Protokoll erstellt "Sätze" im ASCII-Format, die diese Daten sowie zusätzliche Informationen wie Peilung und Geschwindigkeit enthalten. Jeder Satz beginnt mit einem Satz von $ GPXXX-Codes, der beschreibt, welche Informationen im Satz enthalten sind. Hier ist eine Liste all dieser Codes

Von all diesen Codes wurden nur 19 interpretiert. Von allen diesen 19 wird im Allgemeinen nur ein Codetyp zum Lesen der Position verwendet: $ GPRMC, der als "empfohlene minimale spezifische GPS / Transit-Daten" definiert ist.

 

Hier ein Beispiel für einen $ GPRMC-Satz:

GPRMC, 220516, A, 5133,82, N, 00042,24, W, 173,8,231,8,130694,004,2, W * 70

 

Der obige Satz enthält 9 Informationen:

 

  • 220516 - Zeit in UTC. Dies wäre 22.05.16 Uhr
  • A - Gültigkeit. A = gültig, V = ungültig
  • 5133,82, N - Breitengrad
  • 0,0042,24, W - Längengrad
  • 173.8 - Empfängergeschwindigkeit in Seemeilen pro Stunde (Knoten)
  • 231.8 – Wahrer Kurs in Grad
  • 130694 - Datum in UTC. Dies wäre der 13. Juni 1994
  • 004.2, W - magnetische Abweichung in Grad
  • * 70 - obligatorische Prüfsumme

 

Eine Alternative zu $ ​​GPRMC ist $ GPGGA, das als "Global Positioning System Fix Data" definiert wird.

 

Hier ein Beispiel für einen $ GPGGA-Satz:

$ GPGGA, 154655,4328,1874, N, 00340,5185, W, 1,03,08,5, -00044,7, M, 051,6, M, * 79

 

Dies ist, was im obigen Satz enthalten ist:

 

  • 154655 - Zeit in UTC. Dies wäre 15:46:55 Uhr
  • 4328.1874, N - Breite
  • 00340.5185, W - Längengrad
  • 1 - GPS-Qualitätsanzeige. 0 ist ungültig, 1 ist GPS-Fix, 2 ist Differential-GPS-Fix
  • 03 - Anzahl der verwendeten Satelliten
  • 08.5 - horizontale Verringerung der Genauigkeit
  • -00044.7, M - Antennenhöhe über / unter dem mittleren Meeresspiegel in Metern
  • 051.6, M - geoidale Trennung in Metern
  • (leer) - Alter in Sekunden seit dem letzten Update von diff. Referenzstation (leer, da GPS-Qualitätsanzeige GPS-Fix ist)
  • (leer) - Differenz-Referenzstations-ID (auch leer, da GPS-Modus aktiviert ist)
  • * 79 - obligatorische Prüfsumme

 

Da es sich bei NMEA-Sätzen um Zeichenfolgen handelt, können wir die benötigten Informationen einfach durch verschiedene Programmiertechniken extrahieren. Die NMEA-Sätze können über serielle Kommunikation von GPS-Geräten gelesen werden, insbesondere über RS-232. Daher kann jeder Mikrocontroller mit USART-Funktion Daten von einem GPS-Peripheriegerät lesen.

 

Arduino GPS Logger Shields

Um einfach und schnell GPS-Daten im Umfeld von Arduino nutzen zu können, werden häufig sogenannte GPS Logger Shields verwendet.

Ein Arduino GPS Logger Shield ist im Grunde ein 2-in-1-Shield. Es verfügt über ein GPS-Shield mit einem SD-Kartensteckplatz, auf dem die GPS-Daten aufgezeichnet werden können. Diese beiden Funktionen werden in einem Shield zusammengefasst und bilden einen mächtigen Arduino-GPS-Logger.

Im weiteren Teil werden drei Logger-Shields für Arduino vorgestellt. Falls Sie nicht mit einem Shield arbeiten möchten oder nicht Ihr passendes Modul gefunden haben, schauen Sie sich bitte unsere Auswahl an GPS Modulen  an.

 

SparkFun Arduino GPS Logger

Der Arduino-GPS-Logger verfügt über ein GPS-Modul mit sehr hoher Empfindlichkeit sowie einen SD-Kartensteckplatz und ein Akkufach. Die Batteriebuchse dient zur Bedienung der RTC am GPS-Modul.

Dieses Shield kann über die UART-Pins (Pins 0 und 1 des Arduino) oder über zwei andere Pins und die SoftwareSerial-Bibliothek mit Arduino kommunizieren. Sie können zwischen diesen beiden Modi wechseln, indem Sie einen kleinen Schalter am Shield verwenden.

Ein wichtiger Aspekt, den Sie beim Umgang mit einem Shield berücksichtigen müssen, der sowohl SoftwareSerial als auch die UART des Arduino verwenden kann, ist der UART-Switch. Beim Hochladen des Sketches sollte es immer auf der Seite SoftwareSerial sein, um sicherzustellen, dass der Sketch korrekt hochgeladen wird. Anschließend können Sie den Switch nach dem Hochladen des Codes wieder auf die HW-UART-Seite verschieben. Dies gilt für alle Shield, die sowohl SW-UART als auch HW-UART verwenden könnten.

Bitte lesen Sie die SparkFun-Hook-Anleitung vor dem Kauf und beachten Sie, dass das die Header gelötet werden müssen.

 

 

Adafruit Ultimate Arduino GPS Logger Shield

Das Shield verwendet ein GPS-Modul, das die gleiche Empfindlichkeit und fast den gleichen Stromverbrauch hat, wie der GPS Logger von Sparkfun.

Das Shield verfügt zusätzlich über einen uFL / SMA-Anschluss. Dies ist ein Anschluss neben dem GPS-Modul, an dem Sie eine externe Antenne anschließen und Ihr Projekt beispielsweise in eine Box packen können. Diese Antenne ist nicht im Lieferumfang enthalten, kann jedoch eine großartige Ergänzung zu einem fortgeschrittenen Projekt sein.

 

 

 

SparkFun Mini GPS Shield

Kurz vorweg: dieses Shield unterscheidet sich vollständig von den anderen Shields und ist nicht einmal kompatibel mit dem Arduino UNO. Es ist nur mit dem Arduino Mini Board kompatibel, daher der Name.  

Das Shield wird ohne das GPS-Modul verkauft. Es verfügt jedoch über einen Satz Pins, die Sie über einen Steckverbinder mit einem GPS-Modul verbinden können. Das von diesem Shield unterstützte GPS-Modul unterscheidet sich etwas von den anderen Modulen. Es hat fast die gleiche Empfindlichkeit und einen höheren Stromverbrauch. Die Aktualisierungsrate ist jedoch um ein Vielfaches höher als bei allen anderen Modulen.

Das GPS-Modul kann auch zusätzlich bei uns erworben werden.

 

Passend dazu

SparkFun GNSS Combo Breakout - ZED-F9P, NEO-D9S (Qwiic)SparkFun GNSS Combo Breakout - ZED-F9P, NEO-D9S (Qwiic)
Sparkfun SparkFun GNSS Combo Breakout - ZED-F9P, NEO-D9S (Qwiic)
Sonderpreis350,00 €
Nicht auf Lager, mit Lieferzeit bestellbar
16344-SparkFun_GPS-RTK_Dead_Reckoning_Breakout_-_ZED-F9R__Qwiic_-01a_600x600.jpg16344-SparkFun_GPS-RTK_Dead_Reckoning_Breakout_-_ZED-F9R__Qwiic_-03a_600x600.jpg
Sparkfun SparkFun GPS-RTK Dead Reckoning Breakout - ZED-F9R (Qwiic)
Sonderpreis248,00 € Normalpreis278,00 €
Auf Lager, 4 Stück
15136-SparkFun_GPS-RTK2_Board_-_ZED-F9P__Qwiic_-03_600x600.jpg15136-SparkFun_GPS-RTK2_Board_-_ZED-F9P__Qwiic_-04_600x600.jpg
Sparkfun SparkFun GPS-RTK2 Board - ZED-F9P (Qwiic)
Sonderpreis268,00 €
Auf Lager, 5 Stück

Passend zu diesem Artikel

View all
Adafruit-Ultimate-GPS-Breakout_1_600x600.jpgAdafruit-Ultimate-GPS-Breakout_2_600x600.jpg
Adafruit Adafruit Ultimate GPS Breakout - 66 channel w/10 Hz updates - Version 3
Sonderpreis28,45 €
Nicht auf Lager, mit Lieferzeit bestellbar
Adafruit-Ultimate-GPS-FeatherWing_1.jpgAdafruit-Ultimate-GPS-FeatherWing_2.jpg
Adafruit Adafruit Ultimate GPS FeatherWing
Sonderpreis26,20 €
Auf Lager
15136-SparkFun_GPS-RTK2_Board_-_ZED-F9P__Qwiic_-03_600x600.jpg15136-SparkFun_GPS-RTK2_Board_-_ZED-F9P__Qwiic_-04_600x600.jpg
Sparkfun SparkFun GPS-RTK2 Board - ZED-F9P (Qwiic)
Sonderpreis268,00 €
Auf Lager, 5 Stück
14414-02_600x600.jpg14414-06_600x600.jpg
Sparkfun SparkFun GPS Breakout - XA1110 (Qwiic)
Sonderpreis38,00 €
Nur noch 2 Mal auf Lager
17285-SparkFun_GPS_Breakout_-_NEO-M9N__SMA__Qwiic_-01.jpg17285-SparkFun_GPS_Breakout_-_NEO-M9N__SMA__Qwiic_-02.jpg
Sparkfun SparkFun GPS Breakout - NEO-M9N, SMA (Qwiic)
Sonderpreis73,20 €
Nur noch 2 Mal auf Lager
16481-SparkFun_GPS-RTK-SMA_Breakout_-_ZED-F9P__Qwiic_-01a_600x600.jpg16481-SparkFun_GPS-RTK-SMA_Breakout_-_ZED-F9P__Qwiic_-03a_600x600.jpg
Sparkfun SparkFun GPS-RTK-SMA Breakout - ZED-F9P (Qwiic)
Sonderpreis269,00 €
Auf Lager, 7 Stück
15210-SparkFun_GPS_Breakout_-_Chip_Antenna__SAM-M8Q__Qwiic_-01_600x600.jpg15210-SparkFun_GPS_Breakout_-_Chip_Antenna__SAM-M8Q__Qwiic_-04_600x600.jpg
Sparkfun SparkFun GPS Breakout - Chip Antenna, SAM-M8Q (Qwiic)
Sonderpreis40,80 €
Auf Lager, 5 Stück
adafruit-fona-808-shield-mini-cellular-gsm-gps-for-arduino-03_600x600.jpgadafruit-fona-808-shield-mini-cellular-gsm-gps-for-arduino-04_600x600.jpg
Adafruit Adafruit FONA 808 Shield - Mini Cellular GSM + GPS for Arduino
Sonderpreis49,56 €
Nicht auf Lager, mit Lieferzeit bestellbar
adafruit-ultimate-gps-logger-shield--_EXP-R15-147_1_600x600.jpgadafruit-ultimate-gps-logger-shield--_EXP-R15-147_2_600x600.jpg
Adafruit Adafruit Ultimate GPS Logger Shield - Includes GPS Module
Sonderpreis33,00 €
Nicht auf Lager, mit Lieferzeit bestellbar