Реклама ⓘ
Главная » Обзоры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

GPS-ГЛОНАСС приемник BN-280

GPS-Глонасс приемник BN-280, 6,90$ на али.

Внешний вид. 

Видим встроенную антенну, разъем для подключения провода и 6 отверстий дублирующих разъем. Распиновка разъема представлена на следующем рисунке.

Параметры представлены в таблице.

В качестве USB-UART переходника я использовал неисправную arduino nano (у которой сгорел микроконтроллер), а точнее установленную на ней микросхему CH340G. С таким переходником модуль отлично работает как с терминалами, так и со специальной программой для GPS u-center v8.27.

На подоконнике модуль выловил спутники почти сразу, заявленное время холодного старта 26 секунд. При помощи программы u-center можно просмотреть всю информацию, полученную от GPS-приемника. На следующем изображении видно, что приемник использует одновременно и GPS и ГЛОНАСС спутники.

Так же можно посмотреть, где находятся спутники, и какие из них используются.

Так же в программе u-center можно просмотреть все данные, которые приходят от GPS-приемника. Данные приходят один раз в секунду, и за секунду приходит вот такой поток данных

$GNRMC,133028.00,A,5217.37114,N,05629.32522,E,0.173,,171217,,,A*6E

$GNVTG,,T,,M,0.173,N,0.320,K,A*39

$GNGGA,133028.00,5217.37114,N,05629.32522,E,1,11,1.04,195.4,M,-12.9,M,,*6F

$GNGSA,A,3,16,27,23,09,07,26,08,,,,,,1.63,1.04,1.26*19

$GNGSA,A,3,78,77,86,87,,,,,,,,,1.63,1.04,1.26*16

$GPGSV,3,1,10,02,03,289,,05,16,322,22,07,57,257,22,08,09,130,29*74

$GPGSV,3,2,10,09,82,187,26,16,42,058,35,23,50,133,21,26,15,043,30*78

$GPGSV,3,3,10,27,20,096,36,30,28,253,22*78

$GLGSV,3,1,10,68,39,170,23,69,71,267,,70,22,325,,77,06,051,27*6B

$GLGSV,3,2,10,78,54,044,40,79,75,254,,80,13,235,,86,10,350,15*63

$GLGSV,3,3,10,87,16,044,37,88,03,088,27*6E

$GNGLL,5217.37114,N,05629.32522,E,133028.00,A,A*71

Давайте разберемся, что же там приходит.

Согласно протоколу NMEA 0183 первый символ всегда $, затем идут 2 буквы, согласно тому какие спутники используются.

А именно:

  • GP – GPS;
  • GL - ГЛОНАСС;
  • GA - Галилео;
  • GN – GPS+ГЛОНАСС (точнее любая комбинация систем навигации).

В моем случае встречаются GP, GL и GN.

Далее три буквы и следом набор данных, разделенный запятыми. Завершает строку символ * и контрольная сумма всех символов между $ и * (не включая их).

Первая строка $GNRMC,133028.00,A,5217.37114,N,05629.32522,E,0.173,,171217,,,A*6E содержит так называемый минимальный рекомендованный пакет данных, а именно:

  • время в формате ччммсс.сс по UTC;
  • статус, А если данные достоверны или V если не достоверны;
  • широта в формате ddmm.mmmm;
  • полушарие, N для северного, S для южного;
  • долгота в формате ddmm.mmmm;
  • полушарие, W  для западного, E для восточного;
  • скорость относительно земли в узлах (1 узел = 1.852 км/ч);
  • азимут направления движения в градусах;
  • дата в формате ddmmyy;
  • магнитное склонение в градусах;
  • направление склонения, W для западного, E для восточного;
  • индикатор режима.

Индикатор режима обозначается буквами:

  • A = Автономный режим
  • D = Дифференциальный режим
  • E = Экстраполяция координат
  • M = Режим ручного ввода
  • S = Режим симулятора
  • N = Недостоверные данные

В общем, в этой строке есть всё, что необходимо для навигации.

Идем дальше, строка $GNVTG,,T,,M,0.173,N,0.320,K,A*39 предназначена для определения направления движения. Содержит следующие данные:

  • Курс на истинный полюс (в градусах), затем следует буква Т;
  • Курс на магнитный полюс (так же в градусах), затем следует буква М;
  • Скорость относительно земли в узлах, затем следует буква N;
  • Скорость относительно земли в км/ч, затем следует буква К;
  • Индикатор режима, согласно рассмотренным ранее значениям.

Как видим, строка начинается с GN, это значит, что используются данные полученные как с GPS, так и с ГЛОНАСС.

