Arduino Nano - GPS

Deze handleiding legt uit hoe u de Arduino Nano gebruikt in combinatie met een NEO-6M GPS module. We zullen in detail leren:

Behalve lengtegraad, breedtegraad en hoogte, kan de Arduino Nano ook GPS-snelheid (km/h) en datum/tijd uitlezen van de NEO-6M GPS module.

Hardware Benodigd

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×NEO-6M GPS module
1×Jumper wires (kabels)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

Of u kunt de volgende kits kopen:

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 de NEO-6M GPS module

De NEO-6M GPS module is een GPS-module die de volgende informatie kan leveren:

  • Lengtegraad (longitude)
  • Breedtegraad (latitude)
  • Hoogte (altitude)
  • GPS-snelheid (km/h)
  • Datum en tijd (date time)

Pinout van de NEO-6M GPS Module

De NEO-6M GPS module heeft vier pinnen:

  • De VCC-pin: dient te worden verbonden met de VCC (5V)
  • De GND-pin: dient te worden verbonden met de GND (0V)
  • De TX-pin: wordt gebruikt voor seriële communicatie en moet worden verbonden met de Serial (of SoftwareSerial) RX-pin van de Arduino Nano
  • De RX-pin: wordt gebruikt voor seriële communicatie en moet worden verbonden met de Serial (of SoftwareSerial) TX-pin van de Arduino Nano
NEO-6M GPS module pinout

Aansluitschema

Arduino Nano GPS module wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code

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

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-gps */ #include <TinyGPS++.h> #include <SoftwareSerial.h> const int RX_PIN = 6, TX_PIN = 5; const uint32_t GPS_BAUD = 9600; //Default baud of NEO-6M is 9600 TinyGPSPlus gps; // The TinyGPS++ object SoftwareSerial gpsSerial(RX_PIN, TX_PIN); // The serial interface to the GPS device void setup() { Serial.begin(9600); gpsSerial.begin(GPS_BAUD); 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

  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek op “TinyGPSPlus” en vind de TinyGPSPlus library van Mikal Hart.
  • Klik op de Install-knop om de TinyGPSPlus library te installeren.
Arduino Nano ESP32 TinyGPS++ library
  • Kopieer de bovenstaande code en open deze in de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino Nano te sturen.
  • Controleer de Serial Monitor om het resultaat te bekijken.
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Afstand berekenen tussen huidige locatie en een vooraf ingestelde locatie

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

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-gps */ #include <TinyGPS++.h> #include <SoftwareSerial.h> const int RX_PIN = 6, TX_PIN = 5; const uint32_t GPS_BAUD = 9600; //Default baud of NEO-6M is 9600 TinyGPSPlus gps; // The TinyGPS++ object SoftwareSerial gpsSerial(RX_PIN, TX_PIN); // The serial interface to the GPS device const double LONDON_LAT = 51.508131; const double LONDON_LON = -0.128002; void setup() { Serial.begin(9600); gpsSerial.begin(GPS_BAUD); 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 de code en open deze met de Arduino IDE.
  • Klik op de Upload-knop om de code te compileren en naar de Arduino Nano te laden.
  • 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.

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!