README.md

Секретики чипа GK9501

Введение

В китайских магазинах можно найти супердешёвые GPS приёмники на базе чипа GK9501. Для хобби-проектов как раз то, что надо, однако найти мало-мальски вразумительную документацию по чипу достаточно сложно. Имеется простенькое техническое описание на китайском, на этом всё.

В этом проекте я постараюсь собрать воедино всё, что известно об этом чипе - достоинства, недостатки, особенности, не описанные в документации.

Структура проекта

В каталоге docs/ можно найти техописание чипа на китайском, переведённое гуглопереводчиком техописание на английский, а также документацию на готовые GPS модули, использующие этот чип.

В каталоге scripts/ находятся скрипты на bash’е, которые я использовал для ковыряния команд чипа. Описание сценариев, в общих чертах, можно найти в файле scripts/README.md

Общее впечатление от чипа

Формат выдаваемых сообщений NMEA 4.1. Если касаться наличного функционала, то разницы с NMEA 4.0 или 2.3 практически никакой нет (добавлено несколько полей в нескольких сообщениях). По факту, СНС приёмник умеет выдавать сообщения:

  • GLL
  • RMC
  • VTG
  • GGA
  • GSA
  • GSV
  • GRS
  • GST

Поддерживаются спутниковые системы GPS, ГЛОНАСС, BEIDOU, GALILEO (проверял работу только GPS и ГЛОНАСС).

Если неаккуратно подавать команды, можно загнать чип в ступор (перестаёт выдавать что бы то ни было - такое у меня неоднократно случалось при использовании gpsd). Также, если при слишком низкой бодовой скорости запросить от него слишком высокой частоты выдачи сообщений, можно добиться того, что СНС приёмник просто не будет успевать выдать всю запрошенную информацию за запрошенный интервал, вследствие чего чип станет “глухим” и перестанет слышать команды.

В любом случае, подобные ситуации “лечатся” отключением питания на длительное время (пять минут хватает, в моём случае). На моей плате E108-GN02D для хранения настроек используется ионистор, который способен поддерживать питание ОЗУ с настройками лишь в течении небольшого времени. Процесс разрядки ионистора можно ускорить пинцетом.

Приёмник поддерживает свои собственные команды для настройки, они начинаются с префикса PGKC. Они более-мене подробно расписаны в технической документации на чип. Не все работают как описано (например, установка даты-времени вообще не работает - дата берётся со спутника, при наличии сигнала, если сигнала нет показывает 2005й год).

Из полезного:

  • Можно увеличивать бодовую скорость, я поднимал до 921600 бод.
  • Можно ограничить список выдаваемых сообщений, например, можно оставить лишь сообщения GGA, чтобы не обрабатывать ненужные сообщения.
  • Можно увеличить частоту выдачи до 10 раз в секунду, например, для использования на беспилотных аппаратах (но не на 9600 бод, конечно).
  • Выведен сигнал PPS (секундный пульс) - полезно для получения текущего времени с очень высокой точностью (доли миллисекунд). Пригодится, например, для создания “самоподводящихся” часов, датчиков для NTP серверов и т.п.

Отрицательные стороны:

  • Приёмник не умеет запоминать настройки надолго. Следовательно, настройку необходимо проводить при каждом включении. Хорошо, если прошивка микроконтроллера, к которому подключён приёмник, умеет отправлять команды для инициализации СНС приёмника, а если нет?
  • Не поддерживаются сообщения PASHR, в которых есть рыскание, тангаж и крен. Для беспилотных аппаратов это довольно полезные данные.

Что дальше?

Пока остаётся неизученной возможность использования приёмником протокола u-blox. Это протокол, который требует значительно меньше ресурсов со стороны получателя сообщений для их обработки т.к. данные поступают в виде готовых бинарных структур, а не текста.

Программа gpsd каким-то образом переключает приёмник в режим u-blox, но через какое-то время приёмник перестаёт выдавать данные, необходимо разобраться - ошибка ли это в приёмнике, можно ли его вывести из этого состояния, можно ли этого избежать.

Описание

Ковыряние чипа GPS GK9501 от GOKE в познавательных целях

Конвейеры
0 успешных
0 с ошибкой