Как сделать локализацию gps приемник
Trema GPS модуль ATGM336H - является навигационным устройством позволяющим определить свои координаты по широте, долготе и высоте. Дополнительно модуль способен определить текущую дату, время, скорость и направление передвижения.
Модуль получает данные на основе информации поступающей со спутников навигационных систем GPS (США), Глонасс (Россия) и Beidou (Китай).
Видео:
Спецификация:
- Напряжение питания: 3,3 В или 5 В, поддерживаются оба напряжения.
- Питание резервной батареи: 3 В.
- Ток потребляемый модулем: до 25 мА.
- Интерфейс: UART.
- Скорость шины UART: 4800, 9600 (по умолчанию), 19200, 38400, 57600, 115200 бит/с.
- Конфигурация шины UART: 8 бит данных, без проверки четности, с одним стоповым битом.
- Уровень логической 1 на линиях шины UART: 3,3 В.
- Протокол передачи данных: NMEA 0183.
- Частота обновления выводимых данных: от 1 (по умолчанию) до 10 Гц.
- Поддерживаемые навигационные системы: GPS (США), Глонасс (Россия) и Beidou (Китай).
- Время холодного старта: ≤ 35 сек.
- Время горячего старта: ≤ 1 сек.
- Точность позиционирования:
Подключение:
На плате модуля расположен разъем из 5 выводов.
- TX - выход данных шины UART от модуля. Подключается к выводу RX Arduino.
- RX - вход данных шины UART в модуль. Подключается к выводу TX Arduino.
- Vcc - вход питания 3,3 или 5 В.
- GND - общий вывод питания.
- PPS - выход меандра с частотой 1 Гц. Передний фронт импульсов совпадает с временем UTC.
При подключении модуля не к аппаратной, а к программной шине UART, вы сами назначаете выводы TX и RX Arduino к которым подключается модуль.
Модуль удобно подключать 5 способами, в зависимости от ситуации:
Способ - 1: Используя провода, Piranha UNO и программный UART
Способ - 2: Используя провода, Piranha ULTRA и аппаратный UART
С данным подключением будет использоваться второй аппаратный UART на Piranha ULTRA. Стоит заметить, что программный порт на UNO безошибочно работает на скорости до 57600 бод, в то время как аппаратный без проблем может работать на скорости 115200, вдвое большей.
Способ - 3: Используя Trema Set Shield
При таком подключении можно использовать программный UART на 8 и 9 цифровых выводах. Так же на этих выводах находиться второй аппаратный последовательный порт Piranha ULTRA, что ещё больше упрощает работу с модулем.
Способ - 4: Используя проводной шлейф и Shield
Используя 2-х и 3-х проводные шлейфы, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
Способ - 5: Напрямую к ПК через USB-UART
Питание:
Подробнее о модуле:
Для работы с Trema GPS модулем - ATGM336H, нами разработано две библиотеки:
Подробнее про установку библиотеки читайте в нашей инструкции.
Примеры:
В данном разделе раскрыты примеры настройки работы Trema GPS модуля ATGM336H при помощи библиотеки iarduino_GPS_ATGM336 и получения данных отправляемых данным модулем при помощи библиотеки iarduino_GPS_NMEA по аппаратной шине UART-1. Обе библиотеки позволяют работать не только с аппаратной, но и с программной шиной UART.
Примеры работы с программной и аппаратной шиной UART доступны из меню Arduino IDE:
- Файл / Примеры / iarduino GPS NMEA (парсер) - без настройки модуля.
- Файл / Примеры / iarduino GPS ATGM336 (навигационный модуль).
Примеры получения данных библиотекой iarduino_GPS_NMEA без настройки модуля, доступны по ссылке Wiki - Парсер протокола NMEA.
Получение координат:
Пример выводит координаты широты и долготы в градусах, 5 раз в секунду.
Обратите внимание на то, что в примере не указана скорость шины Serial1 , так как она автоматически настраивается на скорость модуля функцией SettingsGPS.begin(Serial1); , а далее устанавливается функцией SettingsGPS.baudrate(9600); .
Получение скорости и курса:
Пример выводит скорость и курс, 5 раз в секунду.
Обратите внимание на то, что в примере не указана скорость шины Serial1 , так как она автоматически настраивается на скорость модуля функцией SettingsGPS.begin(Serial1); , а далее устанавливается функцией SettingsGPS.baudrate(9600); .
Получение ссылки с координатами на карте:
Пример выводит ссылку на Yandex карту 1 раз в секунду.
Пример выводит ссылку на Google карту 1 раз в секунду.
Обратите внимание на то, что в примере не указана скорость шины Serial1 , так как она автоматически настраивается на скорость модуля функцией SettingsGPS.begin(Serial1); , а далее устанавливается функцией SettingsGPS.baudrate(9600); .
Получение текущей даты и времени:
Пример выводит время, дату, день недели и UnixTime, 5 раз в секунду.
Обратите внимание на то, что в примере не указана скорость шины Serial1 , так как она автоматически настраивается на скорость модуля функцией SettingsGPS.begin(Serial1); , а далее устанавливается функцией SettingsGPS.baudrate(9600); .
Получение данных о спутниках:
Пример выводит данные о наблюдаемых спутниках: ID, уровень приёма, положение относительно GPS-модуля, тип навигационной системы и флаг участия спутника в позиционировании, 1 раз в 2 секунды.
Обратите внимание на то, что в примере не указана скорость шины Serial1 , так как она автоматически настраивается на скорость модуля функцией SettingsGPS.begin(Serial1); , а далее устанавливается функцией SettingsGPS.baudrate(9600); .
Перезагрузка модуля со сбросом его настроек на заводские:
Пример перезагружает модуль со сбросом его настроек (скорость передачи данных, частота обновления выводимых данных, версия протокола NMEA и его состав, используемые спутниковые навигационные системы и динамическая модель) в значения по умолчанию.
Описание функций библиотеки iarduino_GPS_ATGM336:
В данном разделе описаны функции библиотеки iarduino_GPS_ATGM336 для настройки работы Trema GPS модуля.
Библиотека iarduino_GPS_ATGM336 может использовать как аппаратную, так и программную реализацию шины UART для работы с Trema GPS-модулем.
Подключение библиотеки:
- Если GPS-модуль подключён по аппаратной шине UART (в примере используется UART-1):
Строки со звездочкой в комментарии можно исключить, если вы не собираетесь читать данные при помощи библиотеки iarduino_GPS_NMEA.
- Если GPS-модуль подключён по программной шине UART (в примере используются выводы D8 и D9 для подключения модуля к Arduino):
Строки со звездочкой в комментарии можно исключить, если вы не собираетесь читать данные при помощи библиотеки iarduino_GPS_NMEA.
- Вывод TX Arduino подключается к выводу RX модуля, а вывод RX Arduino подключается к выводу TX модуля.
Функция begin();
- Назначение: Инициализация работы с GPS модулем по шине UART.
- Синтаксис: begin( SERIAL );
- Параметры:
- SERIAL - объект или класс для работы с шиной UART по которой подключён GPS-модуль.
- Функция должна быть вызвана до обращения к функции begin() библиотеки iarduino_GPS_NMEA, если таковая используется в скетче.
- Функция определяет наличие GPS модуля на шине UART, узнаёт скорость передачи данных на которую настроен модуль (это может занять несколько секунд) и указывает шине UART работать на обнаруженной скорости.
- Если шине UART была задана скорость до обращения к данной функции, то функция сначала проверит соответствует ли указанная скорость для работы с модулем, а если скорость не подходит, то изменит её на скорость передачи данных модуля.
Функция baudrate();
- Назначение: Установка скорости передачи данных модуля по шине UART.
- Синтаксис: baudrate( [СКОРОСТЬ] );
- Параметры:
- uint32_t СКОРОСТЬ - целое число может принимать следующие значения:
- 4800 бит/сек.
- 9600 бит/сек. - это значение установлено в модуле по умолчанию.
- 19200 бит/сек.
- 38400 бит/сек.
- 57600 бит/сек.
- 115200 бит/сек.
- Функция устанавливает указанную скорость и модулю и шине UART.
- Если функцию вызвать без параметра, то функция обнаружит текущую скорость модуля и установит её для шины UART.
При этом функция вернет:- false (0) - если скорость модуля не определена.
- true (1) - если скорость модуля совпадает с уже установленной скоростью шины UART.
- СКОРОСТЬ - обнаруженная скорость модуля установленная для шины UART.
Функция updaterate();
Функция composition();
Функция system();
- Назначение: Выбор используемых спутниковых навигационных систем.
- Синтаксис: system( СИСТЕМЫ );
- Параметры:
- uint8_t СИСТЕМЫ - от 1 до 3 спутниковых навигационных систем, указываются через запятую и могут принимать следующие значения:
- GPS_GP - использовать данные поступающие от спутников GPS.
- GPS_BD - использовать данные поступающие от спутников Beidu.
- GPS_GL - использовать данные поступающие от спутников Glonass.
- По умолчанию модуль использует спутниковые навигационные системы GPS и Glonass.
Функция model();
- Назначение: Выбор динамической модели навигационной платформы.
- Синтаксис: model( МОДЕЛЬ );
- Параметр:
- uint8_t МОДЕЛЬ - может принимать одно из следующих значений:
- GPS_PORTABLE - модуль используется в портативном устройстве.
- GPS_STATIC - модуль используется статично.
- GPS_WALKING - модуль используется пешеходом.
- GPS_VEHICLE - модуль используется в автомобиле.
- GPS_VOYAGE - модуль используется на морском судне.
- GPS_AVIATION_1G - модуль используется на воздушном судне reset(GPS_FACTORY_SET) .
Описание функций библиотеки iarduino_GPS_NMEA:
С подробным описанием функций библиотеки и примерами её работы можно ознакомиться на странице Wiki - Парсер протокола NMEA.
Список функций библиотеки:
Библиотека содержит 4 функции:
- begin() - инициализация получения данных из строк NMEA.
- timeZone() - установка / получение часовой зоны.
- timeOut() - ограничение времени чтения данных.
- read() - чтение данных.
Чтение данных:
- float latitude - Широта (±90.0°).
- float longitude - Долгота (±180.0°).
- uint16_t altitude - Высота над уровнем моря (±32767м).
- uint8_t speed - Скорость (0-255 км/ч).
- float course - Курс (±180.0°).
- uint8_t satellites[GPS_ACTIVE] - Количество активных спутников (0-12).
- uint8_t satellites[GPS_VISIBLE] - Количество наблюдаемых спутников.
- float PDOP - Пространственный геометрический фактор ухудшения точности (0-25.5).
- float HDOP - Горизонтальный геометрический фактор ухудшения точности (0-25.5).
- float VDOP - Вертикальный геометрический фактор ухудшения точности (0-25.5).
- uint8_t seconds - Секунды (0-59).
- uint8_t minutes - Минуты (0-59).
- uint8_t hours - Часы (1-12).
- uint8_t Hours - Часы (0-23).
- uint8_t midday - Полдень (0-am, 1-pm).
- uint8_t day - День месяца (1-31).
- uint8_t weekday - День недели (0-воскресенье, 1-понедельник, . , 6-суббота).
- uint8_t month - Месяц (1-12).
- uint8_t year - Год (0-99).
- uint16_t Year - Год (0-65'535).
- uint32_t Unix - Unix время (0-4'294'967'296 сек).
- Функцию read() можно вызвать с указанием массива в качестве параметра, тогда этот массив будет заполнен данными о наблюдаемых спутниках.
Подключил usb gps ublox7 (он же vk 172) к mk908II с Android 4.2.2.
Делал всё по инструкции Rage2, за что ему большое спасибо!
Взял наугад модуль cdc-acm.ko(ну почти наугад т.к. в windows он не определялся как pl, ft, cp.), и повезло, появилось устройство ttyACM0 ))
Закинул либу, выставил скорость "busybox stty -F /dev/ttyACM0 9600"
проверил "cat /dev/ttyACM0" данные бегут)
Но не было пункта "Настройки -> Местоположения" и никакие программы не видели gps приемник. После 3х дневных танцев с бубнов сменил прошивку на Finless 1.6 Andorid 4.2.2 (до этого был Andorid 4.4 ). В ней этот пункт не вырезан.Забросил свисток в шкаф, и забил на проблему. Прошел год, просматривая сайт по продаже и подготовке планшетов, наткнулся на LS23030G. Характеристики устройства радуют:
Российские карты создавались и создаются на математической основе отличной от основы используемой при создании картографических материалов других стран. В частности, российские карты используют в качестве основы систему координат 1942 года (СК-42 она же Pulkovo-1942), в определение которой входит эллипсоид Красовского.
Если вы по той или иной причине хотите, чтобы ваш приемник отображал координаты в этой системе координат (СК), вам нужно либо выбрать ее в списке поддерживаемых СК или задать вручную набор специальных параметров, описывающих как эта система соотносится с WGS84, в которой работает система GPS.
Система координат СК-42 в GPS приемники фирмы Garmin как правило не встроена, но ее можно прописать вручную, задав пользовательский набор параметров трансформации (User Datum). В этот набор, кроме параметров самого эллипсоида (разница в длине между большими полуосями - DA, разность сжатий - DF) входят еще относительные параметры положения его центра (DX, DY, DZ). Эти параметры задаются относительно общемировой системы координат WGS 84 (World Geodetic System 1984).
Такая настройка может пригодится в следующих случаях:
- По тем или иным причинам необходимо получить максимальную точность отображения координат на экране прибора. Разница между координатами одной и той же точки в разных системах координат составляет порядка 150 м (откуда взята эта цифра).
- Получаемые координаты с GPS вручную тут же переносятся на бумажную или электронную карту с известной системой координат отличной от WGS 84.
Важно помнить, что, независимо от того, какая система координат настроена в GPS, загрузка данных с него с помощью кабеля, будет все равно происходить в системе координат WGS 84. Таким образом, этих данные все равно придется пересчитывать в нужную систему координат.
- Если вы не первый раз вводите эти настройки, а меняете User Datum на другой, то вам нужно сначала сменить его на любой другой, например WGS-84, а потом снова выбрать User Datum и отредактировать его параметры.
Кнопка Page до страницы Main Menu
Пункт Setup Menu -->Enter
Пункт Navigation -->Enter
Пункт Map Datum -->Enter
Клавиша Вверх до пункта User -->Enter
Ввести параметры из таблицыДалее нужно ввести следующие значения:
Смещение эллипсоида по оси X
Смещение эллипсоида по оси Y
Смещение эллипсоида по оси Z
Разница в длине между большими полуосями (а) эллипсоидов WGS-84-Красовского
Масштабированная разность сжатий (f1-f2)*10000
эллипсоидов WGS-84 и Красовского- для ввода отрицательных значений введите минус в первом знаке поля, пролистав 123456. ;
- в некоторых моделях GPS дробные значения dx,dy,dz обычно ввести нельзя, поэтому в таблице также приведены округленные значения;
- Использованы значения из ГОСТ 51794-2001 >>>
При дальнейшей камеральной работе, использование карты в одной системе координат и данных GPS измерений в другой, ошибка может достигать достаточно больших величин. В большинстве случаев, рекомендуется избегать использования данных в разных системах координат одновременно.
На примере видна разница между точками в СК-42 (фиолетовые точки) и WGS 84 (красные) наложенных на топооснову масштаба 1:200000 находящуюся в СК-42. При таком использовании, точки в WGS-84 попадают в море. Точки в СК-42 получены с помощью GPS, настроенного используя вышеприведенные параметры (территория - Куршская Коса, побережье Балтийского моря).
Для скачивания и пересчета данных с GPS удобно использовать программу DNR Garmin, подробнее про настройку и работу с ней можно прочитать здесь.
С другими наборами параметров, с которыми вы можете столкнуться, можно ознакомиться в отдельной статье.
В прошлой статье мы уже говорили о том, что относительный метод ГНСС-наблюдений основан на передаче поправок с Базы на Ровер. Сегодня расскажем, как установить связь между приемниками. Отметим, что при постобработке данных нет нужды в соединении приемников, главное – одновременное наблюдение одних и тех же спутников. Но для режима реального времени необходимо обеспечить стабильную связь, чтобы в каждый момент времени поправки, рассчитанные Базой, передавались на Ровер. Готовое решение рассчитывается после обработки этих данных микропрограммным обеспечением Ровера.
Существует 3 основных способа связи приемников:
- По каналу УКВ
- По голосовой связи (CSD)
- По сети Интернет
УКВ (ультракоротковолновая) радиосвязь требует использования специализированного УКВ-модема (встроенного в приемник или внешнего) и радиоантенны. В зависимости от модели УКВ-модемы работают на прием, передачу или прием/передачу поправок. На Базовом приемнике модем настраивается на передачу, а на Ровере – на прием. Главное условие соединения – правильная настройка этого оборудования! У передающего и у принимающего радиомодемов должны совпадать рабочие характеристики: частота, протокол шифрования, скорость в эфире и скорость физического соединения. В таком случае соединение стабильное и быстрое. Еще один плюс использования радиосвязи в том, что к одной Базе можно подключить неограниченное количество Роверов, соответствующе настроив их работу.
В некоторых случаях возникают сложности в использовании радиосвязи. Например, дальность связи определяется мощностью УКВ-модема и сильно зависит от рельефа. Мощные радиомодемы (35 Ватт) способны покрыть расстояние около 30 км, но и стоимость такого оборудование гораздо выше. Комплект получается тяжелым – к весу модема прибавляется вес внешнего аккумулятора для питания. Из-за этого внешний радиомодем обычно размещают на Базе, а Ровер используют с внутренним радиомодемом. Также, если между радиоантеннами Базы и Ровера расположено препятствие (массив леса, высокий холм, здание), то необходимо использовать ретранслятор (отдельное устройство для обхода преграды) либо антенну выше препятствия.
Без проблем с законодательством используются модемы мощностью лишь до 0,5 Вт. Если мощность передатчика выше, то нужно получить специальное разрешение на использование отдельной частоты. Эта процедура длится около полугода, к тому же для каждого нового района работ разрешение оформляется снова.
Самый передовой на данный момент вид связи осуществляется по сети Интернет. Встроенные GSM модемы современных приемников поддерживают и GPRS связь, а в качестве внешнего GPRS модема используется модем контроллера. Понадобится только СИМ-карта с возможностью выхода в Интернет. В современном мире уже сложно представить себе жизнь без Интернета, поэтому сеть покрытия довольно обширна. Информация, передаваемая в поправках, малого веса, значит трафик небольшой, и в итоге услуга связи стоит совсем недорого. Алгоритм работы основан на использовании некоторого сервера, на который поступают поправки от Базы и к которому обращается Ровер, чтобы эти поправки получить. Таким образом от одной Базы поправки могут получить бесчисленное количество Роверов. Естественно, их число ограничено возможностями сервера.
Сервер - это программное обеспечение для хранения данных в Интернете, имеет статический IP- адрес и предоставляет доступ к данным по запросу.
Основные протоколы для приема-передачи поправок это NTRIP и TCP/IP. Они различаются структурой и возможностями. Схема работы по протоколу TCP/IP: База-Сервер-Ровер. Любой пользователь Ровера, который знает адрес сервера (IP и Порт) может подключиться к нему для приема поправок. Также один TCP-порт поддерживает только один поток данных и, соответственно, один формат поправок.
Протокол NTRIP работает по схожей схеме, но появляется еще один элемент – кастер. Этот софт позволяет к одному адресу привязать множество потоков с различной информацией (виды поправок). С помощью кастера настраивается доступ к данным только для авторизованных пользователей. Это значит, что получать данные с сервера по NTRIP протоколу можно только при наличии адреса и аккаунта. Такой тип передачи данных используется в различных сетях референцных станций. Количество подключенных одновременно пользователей ограничивается только физическими возможностями сетевого оборудования.
Сервер и кастер в физическом смысле являются программами, и могут находиться как на приемнике, так и на отдельном компьютере.
Проблемы в передаче поправок по сети Интернет возникают, если в каком-то отдаленном регионе отсутствует Интернет в принципе. Либо нагрузка на канал не соответствует его пропускной способности и тогда не удается обеспечить быстрый и стабильный Интернет всем пользователям сети.
У каждого способа есть достоинства и недостатки. Вывод один: универсального решения нет. Куда бы Вы ни направились со своим оборудованием, сперва изучите местность на доступность сетей связи. Россия обширна, а работа ведется везде. Если Вы оказались в месте, где на многие километры нет сотовой связи или Интернета, то придется воспользоваться радиосвязью. И наоборот, если такая возможность есть, используйте Интернет.
Читайте также:
- uint8_t МОДЕЛЬ - может принимать одно из следующих значений:
- uint8_t СИСТЕМЫ - от 1 до 3 спутниковых навигационных систем, указываются через запятую и могут принимать следующие значения:
- uint32_t СКОРОСТЬ - целое число может принимать следующие значения: