Главная » Статьи » Электроника |
Ковыряясь с очередным проектом, в котором задействован GPS модуль Ublox NEO-6M в китайском исполнении, вот таком обнаружил одну особенность, которая может подпортить жизнь неподготовленному пользователю. Все началось с необходимости определения азимута движения. Его, согласно протоколу NMEA0183, можно взять из сообщения с идентификатором $GPRMC, разбор посылки описывался тут. Но подключив модуль к терминалу и просмотрев, что тот отправляет слегка прифигел, место где должно стоять значение угла было пусто! Расчетная скорость на месте, текущая дата тоже. А вот угла, который должен быть между ними, нет. Ладно, думаю не беда, может он передается в другой строке, ведь согласно протоколу, большинство данных продублировано, в том числе и азимут. Но и тут меня ждал облом, угла нигде не было. Проклиная китайцев, причастных к производству этого модуля и морально готовясь к тому, что придется программно просчитывать угол (а это куча тригонометрических функций и числа с плавающей запятой) полез на сайт производителя в поиске ответа. В надежде, что возможность передачи азимута можно включить программно через настройки модуля, скачал фирменную утилиту U-center.
В программе есть графическое представление любых данных: отображение точки на гуглокарте, текущая высота, количество и название пойманных спутников с их расположением на небосводе, даже статистика точности фиксирования координат и еще куча всего. Там же обнаружился и спидометр с компасом. Ага! уже что-то. Понаблюдав несколько минут за стрелкой, удалось выяснить, что азимут модулем все же передается и стрелка поворачивается, хотя и редко. Оказалось, что значение азимута начинает передаваться когда расчетная скорость превысит 1,5 узла. А так как все наблюдения проводились на модуле спокойно лежащем на столе, поэтому азимута и нет. А появляется он только если вдруг потеряется спутник и модуль резко изменит координаты, посчитав изменение координат за начало движения. Такая вот хурма. Но и это еще не все. Основная палка в том, что длина строки при всем этом не постоянна, числа передаются без ведущих нулей. Поэтому с возрастанием скорости и азимута, длина строки также будет возрастать. И для того чтобы выделить из строки угол или дату придется действовать методом перебора, ищя запятую-разделитель, так как позиция этих значений в строке не будет постоянной. Геморно, но все же это гораздо лучше, чем рассчитывать азимут в ручную. Ну и на столе не удобно отлаживать, это да.
| |
Категория: Электроника | Добавлено: 03.02.2017 | |
Просмотров: 2387
| Теги: |
Всего комментариев: 0 | |