Главная » Статьи » Проекты

Принимаем данные с gps-модуля EB-500


 Продолжаем осваивать работу с GPS модулем EB-500 о котором писалось чуть ранее.  Связь с космосом налажена, осталось освоить то, как принять кучу данных от этой железки с помощью микроконтроллера и преобразовать их в удобоваримый формат. 

 Первым делом необходимо определить скорость на которой EB-500 передает данные. У меня заработал на 115200 бод. На такой большой частоте передачи большую роль играет частота работы микроконтроллера, т.е. напрямую зависит от частоты кварцевого резонатора. И стандартные кварцы на частоты 8-12-16 МГц, которые у меня были, ну никак не подходят для тактирования МК - они дают большой коэффициент ошибок при работе UART на скорости 115200 и заместо нужных данных мы получим мусор в буфере обмена. Поэтому необходимо подобрать кварц с частотой кратной скорости работы UART. Для 115200 бод есть стандартные кварцы с частотой 11059200 Гц, 12902400 Гц и 14745600 Гц. Как посоветовал комрад Pchela, резонаторы с такой частотой можно выдрать из старых модемов, но такого добра у меня не оказалось и поэтому пришлось дождаться окончания новогодних праздников и съездить в магазин.

 В общем схема сопряжения микроконтроллера и GPS-модуля вышла следующей:



 Для отображения полученных данных используется дисплей от Nokia5110 (аналог 3310)

 Печатную плату я уже выклыдывал здесь (прямая ссылка)

 

 Для приема данных с модуля я написал тестовый код, скачать для ознакомления можно будет в конце статьи. Он выводит на дисплей текущие координаты, в формате пригодном для скармливания картографическим приложениям (я использую Google Earth), расчетную скорость движения, путевой угол относительно севера и точное время в формате UTC.

 Теперь имея эти данные, можно использовать в своих целях - собрать GPS-логгер, навигатор, точные часы, компас или что-то еще.






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


      

 Прогулка продолжалась не долго, при температуре -15°C пиксели дисплея замерзли и стали работать мееедленно, да так что стало трудно различать показания (представьте человека стоящего на перекрестке и пытающегося дыханием отогреть непонятного вида прибор и пытающегося его сфоткать, и вы поймете с каким видом на меня смотрели прохожие )
 
 Что касается точности позиционирования, по мне так неплохо: разнос небольшой, три-четыре  метра максимум. Так же несравнимо быстрее модуль стартует после подачи питания, секунды 3-4 и он уже определял координаты. В общем годная и весьма интересная штуковина.
 





