jueves, 11 de octubre de 2007

NMEA-0183

O simplemente NMEA es el protocolo de conexión de instrumentos de navegación marítima definido por la asociación estadounidense sin animó de lucro National Marine Electronics Association. Su primera versión se publicó en Marzo de 1983 y su última revisión (v3) a finales del 2001.

Hoy en día es el standard de intercambio de datos utilizado por la mayoría de sistemas de navegación, incluyendo por supuesto los dispositivos GPS.

El standard NMEA define tanto la capa eléctrica, exactamente la EIA-422A considerándose compatible con la RS-232, como el formato de las tramas de datos.

Las tramas de datos NMEA están formadas por una serie de caracteres ASCII, hasta un máximo de 83. Todas ellas comienzan por el carácter "$" seguidos de dos caracteres que identifican el dispositivo, tres caracteres que identifican la sentencia, los datos a transmitir separados por comas ",", un asterisco "*" seguido por dos caracteres de checksum (un simple XOR desde el ID al último dato), y terminan con los caracteres de control CR y LF (CR: Carriage Retun y LF: Line Feed).

$IDSEN,DATO1,DATO2,...,DATOn*CK\r\n

Ejemplo de tramas NMEA:

$GPGLL,4400.000,N,07143.125,W,020822,A*35
$PGRMZ,584,f,3*12
$PGRMM,WGS 84*06
$GPBOD,347.7,T,004.3,M,MOB,R2NHB*23
$GPRTE,1,1,c,0,TYC,R2NHB,MOB*01
$GPWPL,4119.832,N,07205.454,W,TYC*16
$GPRMC,020824,A,4400.00,N,07143.125,W,00.0,038.6,161201,016.6,W*7C $GPRMB,A,9.99,L,R2NHB,MOB,4437.379,N,07300.351,W,066.9,304.5,,V*66$GPGGA,020824,4400.000,N,07143.125,W,1,00,2.0,177.9,M,-32.2,M,,*7F
$GPGSA,A,3,,,,,,,,,,,,,10.1,2.0,3.0*03$GPGSV,1,1,00,,,,,,,,,,,,,,,,*79
$PGRME,15.0,M,22.5,M,15.0,M*1B

Para nuestro propósito sólo necesitamos obtener del dispositivo GPS (ID=GP), los valores de la sentencia MRC (Recommended minimum specific GPS/Transit data), cuyo formato para la v3 de NMEA es el siguiente:

$GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a,m*hh
Field #
01 = UTC time of fix
02 = Data status (A=Valid position, V=navigation receiver warning)
03 = Latitude of fix
04 = N or S of longitude
05 = Longitude of fix
06 = E or W of longitude
07 = Speed over ground in knots
08 = Track made good in degrees True
09 = UTC date of fix
10 = Magnetic variation degrees (Easterly var. subtracts from true course)
11 = E or W of magnetic variation
12 = Mode indicator, (A=Aut., D=Diff., E=Estim., N=Invalid)
13 = Checksum

Las coordenadas geográficas eclípticas, Latitud y Longitud, vienen expresadas en grados y minutos con decimales sexagesimales, junto al hemisferio o lado del ecuador de dirección, por lo que habrá que convertirlas a coordenadas absolutas.

Es decir, en una sentencia como esta:

$GPRMC,154653,V,4428.2011,N,00440.5161,W,000.5,342.8,050407,,,N*7F

Tenemos una latitud de 44 grados con 28.2011 minutos al Norte, y una longitud de 4 grados con 40.5161 minutos al Oeste, que convertidas a valores absolutos serían:

  • Latitud: 44.470018
  • Longitud: -4.675268

Un punto en mitad del mar Cantábrico......

1 comentario:

Unknown dijo...

Estoy con un proyecto de globo sonda. Recibo trama NMEA y no entiendo el paso a valores absolutos que haces. Puedes ayudarme? Muchas gracias por compartir la informacion.