ESP8266 - GPS

Este tutorial le enseña cómo usar ESP8266 con un módulo GPS NEO-6M. En detalle, aprenderemos:

Además de la longitud, la latitud y la altitud, el ESP8266 también puede leer la velocidad GPS (km/h) y la fecha y la hora de un módulo GPS NEO-6M.

Hardware Requerido

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
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×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266

Or you can buy the following kits:

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

El módulo GPS NEO-6M es un módulo GPS que puede proporcionar la siguiente información:

  • Longitud
  • Latitud
  • Altitud
  • Velocidad GPS (km/h)
  • Fecha y hora

Pinout del módulo GPS NEO-6M

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

  • Pin VCC: Este pin debe conectarse a VCC (5V)
  • Pin GND: Este pin debe conectarse a GND (0V)
  • Pin TX: Este pin es para la comunicación serial y debe conectarse al pin RX del Serial (o SoftwareSerial) en ESP8266.
  • Pin RX: Este pin es para la comunicación serial y debe conectarse al pin TX del Serial (o SoftwareSerial) en ESP8266.
Diagrama de pines del módulo GPS NEO-6M

Diagrama de Cableado

Diagrama de cableado del módulo GPS ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

Código ESP8266

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

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-gps */ #include <TinyGPS++.h> #include <SoftwareSerial.h> const int RX_PIN = 3, TX_PIN = 4; 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("ESP8266 - 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")); }

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Conecta los componentes como se muestran en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
  • Inicia Arduino IDE.
  • Haz clic en el icono de Librerías 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 ESP8266 NodeMCU TinyGPS++
  • Copie el código proporcionado y ábralo en el IDE de Arduino.
  • Haga clic en el botón Subir en el IDE de Arduino para enviar el código al ESP8266.
  • Consulte el resultado en el Monitor serie.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Calculando la distancia entre la ubicación actual y una ubicación predefinida

Este código calcula la distancia entre la ubicación actual y Londres (latitud: 51.508131, longitud: -0.128002).

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-gps */ #include <TinyGPS++.h> #include <SoftwareSerial.h> const int RX_PIN = 3, TX_PIN = 4; 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("ESP8266 - 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")); }

Pasos R\u00e1pidos

  • Cablea los componentes como se muestra en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre el IDE de Arduino en tu computadora.
  • Elige la placa ESP8266 correcta, como (p. ej., NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
  • Copia el código y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Upload en el IDE de Arduino para enviar el código a la ESP8266.
  • Verifica el resultado en el Monitor Serial.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

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!