Arduino Nano ESP32 - GPS

En esta guía, descubriremos cómo extraer las coordenadas GPS (longitud, latitud y altitud), la velocidad GPS (en kilómetros por hora) y la información de fecha y hora del módulo GPS NEO-6M. Además, exploraremos el proceso de calcular la distancia entre la posición GPS actual y un conjunto de coordenadas GPS predefinidas (por ejemplo, las coordenadas de Londres).

Hardware Requerido

1×Arduino Nano ESP32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×NEO-6M GPS module
1×Cables Puente
1×Protoboard
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del módulo GPS NEO-6M

Diagrama de pines

El módulo GPS NEO-6M tiene 4 pines:

  • Pin VCC: debe conectarse a VCC (3.3V o 5V)
  • Pin GND: debe conectarse a GND (0V)
  • Pin TX: se utiliza para la comunicación entre el módulo GPS y el ESP32; debe conectarse al pin RX de Serial en Arduino Nano ESP32.
  • Pin RX: se utiliza para la comunicación entre el módulo GPS y el ESP32; debe conectarse al pin TX de Serial en Arduino Nano ESP32.
Pinout del módulo GPS NEO-6M

Diagrama de Cableado

Diagrama de cableado del módulo GPS para Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código de Arduino Nano ESP32

Lectura de coordenadas GPS, velocidad (km/h) y fecha y hora

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-gps */ #include <TinyGPS++.h> #define RX1PIN D2 // The Arduino Nano ESP32 pin connected to the TX of the GPS module #define TX1PIN D3 // The Arduino Nano ESP32 pin connected to the RX of the GPS module TinyGPSPlus gps; // The TinyGPS++ object void setup() { Serial.begin(9600); Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN); Serial.println(F("Arduino - GPS module")); } void loop() { if (Serial1.available() > 0) { if (gps.encode(Serial1.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")); }

Pasos R\u00e1pidos

Para empezar con Arduino Nano ESP32, siga estos pasos:

  • Si eres nuevo en Arduino Nano ESP32, consulta el tutorial sobre cómo configurar el entorno para Arduino Nano ESP32 en el IDE de Arduino.
  • Conecta los componentes de acuerdo con el diagrama proporcionado.
  • Conecta la placa Arduino Nano ESP32 y su puerto COM correspondiente.
  • Inicia el IDE de Arduino en tu computadora.
  • Selecciona la placa Arduino Nano ESP32 y su puerto COM correspondiente.
  • Haz clic en el icono Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca “TinyGPSPlus”, luego encuentra la biblioteca TinyGPSPlus de Mikal Hart
  • Haz clic en el botón Instalar para instalar la biblioteca TinyGPSPlus.
Biblioteca TinyGPS++ para Arduino Nano ESP32
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Cargar en el IDE de Arduino para cargar el código al Arduino Nano ESP32
  • Ver el resultado en el Monitor Serie:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Calcular la distancia desde la ubicación actual hasta una ubicación predefinida

El siguiente código calcula la distancia entre la ubicación actual y Londres (lat:51.508131 , long: -0.128002)

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-gps */ #include <TinyGPS++.h> #define RX1PIN D2 // The Arduino Nano ESP32 pin connected to the TX of the GPS module #define TX1PIN D3 // The Arduino Nano ESP32 pin connected to the RX of the GPS module TinyGPSPlus gps; // The TinyGPS++ object const double LONDON_LAT = 51.508131; const double LONDON_LON = -0.128002; void setup() { Serial.begin(9600); Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN); Serial.println(F("Arduino - GPS module")); } void loop() { if (Serial1.available() > 0) { if (gps.encode(Serial1.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")); }

Pasos R\u00e1pidos

  • Copia el código anterior y ábrelo con el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para cargar el código al Arduino Nano ESP32
  • Consulta el resultado en el Monitor Serial:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Tutoriales Relacionados

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!