Категория: Проекты | Добавлено: 11.01.2013
Просмотров: 40929 | Комментарии: 65 | Теги: uart, EB-500, GPS, NOKIA3310 | Рейтинг: 5.0/20
Всего комментариев: 651 2 3 »
65 Winner_d   (19.03.2016 13:53) [Материал]
exersizze Жаль( Ладно тогда буду ждать приезда Gps модуля. Пробовать тогда буду на настоящем железе.

0  
64 exersizze   (19.03.2016 12:32) [Материал]
К сожалению нету. Схему рисовал для удобства в протеусе, без возможности симуляции.

63 Winner_d   (19.03.2016 12:17) [Материал]
exersizze У вас работающего проекта в протеусе нету? А то я собрал но дальше изображения приветствия загрузка не идет. Я так понял, что так и должно быть если на TX не подается сигнал с GPS. Перепробовал все GPS-модули для протеуса, не с одним не захотело работать. Притеус тупо виснит.

0  
62 exersizze   (18.03.2016 22:39) [Материал]
Winner_d   если интересует логика перехода на летнее время, то для случая с кнопкой можно сделать так: заводишь переменную byte в eeprom, и сохраняшь туда результат нажатия на кнопку. Например 0 = зимнее, 1 = летнее. И в начале делаешь чтение этой переменной, и от результат уже корректируешь время.
Или заместо кнопки сделать перемычку, на свободной ножке контроллреа. Так гораздо проще, просто считываем состояния порта и вводим корректировку
PS: сначала хотел сказать что в России отменили перевод стрелок, но потом глянул на IP

61 sany2   (18.03.2016 21:55) [Материал]
Конечно проще,кто ж мешает.

60 Winner_d   (18.03.2016 20:33) [Материал]
Ох йо. А кнопками не проще будет сделать?

59 sany2   (18.03.2016 16:44) [Материал]
Блин,точно не помню-но каждое воскресенье нужного месяца в 02 часов 00 минут 00 (или когда там переводим время)-увеличиваем переменную-будет равна 4,прибавим час.Так же с другим месяцем

58 Winner_d   (18.03.2016 13:11) [Материал]
Не кто не подскажет как сделать переход времени то на зимние то на летнее?

57 Winner_d   (18.03.2016 01:45) [Материал]
Спасибо. Значить буду сам колупать. Хочу добавить высоту над уровнем моря и индикатор заряда батареи. Благо свободное место на экране есть. Если получиться я выложу исходники и прошивку.

0  
56 exersizze   (18.03.2016 00:46) [Материал]
Подсветка на ноге PortA.4
По фьюзам вот какое дело, я прошиваю Хазамой (Khazama AVR) и там частота кварца выбирается из выпадающего списка.
Но могу сказать только одно, что фьюзы выставляются такие же как и на кварц 12 - 16 МГц (если собирали раньше  устройства с такой частотой, то прошивать знаете как).
Доработку не планирую, по крайней мере в обозримом будущем, так как этого железа у меня уже нет.

55 Winner_d   (17.03.2016 18:19) [Материал]
Спасибо. Прошивать буду программой SinaProg. А доработанная прошивка не намечаться? Очень хотелось бы что бы показывало высоту над уровнем моря. Еще вопрос, куда у вас подключена подсветка дисплея?

0  
54 exersizze   (17.03.2016 18:11) [Материал]
Да, подойдет если там стандартный протокол NMEA. Скорее всего так и есть. Фьюзы выставляются на работу от внешнего кварца. Чем будете прошивать?
Чтобы убрать ноль, надо поработать с выводимой на дисплей строкой. В баскоме можно воспользоваться командой Right http://avrhelp.mcselec.com/index.html?right.htm

53 Winner_d   (17.03.2016 17:12) [Материал]
Скажите пожалуйста Ublox GY-NEO6MV2 GPS он сюда подойдет в место EB-500? Какие фюзы выстовлять и как убрать ноль после Е? За ранее спасибо.

0  
52 exersizze   (07.05.2015 09:25) [Материал]
vovanxp , в принципе можно ставить любой из стандартного набора частот (4, 6, 8, 12, 16 МГц). Ошибка будет составлять всего 0,16%, в работе этого заметно не будет.
Но лучше поставить кварц на 11059200 Гц, на этой частоте передача будет без ошибок вообще.

51 vovanxp   (28.04.2015 23:24) [Материал]
Здравствуйте,есть GPS uBlox NEO-6M ,работает на 9600,подскажите пожалуйста какой кварц ставить?Спасибо

50 exersizze   (18.01.2014 12:53) [Материал]
это относительно не сложно сделать, главное нужно знать в каком формате телефону нужно отсылать данные.

+1   Спам
49 Le_Fleurs   (16.01.2014 22:22) [Материал]
Великолепная штука вот бы ещё к нему bluetooth модуль прикрутить что бы отправлять не на дисплей 3310, а на мобильное устройство. К примеру у меня Nokia 5320 с GPS дружит только через блютуз. а самого GPS в тел нету.

48 exersizze   (23.07.2013 08:57) [Материал]
diger, без проблем, можно выводить информацию на что угодно.
вот похожий проект на баскоме
http://bascom.at.ua/publ/gps_spidometr/1-1-0-81

47 diger   (22.07.2013 23:22) [Материал]
Уважаемые спецы! подскажите можно приспособить другой экранчик, допустим производителя WINSTAR?

+4   Спам
46 Valera18   (18.06.2013 14:37) [Материал]
Всем привет.

Наконец, закончил Свой проект GPS логгера в корпусе от Nokia 3310.

В прошивке использовал:
1) код опроса GPS, именно строки: $GPRMC и $GPGGA. По которым можно считать: время по Гринвичу, широту, долготу, скорость, путевой угол, дату по Гринвичу, состояние позиции (GPS fix), количество спутников и высоту над уровнем моря.
Прошивка находится в комментарии № 36.
2) код для расчёта расстояния между двумя точками (зная начальную и конечную широту и долготу).
Прошивка находится в комментарии № 44.
3) и код работы с LCD дисплеем от Nokia 3310 (аналог LCD Nokia 5110). Прошивка есть на этом сайте.
Для схемы питания Nokia 3310 в комментарии № 37.

