Решил немного пропиарить свой проектик, ну и заодно рассказать о прекрасном GPS модуле от швейцарской компании u-blox.
Итак, ответ на вопрос, который возник после прочтения заголовка у людей, которые не знакомы с u-blox:
Почему u-blox?
Ответ:
- Наличие GLONASS на борту
- Хорошая доступная документация
- Наличие собственного сервиса AGPS
Помимо этого есть еще поддержка, с которой мне даже успешно удалось пообщаться.
Немного о модуле:
Размеры: 12.2x16.0x2.4мм.
Конечно модуль великоват для мобильного телефона, но достаточно мал для автомобильного решения, или, например, квадрокоптера, а также комфортен для ручного монтажа на плату.
Спецификация GPS ресивера: 56-ти канальное ядро 7-го поколения от u-blox.
Поддерживаемые системы позиционирования: GPS L1 C/A, GLONASS L1 FDMA, QZSS L1 C/A, SBAS: WAAS, EGNOS, MSAS, Galileo E1B/C.
Galileo пока не запущен, но ввиду того, что есть возможность обновления прошивок, после полноценного запуска системы, я надеюсь будет, возможность ее использования.
Частота обновления данных: до 10 Гц.
Частоту можно менять програмно во процессе работы с модулем. По умолчанию 1Гц.
Точность:
- GPS — до 2.5м
- GLONASS — до 4м
Поддержка активных и пассивных антенн
Ничего необычного, просто факт. Правда именно у 7M нет возможности программно выключать питание активной антенны, поэтому если вы хотите энергосбережение нужно сделать одну из предложенных в документации схем аппаратного выключения извне.
Интерфейсы: UART, SPI, I2C, USB
UART и I2C работают одновременно, а вот SPI нужно железно муксить при помощи вывода D_SEL. Соответственно вы можете сделать управляемое переключение, например подключив GPIO к выводу D_SEL. Признаюсь честно я не проверял SPI, по скольку для моих целей UART намного удобнее. Да и в переключении протокола обмена «на лету» я не вижу великого смысла.
Цена: ~15$ у китайцев.
Вот так выглядит сам модуль:
Краткое содержание предыдущих 270 серий, или с чего все началось
В начале года я приобрел автомобиль, а в автомобиле без мультимедиа системы в нынешние времена вообще никак. Само собою вы можете сказать «Купи за 300$ у китайцев и не лезь!» Но я же инженер и мне интересно сделать что-то самому, разобраться в технологиях. Опыт разработки автомобильных мультимедиа систем у меня уже имеется, правда не с 0, тем интереснее было попробовать. Впрочем, это другая история, о ней поведаю в следующий раз. Теперь о главном — ниодна мультимедия система не обходится без навигации. Отсюда вывод — нужно иметь GPS модуль, карту, маршрутизацию,
PCB или как это было в первый раз
Как оказалось при ближайшем рассмотрении, PCB дизайн не так уж и сложен, как кажется на первый взгляд. Все чем приходится пользоваться сопровождается обильным количеством документации с типовыми схемами и пояснениями. Справедливости ради, я не смотрел на документацию других вендоров, потому что после изучения предложенной u-blox, был удовлетворен более чем.
В результате моих изысканий получился, на мой неискушенный взгляд, вполне себе нормальный PCB дизайн. Схемы можно скачать отсюда. Там же располагаются готовые к печати .pdf файлы, для дальнейшего использования в ЛУТ'е.
Я готов выслушать критику, потому что серьезно радиотехникой никогда не занимался — отсюда возможны ошибки, даже грубые. Все схемы я делал в Eagle Cad Soft. Инструмент для меня оказался очень удобным, "+" ко всему огромное количество готовых библиотек с широким выбором различных элементов, которые делает сообщество.
Ниже приведены скриношоты схематики и PCB:
Элементная база, которую я использовал вполне доступна в России. За исключением RF индуктивности 27nH, которую рекомендует производитель(впрочем сделанная своими руками работает не плохо).
PCB возможно не удовлетворяет некоторым требованиям предъявляемым к таким схемам, по этому поводу снова буду не против получить отзывы.
Снимать процесс изготовления печатной платы и пайки элементов у меня не было никакого желания, поэтому могу предложить только конечный вариант, если кому-то интересно по аббревиатуре ЛУТ находится огромное количество замечательных видео на youtube.
После травления и пайки получилась вот такая вот платка:
Верхняя сторона печатной платы:
P.S. Да, снимал на калькуклятор. Да, колхоз. Да, много припоя.
На нижней стороне платы имеется 5 выводов:
- 2 вывода UART помеченые как «Rx» «Tx»
- 2 вывода I2C помеченые как «SDA» «SCL»
- 1 контакт для сигнальной «земли»
Также есть SMA — female разъем для подключения активной/пассивной антенны.
На верхней стороне есть одинокий пин 3.3В. Он не был запланирован и не был разведен на PCB изначально, отсюда получился висящий в воздухе конденсатор.
Отмечу еще, что это вторая ревизия платы, и где-то в недрах гита скрывается первая, без питания LNA. Ну и, как мог заметить внимательный читатель, текущая плата немного не соответствует схематике и PCB.
Пару слов о антенне. Я использую активную антенну, заказанную у всех тех же китайцев за ~8$. Была попытка сделать свою собственную, но теоретической базы, наравне с элементной, пока не хватает чтобы сделать активную антенну приемлемого качества.
К чему я все это написал
Теперь поведу себя немного несдержанно и перейду к самопиарной части. Помимо чудо-платы, которая надо сказать была не самой трудоемкой частью процесса, я написал тонну-другую кода (а если быть точным комментариев к нему).
У u-blox есть свой собственный бинарый протокол, который наравне с NMEA умеет отдавать данные о местоположении, и многое другое. В общем-то не долго думая я сделал С-библиотечку для UBX протокола*.
Написание doxygen комментариев отняло уйму времени, но всеже я осилил.
Возможно в следующих постах я расскажу по подробнее о возможностях этого протокола. В частности использовании AGPS при работе с модулем.
Заключение
В заключении хочу добавить: все о чем написано выше успешно работает в связке с PC и Cubieboard. Естественно, не все оттестировано, но у меня пока не хватает рук к сожалению.
Основной недостаток этого модуля заключается в том, что GPS и GLONASS не могут работать одновременно. Приходится програмно переключаться между ними. Скорее всего та же учесть ждет Galileo.
Источники:
Общая информация о модулях u-blox 7-го поколения;
Спецификация 14-ой ревизии протокола UBX.*.
*На момент написания статьи последней является 15-ая ревизия. Автор собирается имлементировать новые возможности протокола.
UPD: добавил DIY