En el siguiente tutorial aprenderás a obtener lecturas del módulo GPS NEO6MV2 utilizando un Arduino Uno visualizando los datos desde el monitor serie del Arduino IDE.
IntroducciónEl módulo NEO6MV2 es un receptor GPS (Global Positioning System) compacto y de alta precisión, diseñado para aplicaciones que requieren posicionamiento satelital.
Es ampliamente utilizado en proyectos de electrónica y robótica debido a su confiabilidad y facilidad de integración con microcontroladores como Arduino. Este módulo es capaz de recibir señales de múltiples satélites y proporcionar datos precisos de ubicación, tiempo y velocidad.
Materiales
Diagrama de conexiones
Para utilizar el GPS NEO6MV2 con la placa de desarrollo Arduino Uno sólo realizar las conexiones que se muestran en la siguiente imagen:
ARDUINO UNO GPS
3.3V — Vcc
GND–GND
Pin 4 –Tx
Pin 3 — Rx
Código
El programa recibe y procesa datos desde el NEO6MV2 , se requerirán las librerías:
Inicializa la comunicación serie para la transmisión de datos del NEO6MV2 a través de los pines 4 y 3 del Arduino.
En el bucle principal, el código lee los datos entrantes del NEO6MV2 , los decodifica y extrae información como latitud, longitud, fecha, hora, altitud, rumbo, velocidad y número de satélites visibles. Esta información se imprime en el monitor serie, permitiendo visualizar en tiempo real la posición y otros datos relevantes obtenidos del GPS.
#include <SoftwareSerial.h>//incluimos SoftwareSerial #include <TinyGPS.h>//incluimos TinyGPS TinyGPS gps;//Declaramos el objeto gps SoftwareSerial serialgps(4,3);//Declaramos el pin 4 Tx y 3 Rx //Declaramos la variables para la obtención de datos int year; byte month, day, hour, minute, second, hundredths; unsigned long chars; unsigned short sentences, failed_checksum; void setup() { Serial.begin(115200);//Iniciamos el puerto serie serialgps.begin(9600);//Iniciamos el puerto serie del gps //Imprimimos: Serial.println(""); Serial.println("GPS GY-GPS6MV2 Leantec"); Serial.println(" ---Buscando senal--- "); Serial.println(""); } void loop() { while(serialgps.available()) { int c = serialgps.read(); if(gps.encode(c)) { float latitude, longitude; gps.f_get_position(&latitude, &longitude); Serial.print("Latitud/Longitud: "); Serial.print(latitude,5); Serial.print(", "); Serial.println(longitude,5); gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths); Serial.print("Fecha: "); Serial.print(day, DEC); Serial.print("/"); Serial.print(month, DEC); Serial.print("/"); Serial.print(year); Serial.print(" Hora: "); Serial.print(hour, DEC); Serial.print(":"); Serial.print(minute, DEC); Serial.print(":"); Serial.print(second, DEC); Serial.print("."); Serial.println(hundredths, DEC); Serial.print("Altitud (metros): "); Serial.println(gps.f_altitude()); Serial.print("Rumbo (grados): "); Serial.println(gps.f_course()); Serial.print("Velocidad(kmph): "); Serial.println(gps.f_speed_kmph()); Serial.print("Satelites: "); Serial.println(gps.satellites()); Serial.println(); gps.stats(&chars, &sentences, &failed_checksum); } } }
El código solo lee constantemente el módulo GPS NEO6MV2 a una velocidad de 9600 baudios que es la velocidad por la que viene configurado por defecto.
Al abrir el monitor serial, cambia la configuración de velocidad baudios a 115200 baudios, así podremos ver la lectura de los datos que recibidos por el módulo. El resultado que tendrás será el siguiente:
Conclusión
Se demuestra el uso del NEO6WV2 para realizar envió y recepción de datos, que fueron la ubicación (longitud y latitud), fecha, hora, altitud, velocidad y la cantidad de satélites visibles.
Esta experiencia ayuda en la comprensión de los sistemas de navegación por satélite, sino que también proporciona habilidades útiles para proyectos avanzados de geolocalización y seguimiento.