Для своего GPS логгера, помимо показа всех данных, которые считываются со строк $GPRMC и $GPGGA, также написал «Меню», в котором есть:
1) «Настройка», в ней можно: включить или выключить подсветку, настроить вид подсветки, выставить часовой пояс (только плюсовые (+) значения, для России), выбрать вид гланого окна (обычный или с путевым компасом). При выходе из «Настройки» все изменения сохраняются в память (EEPROM), и при новом включении GPS настройки считываются из EEPROM.
2) «Сохранение Широты и Долготы», в ней можно: выбрать ячейку (от 1 до 50) в неё будет сохраняться текущая Широта и Долгота, дальше перейдёте в режим ввода Имени (на Английском) до 10 букв. Если не будете вводить Имя (оставите пустым), тогда если в выбранной ячейки уже была сохранена (широта, долгота и имя ячейки), то ячейка очистится.
3) «Поиск Широты и Долготы», в ней можно: выбрать ячейку, в которой раньше была сохранена точка (например: координата магазина), дальше переходите на новое окно, в котором показывает сохранёную Широту и Долготу, и текущую Широту и Долготу. Также показывает остаточное расстояние до точки (в метрах, если расстояние <10000 метров, если =>10000 метров, то показывает в километрах).

Также использовал симулятор «Proteus», в котором можно просмотреть всю работу GPS логгера. Я добавил клавишу блокировки клавиатуры, поэтому для разблокировки клавиатуры нужно нажать клавишу решётка (#).
ВНИМАНИЕ: для симулятора «Proteus» в прошивке использовал внутренний кварц на 8 МГц, если будете собирать данное устройство, то в прошивке измените частоту на внешний кварц 11.0592MГц.

Способ питания и зарядки использовал (из http://avrproject.ru/publ/kak_podkljuchit/gps_modul_eb_500/2-1-0-127 в комментарии № 12).
Питание GPS и Atmega64L включается через полевые ключи BSS138. Питание LCD идёт из ножки Atmega64L.

Если захотите собирать данное устройство «GPS логгер в корпусе от Nokia 3310», задавайте вопросы по моему устройству, Я отвечу на Ваши вопросы.

Может, кому пригодится прошивка законченного GPS логгера в корпусе от Nokia 3310.
Все материалы по своему проекту, Я закачал на Яндекс-диск:
http://yadi.sk/d/MpHV4Af-5zGLy

+1   Спам
45 exersizze   (12.05.2013 01:16) [Материал]
Valera18, пригодится однозначно, спасибо!)

+1   Спам
44 Valera18   (11.05.2013 13:31) [Материал]
Всем Привет.

Недавно решил проблему с приёмом "Всех нужный данных (строки $GPRMC" и "$GPGGA)" с GPS приёмника - всё работает (прошивка выложена в №36 комментарии).
Теперь появилась необходимость рассчитывать расстояние (в метрах), зная "начальную широту и долготу" и "конечную широту и долготу". Пример использования: вводишь "конечную широту и долготу", и на экране пишется остаточное расстояние (в метрах) до "конечной точки", это очень удобно...
Пробовал использовать формулы из Интернета. Думал, скопирую формулу и всё заработает, но нет, BASCOM постоянно неверно подсчитывал (вероятно из-за округления значений). Поэтому пришлось написать свою формулу, исходя из формул в Интернете.
Результат меня радует. Погрешность, исходя из Яндекс-карты = допустимая для GPS.
Прошивка испытана в Proteus. Думаю, в Жизни тоже будет работать.
Расстояние выводится через UART-терминал, расстояние пишет в метрах (Мне так удобнее), каждый может изменить прошивку под Себя.

Может кому пригодится "Рассчитывать расстояние в метрах, зная начальную и конечную точку".
Прошивку Я закачал на Яндекс-диск:
http://yadi.sk/d/S43Wort54ihO8

+1   Спам
43 exersizze   (09.05.2013 19:29) [Материал]
У меня как раз была такая задумка - вбиваешь координаты места назначения, а на экране отображается оставшееся расстояние до него smile

42 exersizze   (09.05.2013 19:28) [Материал]
По теореме Пифагора - квадрат гипотенузы=сумма квадратов катетов. Катетами будет разница широт и долготы двух точек. Но надо будет решить проблему, что с увеличением широты изменяется и соотношение градуса к расстоянию (т.е. на экваторе один градус равен ххх км, а на другой широте уже будет равен ууу км.)

41 Valera18   (09.05.2013 18:55) [Материал]
А кто знает, как рассчитывать расстояние (в метрах), зная широту и долготу двух точек? То-есть (например) известна координата "дом" и координата "магазин", как теперь высчитать расстояние между точками.
Может есть какие-то формулы?

+1   Спам
40 exersizze   (06.05.2013 19:17) [Материал]
Привет, так по координатам же можно узнать)) даже улицу и дом;) ... в Самаре