Строка $GNGGA,133028.00,5217.37114,N,05629.32522,E,1,11,1.04,195.4,M,-12.9,M,,*6F содержит данные местоположения, а именно:

  • Время определения координат в формате ччммсс.сс по UTC;
  • широта в формате ddmm.mmmm;
  • полушарие, N для северного, S для южного;
  • долгота в формате ddmm.mmmm;
  • полушарие, W для западного, E для восточного;
  • режим работы приемника (о значениях позже);
  • количество спутников, использованных для получения координат;
  • HDOP;
  • Высота над уровнем моря в метрах, далее следует буква М;
  • Высота над геоидом в метрах, далее следует буква М;
  • Возраст дифференциальных поправок (в моем случае пусто).

Режимы работы приемника:

  • 0 = Координаты недоступны или недостоверны
  • 1 = Режим GPS SPS, координаты достоверны
  • 2 = Дифференциальный GPS, режим GPS SPS
  • 3 = Режим GPS PPS, координаты достоверны
  • 4 = RTK
  • 5 = Float RTK
  • 6 = Режим экстраполяции координат
  • 7 = Режим ручного ввода
  • 8 = Режим симулятора.

От минимального рекомендованного набора данных эта строка отличается наличием высоты над уровнем моря и геоидом, а так же можно узнать, сколько спутников использовано для расчета этих значений.

Строки $GNGSA,A,3,16,27,23,09,07,26,08,,,,,,1.63,1.04,1.26*19 и $GNGSA,A,3,78,77,86,87,,,,,,,,,1.63,1.04,1.26*16 содержат следующую информацию:

  • Режим переключения 2D/3D, А – автоматический, М – ручной;
  • Режим: 1 – нет решения, 2 – 2D, 3- 3D;
  • ID номера спутников, используемых в нахождении координат (1-32 для GPS, 65-96 для ГЛОНАСС);
  • PDOP (снижение точности по местоположению);
  • HDOP (снижение точности в горизонтальной плоскости);
  • VDOP (снижение точности в вертикальной плоскости);

Про DOP и его значения смотрите https://ru.wikipedia.org/wiki/DOP . Заметьте, что здесь две строки, одна для спутников GPS, вторая для ГЛОНАСС. Для нас эта строка большого интереса не представляет.

Строки

$GPGSV,3,1,10,02,03,289,,05,16,322,22,07,57,257,22,08,09,130,29*74

$GPGSV,3,2,10,09,82,187,26,16,42,058,35,23,50,133,21,26,15,043,30*78

$GPGSV,3,3,10,27,20,096,36,30,28,253,22*78 содержат информацию о видимых спутниках, в каждом сообщении может содержаться информация максимум о 4 спутниках. Строки содержат данные:

  • Общее количество сообщений (в нашем случае 3);
  • Номер текущего сообщения (обратите внимание на каждую строку, эти значения идут по порядку);
  • Общее количество видимых спутников (во всех трех сообщениях это значение одинаково);
  • ID номер спутника;
  • Угол места в градусах (макс. 90);
  • Азимут в градусах (0-359);
  • SNR (00-99 дБГц)4

Последние 4 значения встречаются в строке 4 раза подряд, если строка содержит информацию о 4 спутниках. Если строка содержит информацию менее чем о 4 спутниках, то нулевые поля (,,,,) не используются.

Далее идут очень похожие строки

$GLGSV,3,1,10,68,39,170,23,69,71,267,,70,22,325,,77,06,051,27*6B

$GLGSV,3,2,10,78,54,044,40,79,75,254,,80,13,235,,86,10,350,15*63

$GLGSV,3,3,10,87,16,044,37,88,03,088,27*6E которые содержат такие же данные о местоположении видимых спутников, но обратите внимание на первые символы $GPGSV и $GLGSV. В первом случае передаются данные о спутниках GPS, во втором о спутниках ГЛОНАСС. В этом вся разница.

 

И наконец, последняя строка $GNGLL,5217.37114,N,05629.32522,E,133028.00,A,A*71 снова содержит координаты. Данные представлены в следующем порядке:

  • широта в формате ddmm.mmmm;
  • полушарие, N для северного, S для южного;
  • долгота в формате ddmm.mmmm;
  • полушарие, W для западного, E для восточного;
  • время определения координат в формате ччммсс.сс по UTC;
  • статус, А если данные достоверны или V если не достоверны;
  • индикатор режима (значения рассмотрены ранее).

Эта строка не содержит уже ничего нового, все эти данные встречаются и в строке RMC и в GGA.

