Arduino Nano - GPS
Ce tutoriel vous explique comment utiliser un Arduino Nano avec un module GPS NEO-6M. En détail, nous apprendrons :
- Comment connecter un Arduino Nano à un module GPS NEO-6M
- Comment programmer un Arduino Nano pour lire les coordonnées GPS (longitude, latitude et altitude) depuis un module GPS NEO-6M
- Comment programmer un Arduino Nano pour calculer la distance depuis la position GPS actuelle jusqu'à une coordonnée GPS prédéfinie (par exemple, les coordonnées de Londres).
Outre la longitude, la latitude et l'altitude, l'Arduino Nano peut également lire la vitesse GPS (km/h) et la date depuis un module GPS NEO-6M.
Préparation du matériel
1 | × | Arduino Nano | |
1 | × | USB A to Mini-B USB cable | |
1 | × | NEO-6M GPS module | |
1 | × | Jumper Wires | |
1 | × | (Optional) 9V Power Adapter for Arduino Nano | |
1 | × | (Recommended) Screw Terminal Adapter for Arduino Nano |
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.
À propos du module GPS NEO-6M
Le module GPS NEO-6M est un module GPS capable de fournir les informations suivantes :
- Longitude
- Latitude
- Altitude
- Vitesse GPS (km/h)
- Date et heure
Brochage du module GPS NEO-6M
Le module GPS NEO-6M dispose de quatre broches :
- La broche VCC : doit être connectée au VCC (5V)
- La broche GND : doit être connectée au GND (0V)
- La broche TX : est utilisée pour la communication série et doit être connectée à la broche RX série (ou SoftwareSerial) sur Arduino Nano.
- La broche RX : est utilisée pour la communication série et doit être connectée à la broche TX série (ou SoftwareSerial) sur Arduino Nano.
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Code Arduino Nano
Lecture des coordonnées GPS, de la vitesse (km/h) et de la date.
/*
* Ce code Arduino Nano a été développé par newbiely.fr
* Ce code Arduino Nano est mis à disposition du public sans aucune restriction.
* Pour des instructions complètes et des schémas de câblage, veuillez visiter:
* https://newbiely.fr/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"));
}
Étapes rapides
- Cliquez sur l'icône Libraries sur la barre gauche de l'Arduino IDE.
- Recherchez "TinyGPSPlus", puis trouvez la bibliothèque TinyGPSPlus de Mikal Hart
- Cliquez sur le bouton Install pour installer la bibliothèque TinyGPSPlus.
- Copiez le code mentionné ci-dessus et ouvrez-le dans l'IDE Arduino.
- Cliquez sur le bouton Upload de l'IDE Arduino pour envoyer le code à l'Arduino Nano.
- Vérifiez le moniteur série pour observer le résultat.
COM6
Autoscroll
Clear output
9600 baud
Newline
Calcul du trajet entre la position actuelle et un lieu prédéfini
Le code ci-dessous calcule la distance entre la position actuelle et Londres (lat: 51.508131, long: -0.128002).
/*
* Ce code Arduino Nano a été développé par newbiely.fr
* Ce code Arduino Nano est mis à disposition du public sans aucune restriction.
* Pour des instructions complètes et des schémas de câblage, veuillez visiter:
* https://newbiely.fr/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"));
}
Étapes rapides
- Copiez le code et ouvrez-le avec l'IDE Arduino.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour compiler et téléverser le code vers l'Arduino Nano.
- Visualisez le résultat sur le moniteur série.
COM6
Autoscroll
Clear output
9600 baud
Newline