Решён
Сборка трекера: как получить координаты объекта в системе ГЛОНАСС?

Дмитрий Волков Arduino и Raspberry
1.5k
6

Собираю пет проект - автомобильный трекер на базе SIM808 и платы Arduino. Модуль успешно цепляется к сети и ловит спутники. В серийный порт сыплются стандартные NMEA сообщения.

Подскажите, как получить координаты объекта в системе ГЛОНАСС из этого потока? Какие конкретно предложения (GPGGA, GPRMC) нужно парсить и в чем отличие от GPS?

Решение
67
Эксперт • 1 ответ

Разберем структуру NMEA для комбинированных модулей типа SIM808.

Каждое предложение начинается с идентификатора источника (Talker ID).

  • $GP - спутники GPS
  • $GL - спутники ГЛОНАСС
  • $GN - комбинированное решение (ГЛОНАСС + GPS)

Вам не нужно парсить отдельно $GLGGA. Модуль сам высчитывает позицию по всем доступным спутникам и выдает ее с префиксом $GNGGA или $GNRMC.

Пример строки:
$GNRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A

Разбиваете эту строку по запятым. Индекс 3 - широта, Индекс 5 - долгота.

Аватар Дмитрий Волков

Точно! Посмотрел в лог, у меня как раз сыплются строки GNRMC. Спасибо, сэкономили кучу времени.

0
Эксперт • 3 ответа

Во-первых, правильно говорить не "ГЛОНАСС трекере", а приёмнике ГНСС. Во-вторых, спецификация протокола чётко описывает префиксы. Вы путаете терминологию, называя все сообщения одинаково. Изучите стандарт NMEA 0183 перед написанием кода.

3
Участник • 2 ответа

Не пиши свой парсер на С++, это типичный велосипед, который развалится при потере сигнала. Подними локальный сервер Traccar в докере. Направь сырой TCP поток с симки туда, а он уже сам распарсит любые NMEA данные и сохранит в нормальную базу Postgres.

25
Участник • 1 ответ

Если лень парсить NMEA руками, просто отправь AT команду AT+CGNSINF. Модуль сам прожует все спутники и вернет готовую строку с координатами через запятую. Останется только разбить ее сплитом.

Написать ответ

Премодерация гостей

Вы отвечаете как гость. Ваш ответ будет скрыт до проверки модератором. Чтобы ответ появился сразу и вы получали репутацию — войдите в аккаунт.

Будьте вежливы и соблюдайте правила платформы.