¿Qué es este blog?

La idea de este blog nace para compartir los avances que se vayan realizando a lo largo de un estudio sobre cómo interconectar los distintos sensores que se pueden encontrar en el mercado, o fabricar de forma casera, con la plataforma Mindstorms de LEGO. Para ello se hará uso ARDUINO, un entorno de desarrollo abierto basado en microcontrolador.
Mostrando entradas con la etiqueta NMEA-183. Mostrar todas las entradas
Mostrando entradas con la etiqueta NMEA-183. Mostrar todas las entradas

domingo, 12 de junio de 2011

Sentencias NMEA

Para poder entender el funcionamiento del receptor GPS que explicará a continuación, explicaremos primero en qué consisten las sentencias NMEA y cuáles son sus principales campos.

Las siglas NMEA son las siglas en inglés de la Asociación de Marina y Electrónica Nacional, es decir, la “National Marine Electronic Asociation). Esta asociación americana, fue la primera en establecer un protocolo normalizado de comunicación entre equipos y dispositivos de navegación. A modo de reseña histórica, comentar que el primer protocolo en aparecer fue el NMEA 180 simple, que permitía a los barcos transmitir datos a un piloto automático del grado de desviación a babor o a estribor con respecto a una trayectoria predeterminada. Más tarde, aparecieron los protocolos NMEA 180 complejo y el NMEA 182, que mejoraban al primero incluyendo datos de geolocalización.
El protocolo más usado actualmente, y el que usa nuestro GPS Venus, es el NMEA-183 cuyas principales secuencias se describen a continuación.

GGA - Global Positioning System Fix Data


Este tipo de mensajes incluye información sobre el tiempo, la posición, y otros datos relativos al posicionamiento de un receptor GPS.
La estructura de estos mensajes es la siguiente:

$GPGGA,hhmmss.sss,ddmm.mmmm,a,dddmm.mmmm,b,x,yy,z.z,x.x,M,,,,xxxx*hh

Veamos a continuación lo que significa cada campo:

  • hhmmss.sss: Tiempo en formato UTC (Universal Coordinate Time).
  • ddmm.mmmm: Latitud. Se rellena con ceros por la izquierda.
  • a: Indica el hemisferio de la latitud (N o S según sea latitud Norte o Sur).
  • ddmm.mmmm: Longitud. Se rellena con ceros por la izquierda.
  • b: Indica el hemisferio de la longitud (E o W según la longitud sea Este u Oeste)
  • x: Indica la calidad del GPS
    • 0: no se ha podido obtener la posición
    • 1: posición GPS válida. Modo SPS.
    • 2: posición GPS váida. Modo GPS diferencial
    • 3: posición GPS válida. Modo PPS.
    • 4: Modo “Real Time Kinematic”.
    • 5: Modo “Floating RTK”.
    • 6: Modo de estimación
    • 7: Modo de entrada de datos manual
    • 8: Modo simulación
  • yy: Número de satélites usados
  • z.z: Parámetro HOPD. Nos da la precisión horizontal
  • x.x: Altitud con respecto al nivel del mar
  • Finalmente, nos ofrece otros parámetros como el identificador de la estación GPS de referencia y un checksum para comprobar la correcta recepción de los datos.
GLL – Latitude / Longitude
Estos mensajes transmiten información sobre la latitud y la longitud de la posición actual, así como sobre el tiempo y el estado de la conexión. La estructura es la siguiente:

$GPGLL,ddmm.mmmm,a,dddmm.mmmm,b,hhmmss.sss,A,a*hh

Y veamos lo que significa cada campo:
  • ddmm.mmmm: Latitud. Se rellena con ceros por la izquierda
  • a: Indica el hemisferio (N si es el hemisferio Norte, y S si es el Sur)
  • dddmm.mmmm: Longitud. Se rellena con ceros por la izquierda
  • b: Indica el hemisferio Este (E) u Oeste (W)
  • hhmmss.sss: Tiempo en formato UTC
  • A: Estado. Si muestra una ‘A’, los datós son válidos y si muestra una ‘V’ son inválidos.
  • a: Indicador del modo. Puede contener:
    • N: Datos no válidos
    • A: Modo autónomo
    • D: Modo diferencial
    • E: Modo estimado
    • M: Entrada de datos de forma manual
    • S: Modo simulación
  • Finalmente se incluye información de checksum
