Pages Menu
TwitterFacebook



BANNER2_ALT

Posted by on Ago 11, 2014 in E. Otros, Otros | 17 comments

GPS Ublox: NEO-6M módulo GPS con MATLAB por USB

GPS Ublox: NEO-6M módulo GPS con MATLAB por USB

Introducción: Módulo GPS Ublox NEO-6M

 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.

El Módulo GPS a utilizar lo puedes encontrar aqui: http://hetpro-store.com/tarjetas-es/comunicacion/gps-neo-6m-ublox-con-antena-tx-rx.html

El convertidor USB a TTL lo puedes encontrar aqui: http://hetpro-store.com/arduino/shield-comunicacion/convertidor-usb-ttl-modulo-para-microcontrolador.html
gps ublox

Figura 1. Módulo GPS Ublox con antena.

GPS Ublox

GPS Ublox NEO 6.

Figura 2. Módulo GPS Ublox con antena.

A continuación se describen algunas de las características del módulo:

Características

  • 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:

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.

GPS Ublox

Diagrama esquemático.

Figura 3. Diagrama esquemático del módulo.

Conexiones

GPS Ublox

Figura 4. Conexión con un microcontrolador.

GPS Ublox

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.

$GPRMC,204950.00,V,,,,,,,070713,,,N*75
$GPVTG,,,,,,,,,N*30
$GPGGA,204950.00,,,,,0,00,99.99,,,,,,*6C
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,4,1,13,01,31,062,,04,16,191,28,07,46,129,,08,73,079,*74
$GPGSV,4,2,13,09,77,000,,10,00,197,,11,17,046,,13,01,164,*7E
$GPGSV,4,3,13,15,03,313,,17,66,273,,20,01,115,,26,34,281,*74
$GPGSV,4,4,13,28,45,002,*42
$GPGLL,,,,,204950.00,V,N*40

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.

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47

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.

serialPort = 'COM27';

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.

http://www.maps.pixelis.es

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

GPS Ublox

Datos del GPS introducidos en Googlemaps.

Codigo matlab

 

clc
clear all
serialPort = 'COM27';
serialObject = serial(serialPort);
set(serialObject, 'BaudRate',9600);

fopen(serialObject);
pause(1);
size=serialObject.BytesAvailable
condicion =1;
while condicion == 1
A = fscanf(serialObject, '%c', 1);
if A=='$'
	NMEA =fscanf(serialObject, '%c', 5)
if NMEA == 'GPGGA'      
	TEMP = fscanf(serialObject, '%c', 11);
	LATITUD_NORTE=fscanf(serialObject, '%c', 12)
	TEMP = fscanf(serialObject, '%c', 1);
	LONGITUD_OESTE=fscanf(serialObject, '%c', 13)
	TEMP = fscanf(serialObject, '%c', 11);
	ALTURA=fscanf(serialObject, '%c', 8)
	condicion=0;
end
end

if(A<1)
	A = 1;
end
end
%fprintf(serialObject, '%c','v');
fclose(serialObject);
delete(serialObject);
clear s;

Esta aplicación únicamente utiliza el comando GPGGA y descarta la demás información.

17 Comments

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. Amigo, perdona la pregunta pero como has convertido los valores que entrega al GPs a unidades centesimales?

  6. 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.

  7. 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.

  8. 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

Post a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *