Главная » Статьи » Как подключить

GPS модуль EB-500



 Использование космических технологий уже давно доступно рядовому радиолюбителю, а именно использование спутников GPS в своих целях. Для этого достаточно приобрести (а если повезет, выдрать из ненужного КПК/смартфона и т.д.) модуль GPS-приемника. Из всего многочисленного разнообразия готовых модулей я сделал выбор в пользу GPS-модуля EB-500
 Это чуть ли не самый дешевый и распространенный модуль, описание и опыт использования в рунете встречается очень часто. И на этот раз я не стал заказывать интересную детальку издалека: покупать на Еbay перед новым годом нервов не хватит пока дождешься :) а в chip-nn.ru этот модуль дешевле не намного. Поэтому поехал в местный вольтмастер и купил эту железку за 600 рублей. 600? Дайте два!
  
 
 Общее описание

 Модуль предназначен для встраивания в мобильные устройства поэтому имеет весьма небольшие габариты 13 x 15 x 2.2 mm. У EB-500 есть еще несколько модификаций. Первая EB500L, ничем не отличающаяся от основной за той лишь разницей что не умеет работать с пассивными антеннами. Поэтому если стоит выбор между ЕВ-500 и ЕВ-500L, выбирайте первый. Он умеет работать как с пассивными так и с активными антеннами. Вторая модификация EB-500A, имеет те же характеристики что и EB-500 но в нем есть аппаратный USB, поэтому если надо собрать устройство подключаемое к компьютеру, лучше взять его и тогда не придется делать дополнительный преобразователь USB-UART.

 Для того чтобы с большой точностью определять координаты, приемник должен принять сигнал как минимум с трех спутников. При увеличении числа спутников, с которых ловится сигнал, увеличивается и точность вычисления координат приемника. У EB-500  в этом плане все очень даже хорошо, он имеет 66 каналов, для обнаружения спутников, их слежения и сохранения положения в пространстве. Благодаря этому время горячего старта - Hot start (когда спутники уже найдены и сохранены  в памяти модуля) согласно документации составляет всего 1,5 секунды. Тогда как время холодного старта от 35 секунд. Все это конечно, при ясном небе без видимых помех и с хорошей антенной, посмотрим как будет обстоять на деле. Что касается антенны, то я взял пассивную керамическую. О ней чуть позже.

 Так как модуль предназначен для мобильных устройств питающихся от батарей, то диапазон питающих напряжений стандартный - от 4,2 до 3,0 вольт. Самое то будет использовать какой-нибудь Li-Ion аккумулятор. Потребление модуля во время работы менее 28мА. 

 Подключение

