Arduino - GPS

In deze tutorial gaan we leren hoe we GPS-coördinaten kunnen verkrijgen (lengtegraad, breedtegraad, hoogte), GPS-snelheid (km/u) en datum/tijd vanuit het NEO-6M GPS-module. We leren ook hoe we de afstand kunnen berekenen van de huidige GPS-positie naar vooraf bepaalde GPS-coördinaten (bijvoorbeeld coördinaten van Londen).

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0-kabel type A/B
1×NEO-6M GPS-module
1×Jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables STEM V3 Starterskit (Arduino inbegrepen)
1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over het NEO-6M GPS-module

Pinout

Het NEO-6M GPS-module heeft 4 pinnen:

  • VCC-pin: moet worden aangesloten op VCC (5V)
  • GND-pin: moet worden aangesloten op GND (0V)
  • TX-pin: wordt gebruikt voor seriële communicatie en moet worden aangesloten op de RX-pin (ontvanger) van de Serial (of SoftwareSerial) op Arduino.
  • RX-pin: wordt gebruikt voor seriële communicatie en moet worden aangesloten op de TX-pin (zender) van de Serial (of SoftwareSerial) op Arduino.
NEO-6M GPS module Pinout

Bedradingsschema

Arduino GPS module Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Let op: hoewel het bovenstaande bedradingsschema kan werken, is het niet aan te raden. De TX-pin van de Arduino geeft 5V uit, terwijl de RX-pin van het GPS-module slechts 3,3V accepteert. Voor de veiligheid wordt het aangeraden om een spanningsdeler te gebruiken tussen de TX-pin van de Arduino en de RX-pin van het GPS-module, zoals weergegeven in het onderstaande schema.

Arduino GPS module spanningsdeler Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino Code

GPS-coördinaten, snelheid (km/u) en datum/tijd uitlezen

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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")); }

Snelle Stappen

  • Open de Arduino IDE
  • Navigeer naar het icoon Libraries in de linkerbalk van de Arduino IDE.
  • Zoek naar “TinyGPSPlus” en vind de TinyGPSPlus bibliotheek van Mikal Hart.
  • Klik op de Install-knop om de TinyGPSPlus bibliotheek te installeren.
Arduino TinyGPS++ bibliotheek
  • Kopieer bovenstaande code en open deze met de Arduino IDE
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Bekijk het resultaat in de Serial Monitor:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Afstand berekenen van huidige locatie tot een vooraf ingestelde locatie

De onderstaande code berekent de afstand tussen de huidige locatie en Londen (lat: 51.508131, long: -0.128002)

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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")); }

Snelle Stappen

  • Kopieer bovenstaande code en open deze met de Arduino IDE
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Bekijk het resultaat in de Serial Monitor:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Reacties

WARNING

Let op: deze tutorial is nog niet compleet. We zullen een bericht plaatsen op onze Facebook-pagina wanneer de tutorial compleet is. Like de pagina om op de hoogte te blijven.

Gerelateerde Tutorials

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!