В чем же особенность данного модуля? Наличие ГЛОНАСС вносит некоторые коррективы в программу обработки данных. Я не буду рассматривать конкретные примеры получения данных по UART, и не буду показывать как «парсить» полученные данные. Это зависит от конкретного устройства и языка программирования, да и задача эта тривиальная. К тому же если вы решите написать свой собственный парсер, то наверняка будете опираться на полученные данные  наряду с описанием протокола NMEA. А если же вы решите воспользоваться готовыми библиотеками (привет ардуинщикам), то у вас могут возникнуть проблемы. Я заглянул в исходные коды некоторых библиотек для ардуино, предназначенные для работы с GPS, и обнаружил что библиотека парсит полученные строки конкретно для GPS, то есть ищет начало строки, начинающиеся с символов $GP. Это справедливо для модулей, работающих только с GPS. Но большинство данных с этого модуля приходят в формате GPS+ГЛОНАСС, некоторые только с ГЛОНАСС и только с GPS (это данные о количестве и местоположении спутников). Поэтому, если библиотека не выдает данные, то необходимо найти в исходных кодах все $GP* и заменить на $GN*. Я не смог проверить все библиотеки для работы с GPS, только несколько, поэтому будьте начеку и проверяйте исходные коды библиотек перед использованием.

Протокол NMEA подразумевает не только получение данных по UART, но и отправку команд в модуль (главным образом для настройки модуля). Например, команда $PSRF103 позволяет настроить, какие данные должен присылать модуль и с какой периодичностью. Полный синтаксис команды выгладит так $PSRF103,<msg>,<mode>,<rate>,< cksumEnable >*CKSUM<CR><LF> , где

msg - сообщение:

  • 0 GGA
  • 1 GLL
  • 2 GSA
  • 3 GSV
  • 4 RMC
  • 5 VTG
  • 6 MSS (If internal beacon is supported)
  • 7 Not defined
  • 8 ZDA (if 1PPS output is supported)
  • 9 Not defined

mode – режим, 0 = периодично, 1 = по запросу

rate – период отправки сообщений в секундах, 0 =отключено, 255 = максимальное количество секунд

cksumEnable –вывод контрольной суммы, 0 – отключено, 1 – включено.

Например, что бы отключить строку GSV, необходимо отправить $PSRF103,3,0,0,1*27

Что бы получить контрольное число воспользуйтесь онлайн калькулятором https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/

Так же удобная программа для работы с GPS-приемниками Trimble studio v 1.74.0 позволяет рассчитывать контрольную сумму (да и вообще программа для работы с GPS-приемниками отличная).

Возможность управлять приемником протоколом NMEA предусмотрена, но ни на одну отправленную мной команду приемник никак не отреагировал. В общем, это не мешает пользоваться приемником по назначению, информации полученной от приемника достаточно и для определения координат, времени, скорости и направления движения, высоты. А вот от списка спутников я бы отказался совсем или увеличил периодичность отправки этих сообщений. Но не получается.

Подведу итог. Модуль довольно компактный, быстро вылавливает сигналы спутников, выдает все, что необходимо для навигации. Из недостатков можно отметить только то, что его невозможно настроить (хотя если не получилось у меня, то это не значит что его вообще невозможно настроить, программа U-cemter предоставляет большие возможности для работы с gps-приемниками, в том числе и настройки).

P.S. И конечно же огромная благодарность сайту Паяльник за предоставленный на обзор GPS-Глонасс приемник

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (15) | Я собрал (0) | Подписаться

0
Starik #
Уважаемый Николай Александрович, большое спасибо за интересный обзор. Хотел спросить - не проверялось ли Вами наличие сигнала 1PPS на 1-м контакте модуля. Если да, то каков уровень этого сигнала, когда он появляется и т.д. У меня есть мысль использовать этот сигнал для калибровки частотомера. Буду благодарен за любую информацию по данному вопросу.
Ответить
0
Михаил #
Вот.
Прикрепленный файл: SDS00004.png
Прикрепленный файл: SDS00005.png
Ответить
+1
Pauk #
Какой ток он потребляет?
Ответить
0

[Автор]
mefi73 #
Отвечаю на заданные вопросы. Сигнал на PPS присутствует, частота 0,9997 Герц, как показал логический анализатор. Замерить амплитуду не смог, так как нет ослика, а мультиметр не показывает. Но если сигнал словил логический анализатор, то не менее 3,3 вольт. Другое дело что импульсы появляются только тогда, когда зафиксировано местоположение в 3 измерениях, а не всегда. Если нужен сигнал в 1 Гц необходимо использовать RTC, там можно получить такой сигнал без проблем.
Потребляемый ток 53 mA.
Ответить
+1
Pauk #
Это максимальный ток потребления или он не зависит от режимов?
Ответить
0