Схема подключения модуля простейшая и взята из даташита на приемник (кликабельно)



 Из необходимых внешних компонентов обвязки потребуется всего 4 фильтрующих конденсатора (можно сократить до 2-х)




 
 


 Обозначение выводов:

 1,2Tx1, Rx1 - ноги стандартного UART для ввода/вывода данных 

 3PPS - на этом выводе после определения координат появляются импульсы с частотой 1 Гц. 

 4,5Tx0, Rx0 - дублирующий UART. Выполняет абсолютно те же функции что и первый. Удобно использовать для отладки, можно ткнутся сниффером и посмотреть в терминале как происходит общение с модулем. Или на лету менять настройки не вмешиваясь в работу микроконтроллера.

 7,9,14,15,16GPIO - выводы общего назначения, они не используются в стандартной прошивке модуля. 

 8GPS status - еще один вывод индикации. Пока идет поиск спутников и определение координат на этом выводе логическая единица. Как только координаты будут определены на этом выводе появятся импульсы с частотой 1 Гц.

 10,19V28D/V28A - выходы для подключения внешних фильтрующих конденсаторов.

 12: V_RTC_3V3 - вывод для подключения батарейки (2-4,3 вольта). Необходима для сохранения всех настроек и найденных спутников в памяти модуля, благодаря чему удается уменьшить время на определение координат при последующих включениях. Подключать питание к этому выводу обязательно, без этого модуль не запустится.

 13VIN_3V3 - на этот вывод подается напряжение основного питания в диапазоне от 3 до 4,2 В.

 21RF_input - вывод для подключения антенны


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





 Антенна

 Как я уже сказал, антенну я взял пассивную A25-4102920-AMT02.  Размеры антенны 25 х 25 мм. Были еще и другие размеры: 18 х 18 мм. и 35 х 35 мм. Если размеры не важны, то советуют брать больше - в этом деле чем больше антенна тем лучше ловится сигнал. 
 
 Антенна представляет собой керамическую пластину, с двух сторон нанесенной металлизацией.  К верхней металлизации припаян штырек, который проходит через керамическое основание и выходит снизу. 





 Снизу нанесена липучка, с помощью которой антенна приклеивается к плате.





 На плате, куда приклеивается антенна, под всей её площадью настоятельно рекомендуется оставлять земляной полигон - чем больше земли под антенной тем лучше. Еще рекомендуется делать дорожку соединяющую модуль и антенну как можно короче, не более 15 мм. При этом волновое сопротивление дорожки должно составлять 50 Ом. К тому же в плотную к модулю антенну ставить нельзя - наводки от самого модуля заглушат весь сигнал. И тут надо поймать золотую середину: и расстояние выдержать, и антенну убрать подальше и землей все залить под ней. Жуть :)
 


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

 Для расчета волнового сопротивления есть специальная формула, по которой можно определить интересующий нас параметр. Этим параметром является ширина дорожки, идущей до антенны, играя ее шириной мы можем добиться нужного волнового сопротивления. Это в простейшем случае, когда проводник не окружен по бокам земляным полигоном.


   

где Z0 — волновое сопротивление,
Еr — диэлектрическая проницаемость материала (для FR4 примерно 4.4), 
B — ширина проводника (то что нам необходимо найти),
C — толщина меди (обычно 18 мкм)
H — толщина диэлектрика (толщина текстолита у меня 1 мм).


 Или воспользоваться удобной программкой CITS25 (скачать), результат у меня получился одинаковый что при расчете вручную по формуле выше, что по этой программе. Так что рекомендую. Тем более, что она уже может считать и более сложные расположения проводников между собой.

     

 Ширина проводника до антенны на текстолите толщиной 1 мм. получается примерно 1,8 мм. 



 Печатную плату разводил с учетом имеющегося корпуса, антенну разместил с обратной стороны  от приемника и прочей электроники, поэтому вышло так:

    


 А вот как это выглядит в живую. Устройство будет располагаться в таком вот гробике :) 

  


 Землю с обоих сторон платы обильно соединил переходными отверстиями. Не знаю как это сильно повлияло на качество приема, но холодный старт возле окна показал около 2 минут, горячий около 5 секунд. Хотя бывало что модуль и при горячем старте тупил несколько минут пока определял координаты. Но это все от того, что все происходило под крышей, думается мне если его вынести под открытое небо результат будет еще лучше.
 Полную схему будущего девайса приводить не буду, как укомплектую устройство целиком сделаю отдельное описание, а пока продолжим.


 Общение 

 Как и положено модуль отдает полученные данные по протоколу NMEA0183 через стандартный UART  интерфейс. Естественно что при подключении приемника к микроконтроллеру или преобразователю UART-USB(COM) уровень напряжения на линиях связи не должен превышать допустимого предела 4,2В. У себя для подключения к компьютеру я использовал преобразователь на FT232RL с логическими уровнями 3,3В.
 Скорость подключения по умолчанию составляет 115200 бод, хотя в сети встречаются сообщения о том, что по умолчанию модуль работает на скорости 9600 бод да и в даташите на модуль обозначена эта скорость Не знаю в чем тут дело, может ревизии разные. Но у меня заработал именно на 115200. Поэтому если вдруг не срастается общение с модулем просто попробуйте поменять скорость. 
 После того как на приемник подано основное питание он начнет отсылать в терминал кучу информации. Но полезной ее можно считать после фиксирования координат (когда замигал светодиод Status).
 К примеру, в моем случае приходит следующее.

$GPRMC,190813.000,A,5312.7581,N,05009.1820,E,0.30,256.15,231212,,,A*62
$GPVTG,256.15,T,,M,0.30,N,0.56,K,A*38
$GPZDA,190813.000,23,12,2012,,*57
$GPGGA,190814.000,5312.7580,N,05009.1820,E,1,6,1.01,82.6,M,-5.9,M,,*7A
$GPGLL,5312.7580,N,05009.1820,E,190814.000,A,A*54
$GPGSA,A,3,13,28,03,05,19,26,,,,,,,1.40,1.01,0.97*0B
$GPGSV,4,1,13,07,81,063,,08,60,268,,13,38,136,29,05,32,295,21*78
$GPGSV,4,2,13,10,31,226,,03,30,068,18,19,25,094,18,28,22,205,31*7B
$GPGSV,4,3,13,06,22,048,,26,16,305,18,16,13,044,,23,07,135,*7E
$GPGSV,4,4,13,21,02,004,*4E

 Из всего этого нас могут заинтересовать координаты (собственно ради чего все это и делается), точное время, дата, скорость и направление движения.  Всю эту информацию можно взять с первой строчки, которая имеет идентификатор $GPRMC. 
190813 - время 19 часов, 08 минут, 13 секунд (время по UTC поэтому надо прибавлять часы в зависимости от часового пояса)
5312.7581,N - широта (N-северная, S-южная)
05009.1820,E - долгота (E-восточная, W-западная)
0.30 - скорость движения (измеряемая в узлах) 1 узел = 1.852 км/ч = 0.5144 м/сек
Если лень пересчитывать скорость в км/ч можно достать из следующей строки с идентификатором $GPVTG. Помечена как 0.56,K
256.15 - угол движения относительно севера (90 - движемся на восток, 180 - на юг, 270 - на запад, а 0 - соответственно на север.) Для определения азимута, как нетрудно догадаться, используется расчет координат. Поэтому точное определение может быть только в движении.
231212 - здесь находится текущая дата в формате ДДММГГ


для наглядности сделал скрин с терминала




 Остальные строки в основном дублируют информацию с первой строчки, за исключением строк с идентификатором $GPGSA и $GPGSV. В них находится информация о пойманных спутниках. Практической пользы от этого никакой, но зато с помощью специальной программы EB View можно глянуть где находятся в данный момент каждый из спутников. 
 У меня модель лежа на столе возле окна поймал 5 спутников, правда просвет на чистое небо там мизерный. Сверху закрывает балкон соседа, а напротив многоэтажный дом. Поэтому думается мне что точность получилась хреновая, потому как сигнал легко отражаться от препятствий и уже отраженный улавливаться модулем. А это влечет за собой неточность измерений. Да и расчетная скорость 2,29 км/час настораживает :)


 С помощью этой программы также можно настроить сам модуль. К примеру, изменить частоту обновления координат или изменить скорость соединения по UART. Но надо помнить что если уменьшить скорость соединения, модуль может не успеть передать всю информацию за отведенное время.
 Мне стало интересно насколько ошибся модуль в определении координат и я вбил их в GoogleEarth. Красным обведено действительное местоположение, по мне так результат очень даже не плохой, модуль наврал не сильно. Тем более при работе из комнаты. 




 Как доделаю вывод координат на дисплей, проверю точность уже под открытым небом. На этом пока все и всех с несбывшимся апокалипсисом! ;)






Категория: Как подключить | Добавлено: 22.12.2012
Просмотров: 30814 | Комментарии: 27 | Теги: uart, GPS, EB-500 | Рейтинг: 5.0/9
Всего комментариев: 27
+1   Спам
27 Denis   (12.04.2013 17:49)
$PMTK401*37
$PMTK101*32
$PMTK414*33
$PMTK605*31
$PMTK400*36
я разобрался с этими командами... это управляющие команды, их отправляет сам компьютер... а выдавал он мне их потому что соединение земли переходника usb/uart с самим модулем было плохое... теперь все нормально работает)))

