GPS Ublox: NEO-6M módulo GPS con MATLAB por USB
Introducción: Módulo GPS Ublox NEO-6M. En este tutorial se aprenderá a usar el modulo GPS Ublox Neo-6M. La aplicación que se le dará es graficar la posición de nuestras oficinas mediante Matlab.
En la figura 1 se puede observar la tarjeta de control con el circuito NEO-6M y la antena, en la Figura 2 tenemos el convertidor USB-Serial utilizado para comunicar el GPS con la computadora.
Características
A continuación se describen algunas de las características del módulo:
- Modulo GPS Ublox NEO-6M
- Comunicación serial
- Voltaje de alimentación: (3.5 – 5 )VDC
- Antena cerámica activa incluida
- LED indicador de señal
- Tamaño de antena 22x22mm
- Tamaño de modulo 23x30mm
- Batería incluida
- BAUDRATE: 9600
- EEPROM para guadar configuración de parámetros
- Sistema de coordenadas: WGS-84
- Sensibilidad de captura -148dBm
- Sensibilidad de rastreo: -161 dBm
- Máxima altura medible: 18000
- Máxima velocidad 515 m/s
- Exactitud: 1micro segundo
- Frecuencia receptora: L1 (1575.42 Mhz)
- Código C/A 1.023 Mhz
- Tiempo de inicio primera vez: 38s en promedio
- Tiempo de inicio : 35s en promedio
- Temperatura:
El convertidor USB a TTL lo puedes encontrar aqui: https://hetpro-store.com/convertidor-usb-ttl-modulo-para-microcontrolador
Figura 1. Módulo GPS Ublox con antena.

Figura 2. Módulo GPS Ublox con antena.
Diagrama esquemático de la tarjeta de control
A continuación en la figura 3 se muestra el diagrama esquemático de la tarjeta, se puede observar que incluye además del circuito NEO-6M una memoria EEPROM la cual podemos utilizar para guardar cualquier dato que queramos.

Figura 3. Diagrama esquemático del módulo.
Conexiones
Figura 4. Conexión con un microcontrolador.
Figura 5. Conexión con la PCB a través de un convertidor USB a TTL.
Como se puede observar en las imágenes, el módulo se puede conectar con una infinidad de microcontroladores, asi como con diferentes programas en la computadora.
Modo de operación
El GPS NEO-6M es compatible con el protocolo NMEA. El GPS una vez conectado a una interfaz serial mandara cada segundo aproximadamente una serie de comandos siguiendo este protocolo. El usuario debe de diseñar un software capaz de reconocer estos comandos. En el siguiente texto se muestra un ejemplo de los datos producidos por el GPS.
En este caso muestra 9 comandos. Cada comando comienza con el símbolo $ y finaliza con un checksum y salto de línea. Cabe señalar que el GPS únicamente proporcionara datos validos si el led verde se encuentra encendiendo a lapsos de 1 segundos aproximadamente. En caso de que el led no esté encendiendo se puede deber a que el GPS no encuentra satélites o que el sistema se encuentra operando dentro de un espacio cerrado. Recuerde que las paredes y edificios grandes obstruyen la señal proveniente de los satélites.
Ejemplos de la información obtenida de los 9 comandos NMEA.
Dónde:
- GGA = Global Positioning System Fix Data
- 123519 = Muestra tomada a 12:35:19 UTC
- 4807.038 = Norte Latitud 48 grados 07.038′ N
- 01131.000 = Este Longitud 11 grados 31.000′ E
- 1 = Fix quality:
- 0 = invalid
- 1 = GPS fix (SPS)
- 2 = DGPS fix
- 3 = PPS fix
- 4 = Real Time Kinematic
- 5 = Float RTK
- 6 = estimado (dead reckoning) (2.3 feature)
- 7 = modo entrada manual
- 8 = modo simulación
- 08 = Numero de satelites siendo rastreados
- 0.9 = Dilución horizontal de la posición
- 545.4,M = Altitud, metros, sobre el nivel del mar
- 46.9,M = altura del geoid (promedio nivel del mar) sobre WGS84
- (empty field) = time tiempo desde la última muestra
- (empty field) = estacion DGPS numero ID
- *47 = datos del checksum, siempre comienza con *
En este comando las características deseables son la latitud y longitud que se obtienen de la cadena $GPGGA.
Aplicación utilizando Matlab
El siguiente código muestra la aplicación del GPS utilizando matlab. El código es muy simple, solo se tienen que configurar en que puerto se tiene conectado al GPS mediante un convertidor USB-TTL.
Simplemente se tiene que esperar a que el GPS comience a encender y apagar su led verde para poder leer la latitud, longitud y altura sobre el nivel del mar. El programa busca inicialmente el símbolo $ para después capturar 5 caracteres, si los caracteres corresponden a GPGGA comienza a leer la latitud, longitud y altura, en caso de no detectar a ese comando NMEA vuelve a comenzar a buscar el símbolo $.
Para buscar la localización geográfica de acuerdo a esos puntos se podría utilizar la siguiente página de internet.
Simplemente bastaría convertir las dos medidas a unidades centesimales.
Ejemplo, datos obtenidos de MatLab para nuestro caso son:
LATITUD_NORTE = 2065.2766,N
LONGITUD_OESTE = 10332.5399,W
ALTURA = 1590.4,M

