Padrão de formato de dados NMEA

A National Marine Electronics Association (NMEA) se auto-intitula a força unificadora por trás da indústria de eletrônica marinha, buscando aglutinar diversos aspectos ligados ao setor. O padrão NMEA 0183 foi desenvolvido visando a conecção de dispositivos eletrônicos marinhos. Ele é um padrão de uso voluntário por parte da indústria. A sua primeira versão foi liberada em março de 1983. O padrão NMEA 0183 define, dentre outros, características elétricas do sinal, protocolo da transmissão de dados, sincronismo e formatos específicos de sentenças de transmissão. Este padrão tem sido constantemente atualizado, e a sua última versão, 3.01, data de janeiro de 2002.

Todas as sentenças de NMEA consistem em até 82 caracteres em ASCII. Cada sentença começa com o símbolo $ e termina com um carriage return e o consequente começo de nova linha. Todos os campos de dados são delimitados por vírgulas (,) e têm comprimento variável. Os campos nulos também são delimitados por vírgulas (,) mas não contêm nenhuma informação. O primeiro campo de dados é um campo de endereço, ao passo que o último campo de dados é um controle de soma (checksum).

O último campo de dados de uma mensagem NMEA 0183 termina com um asterisco (*) delimitador e um valor de controle de soma (checksum). Este último é exclusivo de 8-bit ou de todos os caracteres na mensagem, incluindo as vírgulas entre os campos, mas sem incluir o $ e os delimitadores com asterisco *. O resultado, hexadecimal, é convertido a dois caracteres ASCII (0-9, A-F). O caracter mais significativo aparece primeiro.

Existem três tipos de campos de endereço: aprovado, de busca, e proprietário.
Endereços aprovados têm a estrutura $TTFFF, onde:
TT = identificador de transmissão
FFF = formatador da sentença
Exemplo: $GPGGA
Endereços de busca têm a estrutura $TTttQ, onde
tt = identificador de recepção
Q = Identificador de pergunta
Exemplo: $
O endereço proprietário têm a estrutura $PMMMFFF, onde
MMM = código do fabricante
Exemplos: $PTNLGGK, $PASHxxx

Abaixo, incluímos alguns exemplos de formatos aprovados da sentença NMEA.
ALM = dados do almanaque GPS
DTM = datum de referência
GBS = detecção de falha de algum satélite GNSS
GGA = solução de posição determinada por GPS
GNS = solução de posição determinada por sistemas de posicionamento por satélites
GRS = resíduos em distância de observações oriundas de sistemas de posicionamento por satélites.
GSA = DOP e satélites ativos
GST = estatística de erro das observações de pseudo-distância
GSV = satélites "visíveis"
HDG = orientação, declinação e variação da declinação.
HDT = orientação, verdadeira Heading, true
VTG = rumo percorrido
XDR = medições oriundas de transdutores
ZDA = tempo e data

Códigos de alguns dos fabricantes de equipamentos que adotam o formato NMEA são: ASH (Ashtech), Cmp (C-Map), CSI (Communications Systems Intl), DAS (Dassault Sercel), DNT (Del Norte), FEC (Furuno Electric Corp), GRM (Garmin Corp), HPK (Hewlett Packard), e HWM (Honeywell Marine).

Uma das sentenças do padrão NMEA 0183 mais utilizadas é a sentença GGA, que tem o seguinte formato:

Uma discussão interessante diz respeito à precisão que pode ser fornecida pela sentença GGA. Nela, os símbolos "ss", "ll", "yy" indicam campos decimais de comprimento variável para permitir maior ou menor precisão na apresentação dos dados. O formato "x.x" da altura permite um número não-especificado de dígitos à esquerda e à direita do ponto decimal e um sinal. Zeros podem ser incluídos. Assim, podemos ter "+nnnnn.n", por exemplo, para permitir uma altura acima do nível médio do mar (altitude ortométrica) de até +99999.9 metros. Quatro dígitos à esquerda do ponto decimal mais o sinal podem ser permitidos para a altura geoidal (altura do geoide acima do elipsoide), embora valores absolutos máximos das alturas geoidais com respeito ao elipsoide do WGS 84 sejam de apenas um pouco mais de cem metros.

Com 2 casas decimais para os segundos de tempo UTC, e 2 casas decimais para os minutos de arco de latitude e longitude e dos 8 caracteres para a altitude ortométrica e 7 caracteres para a altura geoidal, 4 caracteres (nn.n) para o HDOP e a idade dos dados diferenciais, e nenhuma omissão de nenhum outro parâmetro, o comprimento total da sentença GGA é 83 caracteres, valor este acima do limite de 82 caracteres para as sentenças. Contudo, 0.01 minuto de latitude e de longitude corresponde a aproximadamente 18,5 m e 13,1 metros para uma latitude de 45 graus. Para representar uma posição com precisão ao nível do centímetro, seria necessário que a latitude e a longitude fossem fornecidas com uma resolução de 0,00001 minutos de arco. Para tal, são necessários 6 caracteres adicionais, elevando o total de caracteres da sentença para 89. Se as alturas forem dadas ao centímetro o mais próximo, adicionam-se mais 2 caracteres, perfazendo um total de 91! Mesmo usando-se o GPS para posicionamento isolado, onde a idade das correções e a identificação da estação de referência são omitidas, o comprimento total da sentença ainda seria de 83 caracteres.

O padrão NMEA é protegido pelas leis de copyright e não é gratuito. Ele custa 250 dólares americanos para não-membros da NMEA.

Mais detalhes sobre NMEA e seus produtos podem ser encontrados em: http://www.nmea.org/pub/0183/index.html

Marcelo Carvalho dos Santos, Ph.D. em Geodésia e Engenharia Geomática pela Universidade de New Brunswick, Canadá, onde é professor adjunto e membro do Laboratório de Pesquisa Geodésica. Tem também atuado com consultor em projetos internacionais. msantos@unb.ca