Протокол обмена сообщениями GPS NMEA 0183 101

С помощью смартфона мы можем определить своё местоположение на Земле с точностью до нескольких метров. Это становится возможным благодаря чипу, который взаимодействует с группой спутников на орбите, — такая система называется Глобальной навигационной спутниковой системой (ГНСС / GNSS). ГНСС — это группа, или созвездие, из 24 и более спутников, которые работают совместно, обеспечивая позиционирование и услуги синхронизации времени по всему миру при любых погодных условиях.

Хотя Глобальная система позиционирования (GPS) Соединённых Штатов является наиболее широко используемой ГНСС в мире, существуют и другие системы, в том числе:

  • BeiDou Navigation Satellite System (BDS) — Китай.

  • Navigation Indian Constellation (NavIC) — Индия.

  • European Global Navigation System (Galileo) — Европа.

  • Quasi-Zenith Satellite System (QZSS) — Япония.

  • Globalnaya Navigazionnaya Sputnikovaya Sistema (ГЛОНАСС) — Россия.

Для вычисления положения в трёх измерениях и смещения времени в часах приёмника необходимы данные как минимум от четырёх спутников ГНСС. Это означает, что точность и достоверность данных о положении, скорости и времени возрастают по мере увеличения числа спутников.

Примечание

Как правило, термин «GPS» используется в общем смысле для обозначения оборудования и процесса определения местоположения с помощью ГНСС.

GPS-приёмники взаимодействуют, используя несколько «языков», или протоколов, включая стандартные и нестандартные (то есть проприетарные) форматы сообщений. В этих протоколах информация может передаваться в виде двоичных данных (т.е. единиц и нулей) или с использованием кодировки символов ASCII. Среди всех стандартов сообщений, применяемых с GPS-приёмниками, NMEA 0183 является наиболее широко используемым стандартом.

NMEA — это аббревиатура от National Marine Electronics Association (Национальная ассоциация морской электроники). Эта ассоциация была основана в 1957 году торговцами электроникой с целью повышения технологического уровня и безопасности морской электроники посредством обучения монтажников и разработки интерфейсных стандартов. Протокол обмена сообщениями NMEA 0183 был принят в 1983 году — изначально для сопряжения морского электронного оборудования, однако впоследствии его применение распространилось и на наземную электронику [3].

NMEA 0183 — это простой протокол обмена сообщениями, в котором данные передаются в виде ASCII-строк или «предложений» от одного «говорящего» (talker) к одному или нескольким «слушателям» (listeners) одновременно. Ещё одна характерная особенность протокола NMEA 0183 заключается в том, что он использует электрический стандарт RS-422, хотя совместим и со стандартом RS-232 [3]. Параметры последовательного соединения протокола NMEA 0183 следующие:

  • Скорость передачи: 4800 бод.

  • Биты данных: 8.

  • Чётность: отсутствует.

  • Стоп-бит: отсутствует.

«Говорящими» (talkers) в NMEA 0183 могут быть, например, спутник, эхолот или компас, а «слушателями» (listeners) — картплоттер, радар или GPS-приёмник, такой как используемый в Arduino MKR GPS Shield.

Протокол NMEA 0183 иногда вызывает путаницу, поскольку существует не одно «предложение», а разные предложения NMEA 0183 с различными возможностями и назначением — как правило, отличается именно информация, которую они могут предоставить. Чтобы разобраться в различных возможностях, назначении и составе предоставляемой информации, необходимо сначала понять их структуру.

Структура предложений GPS NMEA 0183

Все предложения NMEA 0183 начинаются со знака $ и заканчиваются возвратом каретки и переводом строки; каждое поле данных в предложении разделяется запятой:

$aaaaa,df1,df2,df3*hh<CR><LF>

За знаком $ всегда следует адресное поле из 5 символов, а hh — это двухзначная шестнадцатеричная контрольная сумма. Предложение NMEA 0183 может содержать максимум 80 символов, не считая символа возврата каретки и символа перевода строки. Рассмотрим пример предложения GPS NMEA 0183:

$GPGGA,181908.00,3404.7041778,N,07044.3966270,W,4,13,1.00,495.144,M,29.200,M,0.10,0000,*40

В этом предложении NMEA 0183 можно выделить следующую информацию:

  • GP обозначает позицию GPS (GL означало бы ГЛОНАСС).

  • 181908.00 — это временна́я метка (UTC в часах, минутах и секундах).

  • 3404.7041778широта в формате DDMM.MMMMM.

  • N обозначает северную широту.

  • 07044.3966270долгота в формате DDDMM.MMMMM.

  • W обозначает западную долготу.

  • 4индикатор качества (точность).

  • 13количество спутников, использованных для определения координат.

  • 1.00горизонтальный коэффициент ухудшения точности (HDOP).

  • 495.144высота антенны GPS.

  • Mединица измерения высоты (метры или футы).

  • 29.200геоидальное разделение.

  • Mединица измерения геоидального разделения (метры или футы).

  • 1.0возраст поправки (если есть).

  • 0000идентификатор станции поправок (если есть).

  • *40контрольная сумма.

$GPGGA является базовым и распространённым предложением NMEA 0183; альтернативные и сопутствующие предложения NMEA 0183 предоставляют аналогичную или дополнительную информацию.

Базовая структура предложения NMEA 0183.

Базовая структура предложения NMEA 0183.

Распространённые предложения GPS NMEA 0183

В таблице ниже описаны некоторые распространённые предложения протокола NMEA 0183, встречающиеся в контексте GPS:

Предложение

Описание

$GPGGA

Данные о времени, положении и типе фиксации.

$GPGLL

Широта, долгота, время UTC фиксации позиции и статус.

$GPGSA

Режим работы GPS-приёмника, спутники, задействованные в решении определения положения, значения DOP.

$GPGSV

Количество видимых спутников, идентификационные номера спутников, угол возвышения, азимут, значения SNR.

$GPRMC

Данные о времени, дате, положении, курсе и скорости.

$GPVTG

Информация о курсе и скорости относительно земли.

Важно

Предложение $GPRMC является ключевым, поскольку содержит рекомендуемый минимум навигационных данных, которые должен предоставлять приёмник ГНСС.

Совет

Для извлечения информации о позиции записывайте как минимум одно из следующих предложений NMEA 0183: $GPGGA, $GPGLL, $GPRMC.

Arduino® и протокол обмена сообщениями GPS NMEA 0183

Платы семейства Arduino MKR могут работать с протоколом обмена сообщениями NMEA 0183 с помощью Arduino MKR GPS Shield и библиотеки Arduino_MKR GPS.

Щит MKR GPS Shield.

Щит MKR GPS Shield.

MKR GPS Shield основан на модуле ГНСС u-blox SAM-M8Q; этот модуль поддерживает одновременный приём сигналов от до трёх систем ГНСС (GPS, Galileo и ГЛОНАСС), а также поддерживает SBAS и QZSS. Кроме того, он одновременно распознаёт несколько созвездий и обеспечивает исключительную точность позиционирования в условиях городской застройки или при слабом сигнале.

MKR GPS Shield предназначен для использования поверх плат семейства MKR, однако его также можно подключить к другим платам Arduino на базе SAM D через контакты UART или I2C (библиотека Arduino_MKR GPS поддерживает оба протокола связи).

Дополнительную информацию можно найти в официальной документации по щиту.

Учебные материалы по MKR GPS Shield

Если вы хотите научиться работать с MKR GPS Shield, ознакомьтесь со следующими руководствами:

Ссылки