[Автор]
mefi73 #
Я замерил когда приемник вышел в режим 3D, то есть заморгал светодиод pps
Ответить
0
Starik #
Уважаемый Николай Александрович, спасибо за очень ценную для меня информацию. К сожалению использовать в качестве эталона частоты сигнал от обычных RTC с кварцованным генератором вместо сигнала PPS не очень интересно. Точность частоты сигнала PPS выше примерно в миллион раз...
Ответить
0

[Автор]
mefi73 #
Ну эт какую микросхему rtc найдете, вроде как 3232 хороши, с керамическим резонатором и тетмокоррекцией.
Ответить
0
Последний Инженер #
Протокол NMEA подразумевает ... отправку команд в модуль ... Например, $PSRF103
А с чего Вы взяли, что команды PSRF входят в спецификацию протокола NMEA?

ни на одну отправленную мной команду приемник никак не отреагировал
А с чего Вы взяли, что Ваш приемник от u-blox будет реагировать на команды для Sirf? Это было бы странно...
Ответить
0

[Автор]
mefi73 #
Команда P входит в спецификацию NMEA. Вы правы, комбинация PSRF предназначена для sirf, какую команду для u-blox посылать я не знаю. К тому же это Trimble studio настойчиво предлагал такую команду. Поскольку настройка приемника мне была не важна, я не стал копать в этом направлении. Но вы знаете больше меня, если сделали такое справедливое замечание. Возможно вы знаете какой префикс используется в u-blox?
Ответить
0
Последний Инженер #
P != PSRF, не так ли? И в спецификации NMEA нет ни команды PSRF, ни команды P. Но в протоколе NMEA-0183 зарезервированы идентификаторы предложений (sentences), начинающихся с P (proprietary). Чувствуете разницу?
Дело не в "больше" или "меньше". Дело в том, что Вы ничтоже сумняшеся пишете некие утверждения, а люди читают и верят. Источник не приводите - значит, вина на Вас. Даже пытаясь проверить, получаете отрицательный результат - и даже это не настораживает! Разве это правильно?
--
Чип u-blox, используемый Beitian, рулится своим бинарным протоколом. Нетрудно увидеть (даже в Вашей статье), что это протокол UBX. Там много всего... И пользоавться им надо аккуратно.
Отключение GSV: B5 62 06 01 03 00 F0 03 00 FD 15
(Естественно, это байты в шестнадцатиричной.)
Ещё что-нибудь надо?
Измененные установки действуют до выключения питания. Для их сохранения есть отдельная управляющая последовательность. Но Beitian порой не распаивает флэш на своих модулях. Так что следует отправлять нужные команды при каждом включении.

...А найти сейчас модуль, который отреагирует на $PSRF - та ещё задачка...
Ответить
0
Ivan #
Здравствуйте. У меня есть NEO-8M хочу с него сделать просто часы, Вывожу на экран часы, минуты, секунды, дата месяц и год.
А можно вывести день недели?
Ответить
+1

[Автор]
mefi73 #
Данные с приемника не содержат данные дня недели, вам придется рассчитать их самому, для этого уже есть готовые алгоритмы
Ответить
0
Последний Инженер #
Ну справедливости ради... :-)
Если это настоящий NEO-8M, и если в него пнуть строкой "$PUBX,04*37\r\n", то он должен ответить строкой следующей структуры:
$PUBX,04,hhmmss.ss,ddmmyy,wwwwww.ww,...
где содержатся и всем известные hhmmss.ss - часы-минуты-секунды, и ddmmyy - день-месяц-год, и интересные wwwwww - в этом поле выдается количество секунд, прошедших с момента начала недели.
Если это значение целочисленно разделить на 86400, то получившаяся цифра (целая часть от деления, естественно) покажет номер дня недели, где 0 - воскресенье, 1 - понедельник.
Конечно, числа должны лежать как 32-разрядные целые (long или uint32_t в avr-gcc и arduino). Естественно, парсить строку придется самостоятельно.
Можно игнорировать два последних знака этого поля перед точкой - тогда число влезет и в обычный int, а делить его надо будет на 864. Правда, при этом смена даты будет происходить не точно в 00-00, а плюс-минус полторы минуты (если не корректировать программно).

Простите, если помешал.
Ответить
0

[Автор]
mefi73 #
Отнюдь не помешали, наоборот, интересную информацию предоставили
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
Discovery V8 Конструктор для сборки: предусилитель на лампе 6N3
вверх