26 exersizze   (04.04.2013 21:59)
Denis, хз похоже что это какая-то техническая информация. А шлет постоянно заместо требуемых данных или как?

25 Denis   (03.04.2013 22:19)
кто-нибудь знает почему gps выдает в EB Viel вот такие строки:
$PMTK401*37
$PMTK101*32
$PMTK414*33
$PMTK605*31
$PMTK400*36

24 max   (11.02.2013 09:17)
Понял, спасибо.

23 exersizze   (10.02.2013 22:21)
Да, вполне.

22 max   (10.02.2013 21:42)
Такая антенна A20-4T подойдет?

21 Valera18   (21.01.2013 19:02)
Для Scorpushka

Тут посмотри, есть китайские аналоги GPS, нужно учитывать что напряжение у них от 3,1V до 3,5V, документация на них есть в интернете.
http://dx.com/c....ies-722

Интернет магазин:
http://chipster.ru/catalog/wireless/gps/

19 Scorpushka   (21.01.2013 15:00)
а в интернете где такой модуль купить? что то на ебее не нашел

18 Valera18   (31.12.2012 12:27)
Для max

Спасибо, учтено.
В принципе, главное что "защита от разряда и перезаряда" выполняет необходимую мне работу (заряжает аккумулятор и питает GPS).

+2   Спам
17 max   (30.12.2012 21:37)
>Valera18
>Да, в корпусе аккумулятора (Nokia 3310) находится: контроллер заряда и аккумулятор >литий-ионный.
Не совсем так. Это просто защита от разряда и перезаряда. Вот тут эту тему я уже поднимал: http://bascomavr.3bb.ru/viewtopic.php?id=689.
>exersizze
>Ко мне вот такие едут
Ставьте, хуже не будет. В некоторых АКБ встречались только термисторы на плате и больше ни чего. Сам себе таких тоже несколько заказывал.

16 Valera18   (28.12.2012 19:22)
Да, в корпусе аккумулятора (Nokia 3310) находится: контроллер заряда и аккумулятор литий-ионный. Удобно, что покупать больше ничего не нужно.
Заказанный Вами "Mini USB Lithium Battery Charging Board Charger Module 5V 1A" можно использовать по такой-же схеме (и добиться зарядки без отключения GPS).

+1   Спам
15 exersizze   (28.12.2012 19:07)
А, все понял, это у тебя получается контроллер зарадя в аккумулятор встроен?? Странно, обычно максимум что стоит в литий-ионных акб так это схема ограничения тока, чтобы аакум не взорвался от перегрузок. Хотя в 3310 все возможно))
Я сначала подумал что у тебя контроллер заряда собран отдельной схемой. Ко мне вот такие едут http://www.ebay.com/itm....7.l2649

14 Valera18   (28.12.2012 17:00)
Подключаешь к USB (5V), в момент зарядки напряжение падает (4V... с чем-то), когда контроллер отключает заряд - напряжение на USB возрастает до 5V.

Вы маленько не поняли, расклеивать нужно пластиковый корпус.


В "корпусе": контроллер заряда и сам аккумулятор. Снаружи "корпуса" только контакты для подключения зарядки (в данном случае USB 5V), поэтому снаружи подключить GPS нельзя, напряжение 5V. Поэтому нужно расклеить "корпус" и допаять два провода к аккумулятору и пустить их на GPS, тогда всё будет работать.
На контроллер заряда входит USB (5V), а выходит из контроллера напряжение 3V-4.2V оно идёт на зарядку аккумулятора и питание GPS.

"Я же специально нарисовал, как всё нужно подключить." тогда получите возможность заряжать аккумулятор не отключая GPS. Проверено, работает.

13 exersizze   (28.12.2012 16:13)
А какое напряжение на выходе зарядного устройства в момент заряда? И зачем расклеивать корпус, можно же и так подпаяться.

+1   Спам
12 Valera18   (28.12.2012 12:36)
Проблема GPS в том, что максимальное напряжение = 4.2V, следовательно, к "USB зарядке" подключать нельзя! Поэтому GPS может питаться только от аккумулятора, или только от стабилизатора 3.3V, стабилизатора маловато для зарядки аккумулятора.

