Explorando el mundo de la navegación GPS con el módulo Neo-6M uBlox
Introducción:
En la era digital de hoy, los sistemas de navegación GPS se han vuelto indispensables en muchas aplicaciones, desde la navegación marina y terrestre hasta el seguimiento de vehículos y drones. En este blog, exploramos cómo puedes integrar y utilizar el módulo GPS Neo-6M uBlox en tus propios proyectos con Arduino.
¿Qué es el Neo-6M uBlox?
El módulo uBlox NEO-6M GPS es un dispositivo portátil de alta calidad que permite a los dispositivos electrónicos, como un Arduino o Raspberry Pi, recibir información de posicionamiento global de satélites. Esta capacidad puede brindar funcionalidad de navegación y seguimiento a tus proyectos.
Aquí algunas características principales del uBlox NEO-6M GPS:
-
Tamaño compacto: El NEO-6M es pequeño y fácil de montar, lo que lo hace perfecto para aplicaciones donde el tamaño y el peso son críticos, como en drones o dispositivos portátiles.
-
Alta sensibilidad: Muestra un rendimiento excepcional incluso en condiciones de poca señal. Puede recibir señales de hasta 22 satélites simultáneamente.
-
Bajo consumo de energía: A pesar de su alta sensibilidad, el NEO-6M es eficiente en términos energéticos, lo que facilita su uso en dispositivos alimentados por batería.
-
Protocolo NMEA y UBX: Soporta los protocolos estándar de comunicación NMEA 0183 y UBX de uBlox, lo que permite una fácil integración con una amplia variedad de dispositivos y software.
-
Precisión de tiempo (1PPS Output): Proporciona señales de pulso por segundo (PPS) que pueden utilizarse para la sincronización temporal.
-
Canales de seguimiento: Hasta 50 canales de seguimiento.
-
Velocidad de actualización: Soporta una velocidad de actualización de hasta 5Hz.
-
Soporte para antena activa y pasiva: El módulo NEO-6M puede trabajar con antenas activas y pasivas.
-
Voltaje de funcionamiento: Funciona con un voltaje de 3.3V a 5V, es amigable con la mayoría de las plataformas de microcontroladores.
Puedes ver la hoja de datos aquí.
Cómo conectar el Neo-6M uBlox a tu Arduino
La conexión entre un módulo GPS como el NEO-6M y un Arduino es bastante directa. Aquí te proporciono una descripción del proceso de conexión estándar:
- Conexión de energía: Conecta el pin VCC del módulo GPS a 3.3V, y conecta el pin GND del módulo al pin GND de tu placa Arduino para completar el circuito de alimentación.
-
Conexión de datos: Luego, tendrás que conectar los pines de transmisión de datos (TX y RX) del módulo GPS a los pines de tu placa Arduino. Como el NEO-6M es un dispositivo serie, necesitarás conectar el pin TX del módulo GPS al pin RX de tu Arduino y el pin RX del módulo GPS al pin TX de tu Arduino.
Este módulo cuenta con un LED azul que comenzará a parpadear cuando el GPS establezca comunicación.
Programando
Una vez que hayas conectado el gps, deberás programar tu Arduino para comunicarse con él.
El código proporcionado establece una conexión serie entre un Arduino y un módulo GPS usando la biblioteca SoftwareSerial
. A través de los pines 4 y 3 del Arduino, el código lee datos del módulo GPS y los envía a la consola serie del IDE de Arduino.
- #include <SoftwareSerial.h>: Incluye la biblioteca SoftwareSerial.
- SoftwareSerial gps(4, 3): Crea una conexión serie con el módulo GPS utilizando los pines 4 (RX) y 3 (TX).
- char dato = ' ': Inicializa una variable para almacenar los datos del GPS.
- Serial.begin(115200): Inicia la comunicación serie en el puerto de la computadora a una tasa de 115200 baudios.
- gps.begin(9600): Inicia la comunicación serie con el módulo GPS a una tasa de 9600 baudios.
- if (gps.available()): Comprueba si hay datos disponibles desde el módulo GPS.
- dato = gps.read(): Lee los datos del módulo GPS.
- Serial.print(dato): Imprime los datos del GPS en la consola serie del IDE de Arduino.
Sube el sketch a tu Arduino y abre el monitor serial a 115200 bauds, si el GPS ya establecio comunicación debes poder ver los datos en formato NMEA.
A continuación tienes la explicación de cada oración:
$GPGGA - Datos de corrección esenciales que proporcionan datos de localización y exactitud en 3D.
Hora UTC, Coordenadas de latitud (grados y minutos), Indicador de latitud: N (Norte) o S (Sur), Coordenadas de longitud (grados y minutos), Indicador de longitud: E (Este) o W (Oeste), (Calidad de la fijación: 0 = inválido, 1 = Fijación GPS (SPS) , 2 = Ajuste DGPS), (Número de satélites utilizados: Rango de 0 a 12), Dilución de precisión horizontal (HDOP), Altitud,Unidad de altitud, Altura del geoide, Unidad de la altura del geoide, (Campo vacío), suma de comprobación( comienza siempre con *).
$GPGSA - GPS DOP y satélites activos. Esta sentencia proporciona detalles sobre la naturaleza de la corrección. Incluye los números de los satélites que se utilizan en la solución actual y el DOP.
(A =Selección automática de fijación 2D o 3D ,M = manual), (fijar 3D - los valores incluyen: 1 = no fijar 2 = fijación 2D 3 = Solución 3D), PRN de los satélites utilizados para la fijación, PDOP (dilución de precisión), Dilución horizontal de precisión (HDOP) , Dilución vertical de precisión (VDOP) , *suma de comprobación.
$GPGSV - Muestra datos sobre los satélites que la unidad podría encontrar en función de su máscara de visualización y datos de almanaque. También muestra la capacidad actual para rastrear estos datos.
Número de frases para los datos completos,numero de oración, Número de satélites a la vista ,Número de satélite PRN , Elevación (grados) , Azimut (grados), SNR, Hasta 4 satélites por oración, *suma de comprobación.
$GPGLL - Indica que esta oración es una "Posición Geográfica - Latitud/Longitud".
Coordenadas de latitud (grados y minutos), Indicador de latitud (Norte o Sur), Coordenadas de longitud (grados y minutos), Indicador de longitud (Este o Oeste), Tiempo UTC de la posición, Estado de los datos (A =datos válidos o V= datos no válidos), Checksum.
$GPRMC - Es probablemente la oración más importante del GPS, ya que incluye la información más crucial - hora, fecha, posición, velocidad y rumbo.
Tiempo UTC,Estado (A =datos válidos o V= datos no válidos), Latitud (grados y minutos), Indicador de latitud (Norte o Sur), Coordenadas de longitud (grados y minutos), Indicador de longitud (Este o Oeste),Velocidad sobre el terreno(Nudos), Rumbo(grados), Fecha (Día/Mes/Año), Variación magnética (grados), Indicador de variación magnética,Modo, Checksum.
$GPVTG - Proporciona datos de "Track made good and Ground speed" (Rumbo y velocidad sobre el terreno). Esta oración comunica la velocidad y el ángulo de desplazamiento del dispositivo.
Rumbo verdadero, (Indicador de rumbo verdadero: Siempre 'T' para verdadero), Rumbo magnético, (Indicador de rumbo magnético: Siempre 'M' para magnético), Velocidad en nudos,Indicador de velocidad,Velocidad en km/h,Indicador de velocidad,Modo, Checksum.
Librería TinyGPS
Después de obtener los datos en formato NMEA puedes usar la biblioteca "TinyGPS" que proporciona funciones para decodificar estos mensajes y extraer información útil de ellos, como las coordenadas GPS, la velocidad, la altitud, la fecha, la hora y más. Para poder usarla desde el IDE de Arduino ve a (Sketch -> Incluir biblioteca -> Administrar bibliotecas... luego busca "TinyGPS") y haz clic en "Instalar".
Crea un nuevo sketch de Arduino y copia el código que esta a continuación:
Este código de Arduino utiliza las bibliotecas SoftwareSerial
y TinyGPS
. Establece una comunicación vía puerto serial con un módulo GPS y lee y decodifica los datos que recibe.
-
#include <SoftwareSerial.h>
y#include <TinyGPS.h>
: Incluye las bibliotecasSoftwareSerial
yTinyGPS
. -
TinyGPS gps
ySoftwareSerial ss(4,3)
: Crea una instancia deTinyGPS
ySoftwareSerial
. En el segundo caso, utiliza los pines 4 y 3 del Arduino para comunicación serial. -
void setup() {...}
: Configura las velocidades de baudios para la comunicación serial. -
void loop() {...}
: En el bucle principal, si hay datos disponibles desde el módulo GPS, los lee, los decodifica y los muestra. Si se obtiene un dato válido, extrae la latitud, longitud, altitud y el tiempo. Después, imprime estos datos en la consola serial.
Sube el sketch a tu Arduino y abre el monitor serial a 115200 bauds para ver los resultados.
Conclusión
La navegación GPS ha impactado significativamente nuestra vida cotidiana y seguirá haciéndolo en el futuro previsible. Con el módulo Neo-6M uBlox y tu Arduino, estás bien equipado para embarcarte en cualquier proyecto que requiera seguimiento GPS. Ya sea para uso personal o para un prototipo de producto, el Neo-6M uBlox es una elección confiable para tus necesidades de navegación.
Productos Relacionados
No comments
comments