Codigo matlab
Esta aplicación únicamente utiliza el comando GPGGA y descarta la demás información.
El Módulo GPS a utilizar lo puedes encontrar aqui: https://hetpro-store.com/gps-neo-6m-ublox-con-antena-tx-rx/
Estoy usando VENUS GPS con arduindo y la misma se muestran en size = 0 , MATLAB es en buzy lo largo del tiempo , tiene algunas modificaciones debo hacer en el código de MATLAB para usar este GPS con el Arduino .
No eh tendió la oportunidad de usar esa tarjeta, sin embargo, me parece que si tendrías que modificar algo el código de tu Arduino, la idea es mandar una cadena como la de NMEA mediante el serial para poder visualizar la información. Checa primero que nada en la terminal de Arduino serial que tu cadena sea igual o parecida a la del ejemplo.
buenas noches, estoy buscando informacion y me interesa este modulo GPS, solo una gran y a lo mejor boba pregunta pero soy algo nuevo en esto:
el gps manda informacion serial a un microcontrolador o a una pc. Si lo conecto por ejemplo a algo como un automovil, motocicleta, bicicleta, etc, como veo la trama de informacion que me manda el GPS? Tendria que agregar al GPS un microcontrolar para que capte los datos de este, y añadirle un GSM para que me mande la informacion via SMS o 3G para tomar los datos en web y desde cualquier dispositivo movil con internet tomarlos?
o con el simple hecho de estar conectado el modulo GPS, desde web tomando su IMEI puedo rastrear la posicion de GPS?
Lo que dijiste primero es correcto, lo segundo no se puede con este módulo. GPS y GSM a microcontrolador para generar la red de datos.
Hola muy buen día ¿Alguien tiene idea de cómo obtener más cifras significativas en los datos de latitud y longitud?, sucede que lo implementé en Arduino utilizando la librería TinyGPSPlus y solo obtuve de tres a cuatro cifras significativas (2 cifras a la izquierda del primer punto decimal y 2 a la derecha después del punto) por ejemplo, Lat: 19.32, Long: -99.38. Lo que quiero es poder tener después del punto más cifras, unas 6 ó 8, ya que con los datos que recibo con la librería no he logrado que el sistema note el cambio de posición en distancias pequeñas o menores a un metro. De antemano muchas gracias.
Carlos, no te va a dar distancias menores a un metro el NEO-6m tiene un precisión de 2.5 metros. https://www.u-blox.com/sites/default/files/products/documents/NEO-6_ProductSummary_%28GPS.G6-HW-09003%29.pdf
Carlos, yo lo que hice fue en vez de tomar cada 1 segundos. tomar cada 2 segundos.
Porque si tomas cada 1 segundo tenes valores muy cercanos y siempre te va a dar 0.
Muchas gracias Fernando.
Gracias Hector Torres, en este caso ¿Qué recomendarías?. ¿Aun así puedo obtener los datos con más cifras significativas? Muchas gracias.
Carlos, si por algo es necesario, te recomiendo comprar un GPS con mayor precisión, también hay formas y algoritmos para estimar mejor la posición pero yo creo que casi todas las aplicaciones las puedes lograr con 2 metros si no, se usa una ayuda extra para eso como sensores o cámaras.
Muchas gracias por su atención Hector Torres.
Amigo, perdona la pregunta pero como has convertido los valores que entrega al GPs a unidades centesimales?
Saben si puedo usar con este GPS el microcontrolador MSP430 de Texas Instruments? Mi intención es establecer comunicacióan via SMS y que el micro cierre un circuito y mande su ubicación.
Claro que si se puede, el MSP430 tiene comunicación serial por lo que es compatible con el GPS. Saludos.
Alguien sabe el por que el modulo se demora tanto en conectarse (encender el led de conexión)
Poca recepción de señal, menos de un minuto es normal.
yo lo estoy usando con arduino a un asi el modulo GPS no se enciende alguien me podria ayudar a ver una manera facil de saber si esta arruinado
Conecte el gps a la rasberry y no me enciende el led de señal? Alguien me puede orientar?
Hola, tengo conectado a una Raspberry Pi2+ el modulo y no toma satelite, muy esporadicamente lo logra y por periodos cortos. Alguien sabe el motivo??? Agote todas las cosas posibles….
Gracias.
Daniel. 1) Aveces el cable de la antena (pegado al cuadro) se rompe de la parte de la malla del recubrimiento en donde pasa GND. 2) Aveces si estas dentro de la casa la señal no llega de manera correcta, puedes probar sacando la antena o el módulo.
hola buenas noches quisiera saber la velocidad neo 6m u blox
Hola, que tipo de velocidad?, de transferencia serial, es decir BAUDS? o de actualización de la posición como en si se pudiera usar en un vehículo en movimiento? . Si es el primer caso, 57600 BAUDS. En el caso del segundo caso: Tiene una precisión en velocidad de 0.1m/s, esta información la obtuve de su hoja de datos: https://www.u-blox.com/sites/default/files/products/documents/NEO-6_DataSheet_%28GPS.G6-HW-09005%29.pdf
Buenas tardes,
Me gustaría saber una buena aplicación práctica en comparación con el uso GPS convencional del teléfono móvil.
Muchas gracias,
me gustaría ponerme en contacto con usted, podría darme algún correo electrónico por favor o un numero de WhatsApp estaré agradecido