Сегодня опробовал "интересный" способ зарядки аккумулятора и в тот-же момент происходит питание GPS. Следовательно, работает GPS и заряжается аккумулятор.
Это очень удобно, так как зарядку можно осуществлять от USB порта (5V) или от автомобильной зарядки в 5V.

Испытания проводились на аккумуляторе от Nokia 3310. Нужно только расклеить "Пластиковый корпус" в нём (контроллер и аккумулятор) и допаять два провода для GPS.
Контроллер подключаешь к USB, аккумулятор заряжается до 4.18V, после контроллер отключает от зарядки, а это всё время GPS работает "без сбоев" в диапазоне 3V-4.2V. В принципе контроллер должен включать зарядку аккумулятора "сам", но это ещё не пробовал.

Просто и дёшево!
Ссылка на картинку:
http://s003.radikal.ru/i201/1212/17/66b62944624e.jpg



!!!НА КАРТИНКЕ ПЛАСТИКОВЫЙ КОРПУС УЖЕ РАСКЛЕЕН, ЗДЕСЬ НАХОДИТСЯ КОНТРОЛЛЕР ЗАРЯДА И АККУМУЛЯТОР!!!

11 exersizze   (27.12.2012 20:48)
Дело пошло, принимай поздравления! С помощью Input конечно проще всего ловить данные по uart, но я буду делать так
Код
S = ""
Do
  B = Inkey()  
  Select Case B
  Case 0 : Exit Do  
  Case 10 : If S <> "" Then Exit Do  
  Case Else : If B > 31 Then S = S + Chr(b)  
  End Select
Loop

этот метод я описал подробно здесь http://avrproject.ru/publ....1-0-128

У меня для питания модуля тоже старый аккум от нокиа (BL-5C) не знаю сколько мА/ч, но с полного заряда 4,17 вольт проработал весь день (8 часов). Вечером на батарейке осталось 3,8 вольт. Так что в плане энергопотребления здесь все очень даже хорошо.

10 Valera18   (27.12.2012 19:30)
У меня GPS приёмник - "L10", он практически такой-же как и "EB-500".
Покупал 2 года назад, дальше работы с "терминалом" не продвинулся, так как не знал как работать с "приёмом по UART".

Спасибо автору этого сайта (exersizze), со статьёй про "Система удаленного контроля на GSM модуле SIM900D", эта статья помогла "разжевать" приём по UART.

Поэтому, я написал простенькую прошивку GPS часов:
Участники: GPS приёмник + Atmega8 + COM порт.
Принцип работы: Принимает все данные с GPS, сортирует, и вытаскивает "в данном случае" - время (часы, минуты, секунды), и передаёт время по UART на компьютер (терминал).
По такому принципу, можно вытаскивать любые данные с GPS (например: координаты, скорость, высота, и т.д.).

Надеюсь кому пригодится, может кто предложит более эффективный способ обработки данных с GPS.

Ссылка:
http://yadi.sk/d/hiVAB4cg63aec

Единственное что расстраивает, лежали без дела 2 года, всё из-за незнания "приёма по UART", в итоге оказалось всё не сложно. Теперь GPS приёмники пойдут в дело!

Порадовало, энергопотребление GPS. Взял старый аккумулятор от Nokia 3310 (около 700mA), зарядил. Включил GPS приёмник, на аккумуляторе было 4.1V, уже прошло 4 часа, а GPS ещё работает, сейчас напряжение = 3.76V, работать будет ещё где-то 4 часа, а может и больше.
Вероятно, если использовать аккумулятор большей емкости (х2 или х3), то работать будет больше 24 часов, что весьма не плохо.

+1   Спам
9 Valera18   (27.12.2012 19:00)
Я поторопился, уже нашёл ответ.

Нашёл хороший код, который позволяет перевести из String в Byte:
C = Val(B)
C = 14 '(Byte вид)

Следовательно, Atmega распознаёт как: B = C
Может кому пригодится.