GSA – GNSS DOP and Active Satellites

Indica el modo de operación del receptor GPS, los satélites usados para la navegación proporcionados por las sentencias GGA o GNS y los valores DOP. La estructura es la siguiente:

$GPGSA,A,a,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,x.x,x.x,x.x*hh
Y la correspondencia de cada campo:


  • A: Si contiene una ‘M’ estamos en modo manual, forzando el funcionamiento en 2D o en 3D, mientras que si contiene una ‘A’, se está en el modo automático, con selección 2D/3D automática
  • a: Si contiene un ‘1’ es que no ha sido posible obtener información sobre si se encuentra en modo 2D o 3D. El ‘2’ representa el modo 2D, mientras que el ‘3’ representa el modo 3D. 
  • Los siguientes datos corresponden a los identificadores de los satélites (puede haber 12 satélites con identificadores comprendidos entre 01 y 32), seguidos de la precisión de posición, de la precisión horizontal y de la precisión vertical
  • El último campo corresponde al checksum

GSV – GNSS Satellites in View
Estas sentencias nos proporcionan información sobre el número de satélites que el GPS está “viendo” en ese momento, con sus respectivos identificadores, ángulos de azimuth, elevación y relación señal a ruido. Habrá un máximo de 4 satélites por sentencia. Su estructura es la siguiente:

$GPGSV,N,s,yy,xx,xx,xxx,xx,…,xx,xx,xxx,xx *hh


Estos campos corresponden a:

  • N: Indica cuántas sentencias de este tipo se van a transmitir (tomará por tanto valores de entre 1 y 3).
  • s: Número de secuencia
  • yy: Número de satélites que se están viendo en ese momento
  • Los datos siguientes son:
    • Los identificadores de cada uno de los satélites
    • Su elevación
    • Su azimuth
    • Su relación señal a ruido, que valdrá cero si no se está logrando una correcta conexión.
    • Checksum
RMC – Recommended Minimum Specific GNSS Data
Nos proporcionan información sobre la hora, la fecha, el rumbo y la velocidad proporcionados por el receptor GNSS. Su estructura es la siguiente:

$GPRMC,hhmmss.sss,A,dddmm.mmmm,a,dddmm.mmmm,a,x.x,y.y,ddmmyy,,,a*hh

Veamos la explicación de los campos:
  • hhmmss.sss: Hora en formato UTC
  • A: Estado. Si contiene una ‘A’ es que los datos son válidos, mientras que si contiene una ‘V’ es que se está produciendo algún problema
  • dddmm.mmmm: Son los datos de la latitud. Se rellena con ceros pos la izquierda.
  • a: Indicador de Norte (N) o Sur (S)
  • dddmm.mmmm: Datos de la longitud. Se rellena con ceros por la izquierda.
  • a: Indicador de Este (E) u Oeste (W)
  • x.x: Velocidad en nudos con respecto al suelo
  • y.y: Rumbo en grados con respecto a la horizontal
  • ddmmyy: Se transmite una actualización de la fecha en formato UTC
  • a: Indicador del modo. Puede contener:
    • N: Datos no válidos
    • A: Modo autónomo
    • D: Modo diferencial
    • E: Modo de estimación
    • M: Modo de entrada de datos maual
    • S: Modo de simulación
  • Finalmente se transmiere la información de checksum
VTG – Course Over Ground and Ground Speed
Estas sentencias proporcionan información del rumbo y la velocidad con respecto al suelo. Su estructura es la siguiente:

GPVTG,x.x,T,,M,x.x,N,x.x,K,a*hh


Y veamos cada campo:
  • x.x: Rumbo en grados
  • T: Velocidad sobre el suelo en nudos
  • M: Velocidad sobre el sueño en kilómetros por hora
  • A: Indicador de modo. Puede contener:
    • N: Datos no válidos
    • A: Modo autónomo
    • D: Modo diferencial
    • E: Modo de estimación
    • M: Modo de entrada de datos manual
    • S: Modo de simulación
  • Finalmente se transfiere información de checksum.