NMEA 0183
# NMEA 0183

NMEA 0183 es una combinación de especificación eléctrica y de datos para comunicación entre equipos electrónicos marítimos, tales como: profundímetro, anemómetro, corredera, girocompás, piloto automático, GPS y muchos otros tipos de instrumentos. Ha sido definido, y está controlado, por la organización estadounidense National Marine Electronics Association. Reemplaza las normas anteriores NMEA 0180 y NMEA 0182. Las aplicaciones marinas de recreo está siendo paulatinamente sustituido por el más nuevo NMEA 2000, aunque NMEA 0183 sigue siendo la norma más utilizada en navegación comercial.

La norma eléctrica utilizada es RS-422, aunque muchos dispositivos que tienen salidas NMEA-0183; también pueden activar una sola entrada RS-232. Aunque la norma requiere de entradas y salidas aisladas, hay bastantes dispositivos que no cumplen esta normativa.

La norma NMEA 0183, utiliza un protocolo de Comunicación serie simple en código ASCII que se define como: "Los datos son transmitidos en una sentencia desde un emisor simultáneamente a varios receptores." Mediante el uso buffers intermedios, un emisor puede comunicarse unidireccionalmente con un número casi ilimitado de receptores. Si tenemos múltiples sensores, podemos usar uno o varios multiplexores, para poder comunicar todo a un solo receptor.

En el nivel de aplicación; la norma también define el contenido de cada tipo de sentencia (mensaje) de forma que todos los receptores puedan analizar los mensajes correctamente.

Aunque NMEA 0183 solo define un protocolo de transporte sobre RS-422, hay una norma de facto, en el cual las sentencias NMEA 0183 se insertan en un UDP (una sentencia por paquete) y se envían por una red IP.

La norma NMEA 0183 es propiedad intelectual registrada y se vende por 2000$ US (excepto para miembros de la NMEA) a julio de 2021. sin embargo, obtenidas mediante ingeniería inversa las sentencias son de dominio público.

## Configuración serie (nivel de enlace de datos)

| Tasa de baudios típica | 4800 |
| - | - |
| Bits de datos | 8 |
| Paridad | Ninguna |
| Bits de parada | 1 |
| Establecimiento de comunicación | Ninguna |

Hay una variante de la norma llamada NMEA-0183HS que especifica una velocidad de transmisión de 38,000 baudios. Generalmente se usa para dispositivos de Sistema de Identificación Automática.

## Estructura de las sentencias

* Todo los datos transmitidos son caracteres imprimibles ASCII entre 0x20 (espacio) a 0x7e (~)
* Los caracteres de datos son todos los anteriores además de los caracteres reservados(Ver siguiente línea )
* Los caracteres reservados se utilizan por NMEA0183 para los siguientes usos:

| ASCII | Hex | Dec | Uso |
| - | - | - | - |
| <CR> | 0x0d | 13 | Retorno de carro |
| <LF> | 0x0un | 10 | Salto de línea, final de sentencia |
| ! | 0x21 | 33 | Inicio de delimitador de encapsulación de sentencia |
| $ | 0x24 | 36 | Delimitador de inicio |
| * | 0x2un | 42 | Delimitador de Suma de verificación |
| , | 0x2c | 44 | Delimitador de campo |
| \ | 0x5c | 92 | Delimitador de bloque de ETIQUETA |
| ^ | 0x5e | 94 | Delimitador de código para representación HEX de caracteres ISO/IEC 8859-1 (ASCII) |
| ~ | 0x7e | 126 | Reservado |

* Las sentencias tienen una longitud máxima de 82 caracteres, incluyendo el $ o ! del principio y el <LF> final.
* El carácter de inicio para cada sentencia puede ser un $ (Para sentencias con campos convencionales) o (Para sentencias que tiene encapsulación especial en ellos)
* Los siguientes cinco caracteres identifican el emisor (dos caracteres) y el tipo de sentencia (tres caracteres).
* Todos los siguientes campos de datos están separados por comas.
* Cuando el dato no esta disponible, el campo correspondiente permanece en blanco (no contiene ningún carácter antes del siguiente delimitador(coma) – ver sección de archivo de muestra abajo).
* El primer carácter que inmediatamente sigue al último campo de datos es un asterisco seguido de una Suma de verificación.
* El asterisco es inmediatamente seguido por unaSuma de verificación representada como un número hexadecimal de dos dígitos. La Suma de verificaciónes el OR exclusivo bit a bit los todos los caracteres ASCII entre el $ y *, no inclusivos. Según la especificación oficial, la Suma de verificación es opcional para la mayoría de las sentencias, pero es obligatorio para los tipos de sentencia RMA, RMB y RMC (entre otras).
* <CR><LF> finaliza la sentencia.

Como ejemplo, una alarma de waypoint de llegada tiene la forma:

    $GPAAM,Un,Un,0.10,N,WPTNME32

Otro ejemplo de sentencia AIS es:

    !AIVDM,1,1,,Un,14eG;o@034o8sd<L9i:un;WF>062D,07D

## Extensiones de vendedor

La mayoría de fabricantes de GPS incluyen sentencias adicionales al conjunto de la norma NMEA en sus productos, para mantenimiento y propósito de diagnóstico. Estas sentencias extendidas empiezan con "$P". Estas sentencias extendidas no están estandarizadas.

## Compatibilidad de software

NMEA 0183 esta soportado por varios programas de navegación y mapeo. Las aplicaciones más notables incluyen:

* DeLorme Atlas de calles
* ESRI
* Google Earth
* Mapas de Google Edición Móvil
* gpsd - Daemon GPS de Unix
* JOSM - OpenStreetMap Editor de mapas
* MapKing
* Microsoft MapPoint
* NetStumbler
* OpenCPN - Software de navegación del código abierto

## Archivo de muestra

Un archivo de muestra producido por un registrador Tripmate 850 GPS logger. Este archivo fue creado en Leixlip, Condado Kildare, Irlanda. El registro dura dos segundos.

Nótese algunos campos vacíos, por ejemplo:

* GSV Registra, que satélites están 'visibles', carece del SNR (relación señal/ruido) el campo para el satélite 16 y todos los datos para el satélite 36.
* GSA Registra, la lista de los satélites utilizados para fijar una posición) y da un error de posición, contiene12 campos para número de satélites', pero sólo 8 satélites fueron tenidos en cuenta—así que 4 campos quedan vacíos.

## Estado

NMEA 0183 continua a ser mantenido por separado: la versión V4.10 fue publicado a principios de mayo de 2012, y un erratum publicado el 12 de mayo de 2012. No esta claro si hay algún desarrollo activo. El anuncio más reciente de NMEA sobre el tema es más antiguo que la norma . V4.10 Hay una actualización del 27 de noviembre de 2018 a 4.11.