39 aaleks   (06.05.2013 11:47) [Материал]
Привет Виктор ты в каком городе живешь?

+1   Спам
38 exersizze   (04.05.2013 22:30) [Материал]
Valera18, как всегда радуешь своими результатами:) отдельное спаисбо за трюк с дисплеем, он у меня тоже немного темновытый - видны вертикальные полосы если в одной строке есть символы а в другх нету.

37 Valera18   (04.05.2013 14:13) [Материал]
Заметил проблему у экрана "Nokia 5110" (аналог 3310), при подключение керамического конденсатора на 1мкф в корпусе 0805 (керамику большей ёмкости не нашёл) к контакту "VOUT" на экране, и напряжение от >3.3V до 4.2V = "задний фон" экрана темнеет (вид не красивый и информацию различать труднее). Поэтому нужно все "информационные провода" пустить через резисторы на 4.7 кОм, кроме питания (плюс и минус) и контакта "VOUT".
Это немного осветлит "задний фон" экрана, а информация будет понятнее.

Схема подключения резисторов на 4.7 кОм и керамического конденсатора на 1мкф в корпусе 0805:
https://yadi.sk/i/scYF9LDIeR74w
Теперь напряжение может быть выше 3.3V и до 4.2V, без затемнения экрана.

+2   Спам
36 Valera18   (03.05.2013 22:56) [Материал]
Всем привет.

На днях написал прошивку для опроса "всех нужных данных" с GPS модуля.
По началу пробовал опрашивать через Input (в Proteus работает, а в ЖИЗНИ нет), поэтому использовал способ опроса предложенный exersizze. Всё заработало в Proteus и в ЖИЗНИ.
СПАСИБО exersizze за статью (с его способом опроса), очень помогло.

Немного расстроило в прошивке от exersizze, что опрашивалась только одна строка "$GPRMC", но Мне нужна была ещё и строка "$GPGGA". Так-же не было "фильтров" по смещению цифр со своих мест (из-за изменения двухзначной цифры в трёхзначную), и не было учёта "часового пояса в сочетании с датой (високосный год)", так-как "время" и "дата" в GPS идёт по "Гринвичу".

Написанная прошивка сочетает в себе:
1) считывание строки "$GPRMC" и "$GPGGA".
2) написаны "фильтры" по изменении цифр (с двухзначных цифр в трёхзначные).
3) написаны "форматы" по максимально возможным цифрам для всех выводимых данных.
4) учитывается "часовой пояс" с переходом по дате (с учётом "високосного года").

Считываемые данные с GPS:
1) Hour, Minut, Second - время.
2) Shirota, Dolgota - широта и долгота.
3) Skorost - скорость в км/ч.
4) Azimut - путевой угл.
5) Day, Month, Year - день, месяц, год.
6) Gps_fix - какая позиция (0 = Данные не верны, 1 = Позиция зафиксирована, 2 = DGPS (повышенная точность)).
7) Spytniki - количество спутников.
8) Fly - высота в метрах.

Прошивка уже испытывается на "макетке" с внешним кварцем, пока всё работает:)
Заметил, что с "SMD антенной" работает лучше, а с "проводом =>5 см" - хуже. Потому что "SMD антенна" имеет землю (-), а провод - это просто провод (без земли).

В Моём случае "макетка":
1) при включение GPS на "LCD 16*2" выводится время, а остальное пишет "Scan...".
2) при захвате спутников (=>3 штук) показывает точное время, а вместо "Scan..." пишет "дату", "какая позиция", "количество спутников" и "высота над уровнем моря".
3) при потере спутников (<3 штук) показывает время, а остальное пишет "Scan...".
=>>> При необходимости, можно заменить выводимые данные на другие (из верхнего списка).

Ещё раз СПАСИБО автору exersizze, за предложенные способ опроса GPS.

Может кому пригодится, в Своё время Мне бы это пригодилось.
Прошивку Я закачал на Яндекс-диск:
http://yadi.sk/d/1vZfydt24YGdd

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






авторизация