Вы доделали свой новый проект, и теперь ваше детище живёт и передвигается по миру. И осталась только одна проблема – вам нужно знать его местоположение с достаточно неплохой точностью. К счастью, у нас есть системы спутникового позиционирования! При помощи готового модуля можно получить все данные по местоположению, которые вам только могут понадобиться. Но как подойти к этому вопросу, и какие компоненты лучше всего подойдут для вашего проекта? Читайте в данном материале.
Все одинаковые, но совершенно разные
Работа с GPS может внушать некоторые опасения, но благодаря усилиям промышленности и отдельных энтузиастов в наше время эта задача оказывается удивительно простой. Большинство имеющихся на рынке модулей будут работать одинаково. Чаще всего они передают данные по стандартному последовательному интерфейсу, обычно на скорости 9600 бод; также бывают интерфейсы I2C и SPI. Сами сообщения также стандартизированы – они выдаются в формате NMEA-0183. Если вы хотите сами обрабатывать данные, по этому стандарту полно документации. Однако если вы очень торопитесь, для многих платформ с микроконтроллером можно найти готовый код, который всё сделает за вас. Такие проекты, как NeoGPS, Adafruit GPS и minmea примут входящий поток последовательных данных и выдадут все географические данные, которые вам только могли понадобиться. Так что же – GPS это просто GPS?
В зависимости от области применения, от вашего GPS-модуля вам могут потребоваться разные вещи. Передвигающиеся с большой скоростью платформы, автопилот которых полагается на GPS, будут лучше работать с большой частотой обновления данных. Пассивные трекеры вполне удовлетворятся обновлениями не чаще раза в секунду. Требования к точности тоже бывают разные – некоторым приложениям требуется сантиметровое разрешение. Также существуют особые возможности, помогающие в пограничных ситуациях, типа расчёта местоположения исходя из проделанного пути (навигационного счисления) или приёмников, способных работать с несколькими навигационными системами одновременно (GPS, ГЛОНАСС, Бэйдоу и т.п.). Чёткое понимание требований к прибору и бюджета – главное в деле правильного выбора подходящего оборудования.
Мне просто нужно знать, где он!
Если вам необходима точность порядка нескольких метров и нечастое обновление местоположения, вам подойдёт простейший модуль GPS. Их стоимость может быть меньше $20, и они могут предложить частоту обновления 1-5 Гц и небольшое количество дополнительных свойств. Для многих проектов этого будет достаточно для определения местоположения человека, робота или транспортного средства. Также с такой частотой могут работать и простейшие автопилоты. Потребляют такие модули обычно менее 50 мА, а общаются по последовательному порту.
В эту группу попадают устройства на базе GP-20U7, а также уже устаревшего uBlox NEO-6M. Это дешёвый и простой способ недорого собрать ваш первый проект с GPS.
Мне нужен постоянный сигнал!
Если вам никак нельзя терять сигнал, или вы пытаетесь определить местоположение в загруженной городской территории, стоит обзавестись модулем, способным работать в таких условиях. В этих случаях могут помочь разъём для внешней антенны, позволяющий подключить антенну большего размера. Важно отметить, что распространённые коннекторы для плат U.FL рассчитаны на ограниченное количество подключений и их легко отломать, поэтому рассмотрите возможность покупки переходника U.FL to SMA. Антенны бывают всякие разные, но большинство из них будет лучше, чем стандартная небольшая керамическая пластинка, идущая в комплекте с многими модулями.
Качественная антенна с отдельным заземлением может значительно улучшить качество приёма
Точное определение местоположение требует получения хорошего сигнала от нескольких спутников – поэтому, чем больше выбор, тем легче этого достичь. Большая вероятность увидеть достаточно много спутников будет у модулей, способных распознавать различные навигационные системы. У нас есть китайская Бэйдоу, европейская Галилео, российская ГЛОНАСС – и если взять модуль, способный принимать дополнительный сигналы, у него будет огромное преимущество при работе в застроенной части города с ограниченным обзором неба.
Но иногда, несмотря ни на что, вы можете оказаться в ситуации, когда не видно ни единого спутника. В каком-нибудь туннеле невозможно поймать сигнал. Тогда могут пригодиться модули, позволяющие вести навигационное счисление. Когда сигнал пропадает, модуль использует встроенную инерционную систему для обновления местоположения до тех пор, пока вновь не поймает сигнал. Это может очень пригодиться в таких приложениях, которые, к примеру, строят маршрут и отслеживают повороты.
Все эти возможности увеличивают вероятность успешного определения местоположения, но и стоят денег. Модули XA1110 и ublox NEO-M8U стоят от $50 до $100. Но за такие деньги зато они часто предлагают дополнительные интерфейсы типа USB-serial и I2C, а также высокую частоту обновления.
Мне нужны быстрые обновления!
Если вы собираете нечто, движущееся с большой скоростью, 5 Гц вам может показаться мало. Более частое обновление у модулей бывает от 10 Гц до 25 Гц, благодаря чему ваш быстро движущийся проект сможет куда лучше ориентироваться в пространстве. Конечно, если вы строите крылатую ракету, то вы вряд ли будете закупаться в Sparkfun – а в противном случае развлекайтесь! Эти устройства обычно обмениваются данными на больших скоростях по последовательному порту или I2C, чтобы чаще обновлять местоположение.
Модули с такими возможностями всё равно бывают относительно недорогими, от $20 до $100. Для своих высокоскоростных проектов ищите модули типа SAM-M9N или BN-880Q.
Мне нужна сантиметровая точность!
Для некоторых случаев точность прежде всего. Если вы управляете комбайном, и не хотите, чтобы он протаранил ограду, то метровая точность вас не устроит. В данном случае лучше всего использовать приёмники с технологией Real Time Kinematics (RTK). Они объединяют полученный со спутника сигнал с локальными данными коррекции, полученными с базовой станции, в идеале находящейся не далее 10 км от их местоположения.
RTK работает, добавляя локальные данные коррекции, полученные с базовой станции
Эти данные могут поступать по интернету или по радиосвязи LoRa, и позволять модулю выдавать местоположение с точностью до сантиметра, в идеальных условиях. Некоторые операторы предоставляют публичный доступ к своим станциям, однако возможно приобрести собственное оборудование и поднять станцию для личных нужд. Многие модули высшего класса могут работать в качестве базовой станции для других модулей, работающих поблизости.
За точность приходится расплачиваться сложностью и деньгами. GPS-модули с поддержкой RTK идут уже по $200-$300 за штуку. Среди них — NEO-M8P и ZED-F9P. Также требуется прикупить базовую станцию, если в вашей местности нет публичной. Данные нужно будет заводить в модуль – либо по интернету, либо по радиосвязи. Не забудьте учесть эти требования при разработке!
Заключение
Нам повезло иметь доступ к широкому спектру GPS-модулей для рынка самодельщиков, сильно разнящихся по возможностям и стоимости. Высокоскоростные модули когда-то стоили тысячи долларов и продавались только для промышленных производителей, а теперь их можно купить в магазинах гораздо дешевле. Используйте требования вашего проекта как подсказку и конструируйте ваш проект с определением местоположения.
Moskus
Фактически неверно, потому что у приемников есть собственные протоколы (например, у упомянутых в статье приемников uBox — UBX). NMEA актуален для ситуации «мне просто нужны координаты».