Arduino Tutorial: Global Positioning System (GPS)

arduino-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.

 

gps-arduino

 

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

sparkfun-gps-loggerDer 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

gps-data-log-arduino5c51b4e155baf

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

sparfun-gps-miniKurz 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.

 

11.08.2017 00:00 |

Passende Artikel

  • SparkFun GPS Logger Shield

    The SparkFun GPS Logger Shield equips your Arduino with access to a GPS module, µSD memory card socket, and all of the other peripherals you’ll need to turn your Arduino into a position-tracking, speed-monitoring, altitude-observing wonder logger. The shield is based around a GP3906-TLP GPS Module – a 66-channel GPS receiver featuring a MediaTek MT3339 architecture and up to a 10Hz update rate. The GPS module will stream constant position...

    52,90 €*

    Nettopreis: 44,45 €
    Umsatzsteuer: 8,45 €
    * inkl. MwSt. zzgl. Versand
  • SparkFun Mini GPS Shield

    Das SparkFun Mini GPS Shield rüstet Ihren Arduino Mini mit einem GPS-Modul, einem μSD-Speicherkartenplatz und weiteren Peripheriegeräten aus, die Sie benötigen, um Ihren Arduino zum Positionstracking, der Geschwindigkeitsüberwachung oder der Höhenkontrolle nutzen zu können. Das Shield basiert auf dem GPS-Modul GP-735 , einem 56-Kanal-GPS-Empfänger mit einem uBlox der 7. Chip-Generation und einer Aktualisierungsrate bis zu 10 Hz. Die...

    14,49 €*

    Nettopreis: 12,18 €
    Umsatzsteuer: 2,31 €
    * inkl. MwSt. zzgl. Versand
  • GPS Receiver - GP-735 (56 Channel)

    The GP-735 is a slim, ultra-high performance, easy to use GPS smart antenna receiver. With -162dBm tracking sensitivity and only 29 second cold start time, the GP735 is a tiny, yet powerful, piece of tech. The slim design makes it ideal for applications where you don’t have a lot of space to work in. Really it’s quite small. This 56-channel GPS module, based on the uBlox 7th generation chipset, has an operating voltage of 3.3~5.5V, an antenna...

    59,50 €*

    Nettopreis: 50,00 €
    Umsatzsteuer: 9,50 €
    * inkl. MwSt. zzgl. Versand
  • Adafruit Ultimate GPS Logger Shield - Includes GPS Module

    Brand new and better than ever, we've replaced our Adafruit GPS shield kit with this assembled shield that comes with an Ultimate GPS module. This GPS shield works great with either UNO or Leonardo Arduinos and is designed to log data to an SD card. Or you can leave the SD card out and use the GPS for a geocaching project, or maybe a music player that changes tunes depending on where you are in the city.    -165 dBm...

    48,14 €*

    Nettopreis: 40,45 €
    Umsatzsteuer: 7,69 €
    * inkl. MwSt. zzgl. Versand