Arduino - GPS

In diesem Tutorial lernen wir, wie man GPS-Koordinaten (Längengrad, Breitengrad, Höhe), GPS-Geschwindigkeit (km/h) und Datum und Uhrzeit vom NEO-6M GPS-Modul erhält. Wir lernen auch, wie man die Entfernung von der aktuellen GPS-Position zu vordefinierten GPS-Koordinaten berechnet (z. B. Koordinaten von London).

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×NEO-6M GPS module
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das NEO-6M GPS-Modul

Pinbelegung

Das NEO-6M GPS-Modul enthält 4 Pins:

  • VCC-Pin: muss mit VCC (5 V) verbunden werden
  • GND-Pin: muss mit GND (0 V) verbunden werden
  • TX-Pin: wird für die serielle Kommunikation verwendet, muss mit dem RX-Pin von Serial (oder SoftwareSerial) am Arduino verbunden werden.
  • RX-Pin: wird für die serielle Kommunikation verwendet, muss mit dem TX-Pin von Serial (oder SoftwareSerial) am Arduino verbunden werden.
Pinbelegung des NEO-6M GPS-Moduls

Verdrahtungsdiagramm

Schaltplan des Arduino-GPS-Moduls

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Bitte beachten Sie, dass das oben gezeigte Schaltbild zwar funktionieren könnte, dies jedoch nicht ratsam ist. Der TX-Pin des Arduino liefert 5 V, aber der RX-Pin des GPS-Moduls kann nur 3,3 V akzeptieren. Um die Sicherheit zu gewährleisten, wird empfohlen, zwischen dem TX-Pin des Arduino und dem RX-Pin des GPS-Moduls einen Spannungsteiler zu verwenden, wie im unten gezeigten Diagramm dargestellt.

Arduino-GPS-Modul Spannungsteiler-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino-Code

Lesen von GPS-Koordinaten, Geschwindigkeit (km/h) und Datum und Uhrzeit

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-gps */ #include <TinyGPS++.h> #include <SoftwareSerial.h> #define RX_PIN 4 // Arduino Pin connected to the TX of the GPS module #define TX_PIN 3 // Arduino Pin connected to the RX of the GPS module TinyGPSPlus gps; // the TinyGPS++ object SoftwareSerial gpsSerial(RX_PIN, TX_PIN); // the serial interface to the GPS module void setup() { Serial.begin(9600); gpsSerial.begin(9600); // Default baud of NEO-6M GPS module is 9600 Serial.println(F("Arduino - GPS module")); } void loop() { if (gpsSerial.available() > 0) { if (gps.encode(gpsSerial.read())) { if (gps.location.isValid()) { Serial.print(F("- latitude: ")); Serial.println(gps.location.lat()); Serial.print(F("- longitude: ")); Serial.println(gps.location.lng()); Serial.print(F("- altitude: ")); if (gps.altitude.isValid()) Serial.println(gps.altitude.meters()); else Serial.println(F("INVALID")); } else { Serial.println(F("- location: INVALID")); } Serial.print(F("- speed: ")); if (gps.speed.isValid()) { Serial.print(gps.speed.kmph()); Serial.println(F(" km/h")); } else { Serial.println(F("INVALID")); } Serial.print(F("- GPS date&time: ")); if (gps.date.isValid() && gps.time.isValid()) { Serial.print(gps.date.year()); Serial.print(F("-")); Serial.print(gps.date.month()); Serial.print(F("-")); Serial.print(gps.date.day()); Serial.print(F(" ")); Serial.print(gps.time.hour()); Serial.print(F(":")); Serial.print(gps.time.minute()); Serial.print(F(":")); Serial.println(gps.time.second()); } else { Serial.println(F("INVALID")); } Serial.println(); } } if (millis() > 5000 && gps.charsProcessed() < 10) Serial.println(F("No GPS data received: check wiring")); }

Schnelle Schritte

  • Öffne die Arduino-IDE.
  • Navigiere zum Bibliotheken-Symbol in der linken Leiste der Arduino-IDE.
  • Suche „TinyGPSPlus“, und finde anschließend die TinyGPSPlus-Bibliothek von Mikal Hart.
  • Klicke auf die Schaltfläche Installieren, um die TinyGPSPlus-Bibliothek zu installieren.
Arduino TinyGPS++-Bibliothek
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
  • Klicken Sie auf die Upload-Schaltfläche in der Arduino IDE, um den Code auf den Arduino hochzuladen
  • Sehen Sie das Ergebnis im Serial Monitor:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Berechnung der Entfernung vom aktuellen Standort zu einem vordefinierten Standort

Der folgende Code berechnet die Entfernung zwischen dem aktuellen Standort und London (Breitengrad: 51.508131, Längengrad: -0.128002).

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-gps */ #include <TinyGPS++.h> #include <SoftwareSerial.h> #define RX_PIN 4 // Arduino Pin connected to the TX of the GPS module #define TX_PIN 3 // Arduino Pin connected to the RX of the GPS module TinyGPSPlus gps; // the TinyGPS++ object SoftwareSerial gpsSerial(RX_PIN, TX_PIN); // the serial interface to the GPS module const double LONDON_LAT = 51.508131; const double LONDON_LON = -0.128002; void setup() { Serial.begin(9600); gpsSerial.begin(9600); // Default baud of NEO-6M GPS module is 9600 Serial.println(F("Arduino - GPS module")); } void loop() { if (gpsSerial.available() > 0) { if (gps.encode(gpsSerial.read())) { if (gps.location.isValid()) { double latitude = gps.location.lat(); double longitude = gps.location.lng(); unsigned long distanceKm = TinyGPSPlus::distanceBetween(latitude, longitude, LONDON_LAT, LONDON_LON) / 1000; Serial.print(F("- latitude: ")); Serial.println(latitude); Serial.print(F("- longitude: ")); Serial.println(longitude); Serial.print(F("- distance to London: ")); Serial.println(distanceKm); } else { Serial.println(F("- location: INVALID")); } Serial.println(); } } if (millis() > 5000 && gps.charsProcessed() < 10) Serial.println(F("No GPS data received: check wiring")); }

Schnelle Schritte

  • Kopiere den obigen Code und öffne ihn mit der Arduino IDE
  • Klicke auf die Hochladen-Schaltfläche in der Arduino IDE, um den Code auf den Arduino hochzuladen
  • Siehe das Ergebnis im Serial Monitor:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

WARNING

Bitte beachten Sie, dass dieses Tutorial unvollständig ist. Wir werden auf unserer Facebook-Seite posten, wenn das Tutorial vollständig ist. Liken Sie sie, um auf dem Laufenden zu bleiben.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!