8 Valera18   (27.12.2012 18:35)
Кто может ответить.
Как вытащить число String в Byte вид?

Dim B As String * 3
B = "14"

Как перевести String в Byte:
Dim C As Byte
C = ?

В итоге Atmega должна понимать B = C

+1   Спам
7 exersizze   (25.12.2012 15:19)
Есть дисплеи от 3310 и 1100. На один из них.

6 pchela5   (25.12.2012 12:11)
А на какой дисплей планируешь выводить?

5 RD3AVJ   (24.12.2012 21:34)
exersizze спасибо за статью! Как всегда - все четко и наглядно! Ждем продолжения! smile

+1   Спам
4 exersizze   (24.12.2012 14:25)
NMEA выдает координаты в градусах и минутах, тогда как для гугла и яндекса считаются в градусах и десятичных дробях градуса.
Значит правильный перевод, как уже сказал Valera18: градусы взять как есть, а минуты, вместе с дробной частью, домножить на (100/60) и прибавить к градусам. А остаток от деления уходит в секунды. На скриншоте с картой координаты в "gg mm ss" и их я взял как раз с программы eb-view там они уже пересчитаны.
Добавил в конце статьи ссылку на описание протокола NMEA http://avrproject.ru/EB-500/NMEA-1.31.pdf в параграфе 4.5 как раз описание содержания строки с идентификатором $GPRMC

3 Valera18   (24.12.2012 10:44)
Интересная статья!

Я тоже покупал 2 штуки "GPS модули", только года два назад, модель GPS немного другая - "L10", но функциональность такая-же. В изучение GPS продвинулся до считывание информации на терминал, но до Atmega так и не добрался, поэтому уже два года лежат на хранение (причина: не знание как считать большой объём информации по UART в Atmega).

Поэтому буду ждать "продолжение статьи".

+2   Спам
2 Valera18   (24.12.2012 10:08)
Для vworld

Нет, не развод. Я тоже с этим сталкивался, просто нужно перевести координаты, полученные по UART от модуля в формат, пригодный для ввода в Яндекс.Карты/Google Maps.
Данные по UART: 5312.7581,N - это 53 градуса и 127581 минут.
Вычисляем 127581 минут/60, далее (2126,35/10000)+53 = N53.212635.
То-же самое делаем с долготой и получаем:
N53.212635
E50.153033

1 vworld   (24.12.2012 07:30)
Если верить EB View - то ул. Пугачевский Тракт, 31
Самара, Самарская область
а если верить, то что сняли в терминал - то Новокуйбышевское ш., 118, Самара, Самарская область
разброд какой-то :(

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
08.12.2016 - exersizze:
yorx выдалось немного свободного времени, проверил в симуляторе. Проблема...
Логгер температуры 2.0
05.12.2016 - Evgeny6873:
Хотел повторить схему и долго ждал дисплей, два раза заказывал с Китая, пришел. ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
01.12.2016 - yorx:
Доброго времени суток, exersizze попробовал Ваш код все равно не работает как на...
Помни об усадке!
30.11.2016 - pchela5:
Автомобильные никакие не лезут?
Помни об усадке!
29.11.2016 - AlekS:
Виктор, спасибо.
С заменой транса в зиму, перестройка не комельфо) Валяет...
Управляем микроконтроллером с ПК по UART
29.11.2016 - exersizze:
Михаил, для работы с инфракрасными датчиками и диодами есть команды RC5SE...
Управляем микроконтроллером с ПК по UART
29.11.2016 - Михаил:
Всем привет.
Подскажите как переменную S передать по инфракрасному каналу...
Помни об усадке!
29.11.2016 - pchela5:
> Если ленту светодиодную порезать и соединить последовательно
Только ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
29.11.2016 - exersizze:
yorx, вывод Q7 ' первой микросхемы соединен с DS второй микросхемы? С...


Лучшие цены на 3D принтеры
успей сделать себе подарок к Новому Году! ;)


Prusa i3

Prusa i3 от 12500 р.



Rostoсk

Rostock от 15000 р.