Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: GPS логгер на ATMega128
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
acronis2000
Здравуствуйте.
Есть ли у кого-нибудь нароботки или ссылки на GPS логгер на ATMega128 ?
Требуется чтобы микроконтроллер опрашивал GPS приемник (формат) NMEA и писал на флэш память .

Или пример работы микроконтроллера ATMega128 с GPS приемником в формате NMEA ?

Буду благадарен за любую помощь в написании примера для данного микроконтроллера.
ps1x
GPS NMEA data logger - пользуйтесь на здоровье. smile.gif
acronis2000
ps1x - спасибо !!!

А есть ли еще какие либо ссылки по теме или еще варианты ?
заранее спасибо !!!
Alex Zhuravlev
Цитата(ps1x @ Oct 8 2007, 15:58) *
GPS NMEA data logger - пользуйтесь на здоровье. smile.gif

Только что-то там схемы не видать....
kanzler
Цитата(Alex Zhuravlev @ Oct 8 2007, 19:41) *
Только что-то там схемы не видать....

А у меня антивирусник стал ругаться на ссылку, сказал что там вирус :-(
IgorKossak
Цитата(kanzler @ Oct 8 2007, 20:15) *
А у меня антивирусник стал ругаться на ссылку, сказал что там вирус :-(

KIS 6.0 ничего не сказал.
Master
Цитата(kanzler @ Oct 8 2007, 21:15) *
А у меня антивирусник стал ругаться на ссылку, сказал что там вирус :-(
DrWeb 4.33.2 с последними базами также молчит.
Цитата(acronis2000 @ Oct 8 2007, 12:39) *
Есть ли у кого-нибудь нароботки или ссылки на GPS логгер на ATMega128 ?
Требуется чтобы микроконтроллер опрашивал GPS приемник (формат) NMEA и писал на флэш память .

Или пример работы микроконтроллера ATMega128 с GPS приемником в формате NMEA ?

Буду благадарен за любую помощь в написании примера для данного микроконтроллера.
Нужен готовый проект, или есть конкретные вопросы/проблемы?
Ничего сложного как в работе с GPS-приёмником, так и с записью на флеш, нет. На многие (не сказать на все) GPS-приёмники есть доки на оффсайтах. Если не ошибаюсь, в местной копилке должна валяться библиотека FlashFile с поддержкой FAT12/16 - если нужны файлы на SD/MMC-карте.
В общем, и с теми и с другими работал, и не только я (хотя уверен, найдутся те, кто скажет - не столько wink.gif ).
Спрашивайте - поможем, чем сможем.
ps1x
Цитата(acronis2000 @ Oct 8 2007, 16:25) *
ps1x - спасибо !!!

А есть ли еще какие либо ссылки по теме или еще варианты ?
заранее спасибо !!!

Пардон, действительно проект у него в стадии "разработки"...
Посмотрите, может это подойдет http://www.avrfreaks.net/index.php?module=...em_type=project
acronis2000
Цитата
Нужен готовый проект, или есть конкретные вопросы/проблемы?


Если был бы готовый - было бы счастье !!!

А так рад любым советам , а лучше примерам - если на с++ - то с меня beer.gif
Robin
Делал на atmega8, есть варианты как с флешем (at45db021b) так и с eeprom (24С512). Также есть вариант на atmega128 с использованием для хранения данных флеш-памяти программ..
vesago
Основное - написание парсера для нмеа. В большинстве приемников месаги автоматом выплевываются раз в секунду. Остается их ловить, разбирать и складывать. Я пишу в яре, поэтому не стал особо выдумывать и использовал библиотечные функции. Типа:

Код
                  switch(sscanf((char const*)&gps.rx_buf[0],                        "$GPRMC,%lx.%hx,%c,%hx.%hx,%c,%lx.%hx,%c,%hx.%hx,%hx.%hx,%lx,%*c",
                        &rmc->utc_time, &rmc->sss, &rmc->status, &rmc->latitude_high, &rmc->latitude_low, &rmc->ns_indicator,
                        &rmc->longitude_high, &rmc->longitude_low, &rmc->ew_indicator, &rmc->speed_high, &rmc->speed_low,
                        &rmc->cource_high, &rmc->cource_low, &rmc->data))
                  {
                  case 14:
                    GPS_Stack_Init();
                    return GPS_RX_MES;


                  case (14-3):
                    if(sscanf((char const*)&gps.rx_buf[0], "$GPRMC,%*lx.%*hx,%*c,%*hx.%*hx,%*c,%*lx.%*hx,%*c,%*hx.%*hx,,%lx,%*c",
                        &rmc->data) == 1)
                    {
                      rmc->cource_high = 0xFFFF;
                      rmc->cource_low = 0xFF;

                      GPS_Stack_Init();
                      return GPS_RX_MES;
                    }
                    GPS_Stack_Init();
                    return GPS_NOT_RX_MES;

                  default:
                    GPS_Stack_Init();
                    return GPS_NOT_RX_MES;
                  }


Вопрос у меня к делавшим. Как вы боретесь с флуктуациями? Когда объект стоит на месте, все равно скорость часто бывает отлична от нуля.
Robin
У меня было автомобильное применение, по изменению питающего напряжения делал вывод о том заведен или заглушен двигатель, соответственно если двигатель заглушен считалось, что авто стоит
kanzler
Цитата(Master @ Oct 9 2007, 01:54) *
DrWeb 4.33.2 с последними базами также молчит.

Странно. Как раз DrWeb и ругался на SCRIPT.Virus
acronis2000
Цитата
У меня было автомобильное применение, по изменению питающего напряжения делал вывод о том заведен или заглушен двигатель, соответственно если двигатель заглушен считалось, что авто стоит.


Robin- если есть возможность ,поделитесь информацией как ВЫ это делали технически(схемка) и программно - меня это очень заинтересовало .
VAHOO
Цитата(acronis2000 @ Oct 10 2007, 03:18) *
Robin- если есть возможность ,поделитесь информацией как ВЫ это делали технически(схемка) и программно - меня это очень заинтересовало .

мне тоже
Robin
Цитата(acronis2000 @ Oct 10 2007, 03:18) *
Robin- если есть возможность ,поделитесь информацией как ВЫ это делали технически(схемка) и программно - меня это очень заинтересовало .


Мерял ацп-шкой меги питающее напряжение, при заведенном и заглушенном двигателе оно отличается на ~0,5-1 вольт, соответственно выставлял в слове данных статус "стоянка", а софт в дальнейшем, опираясь на это не учитывал "ползанья" gps. Хотя, должен заметить, эта проблема наблюдается в основном на чипах sirf, на использумых ранее xemix "метаний" на стоянках практически не было.
Master
Цитата(Robin @ Oct 10 2007, 11:05) *
Мерял ацп-шкой меги питающее напряжение, при заведенном и заглушенном двигателе оно отличается на ~0,5-1 вольт, соответственно выставлял в слове данных статус "стоянка", а софт в дальнейшем, опираясь на это не учитывал "ползанья" gps. Хотя, должен заметить, эта проблема наблюдается в основном на чипах sirf, на использумых ранее xemix "метаний" на стоянках практически не было.
Хочется в ответ на такое решение набросать много ругательных слов twak.gif но не буду. А то вдруг santa2.gif (кое-кто) проснётся и начнёт творить twak.gif (нехорошее). Скажу лишь, что я бы так не стал делать вовсе, т.к. на одной машине одни уровни (падения), на другой - другие (это первое, что пришло в голову).
acronis2000, VAHOO, если хотите достоверно определять состояние остановки, используйте акселерометры.
Так же есть способ отключать у приёмника вход для дифференциальной поправки - говорят координаты на месте перестают прыгать.
По своему опыту могу сказать, что после пробы приёмников Leadtek на чипсете SiRFStarIII, решили перейти на них, т.к. они "в базе" не "прыгают" (тоесть дополнительно ничего не нужно настраивать).
Удачи!
Robin
-По поводу напряжения: да, разумеется оно разное на разных машинах, программа реагирует не на абсолютный уровень, а на его изменение за малый временной промежуток. Согласен, решение спорное, но делалось оно уже по готовому железу и это оказался единственный действенный метод без переделки аппаратной части.
-Акселерометры это ГУД, но для данной задачи экономически не оправданно.
-При неблагоприятных условиях приема прыгают ВСЕ приемники и SiRFStarIII (не важно, кто этот модуль собрал- leadtek, tyco или "дядя Вася из гаража") еще больше всех, за счет "задранной" чувствительности. В чистом поле ни кто не прыгает, это тоже понятно..
-а при чем тут вход диф.поправки??? и как он может влиять на "метания"??? 07.gif
acronis2000
Спасибо огромное ELECTRONIX.ru , спасибо всем участникам , которые приняли участие в данном топике - тема очень интересная и актуальная , и думаю что не только для меня. Я делаю самые первые шаги в освоении микроконтроллеров , в основе взял старшую ATMEGA128 и это мой самый первый проект и именно GPS логгер ! Я рад всем советам , подсказкам и просто ВАШИМ консультациям на данную тему. Буду благодарен и впредь тем кто поможет в реализации моего первого проекта. Я незнаком с ассемблером и был бы рад всем каким-либо примером кода с описанием на С++.

Еще раз всем ОГРОМНОЕ спасибо !
MDD
Цитата(Robin @ Oct 18 2007, 00:17) *
-При неблагоприятных условиях приема прыгают ВСЕ приемники и SiRFStarIII
-а при чем тут вход диф.поправки??? и как он может влиять на "метания"??? 07.gif


В GPS приемниках на SiRFStarIII есть так называемый режим Static Navigation.
Когда он выключен, приемник не меняет координаты на выходе, если скорость объекта менее что-то около 1м/c или смещение не превышает 50м. Т.е. другими словами это позволяет выбрать режим пешехода или автомобилиста.
В разных приемниках по умолчанию этот режим может быть включен или выключен.
Поэтому нужно искать протокол конкретного модуля и включать-выключать режим по вкусу.
vesago
Да, ребята, надо учить матчасть. Спасибо за инфу. Действительно, есть такое. Даже упоминается на мой премник на сирфе 2. Надо попробовать включить. У них и программа доступна на сайте, чтоб не ковыряться с сирфовским протоколом. А я отсеивал выборки по изменению азимута и скорости и что-то не дало хорошего результата. Все равно накапливались левые выборки. Думал уже отсеивать по изменению расстояния. Тут уж надо математически рассчитывать от длинны, долготы.
Robin
Static Navigation, а также софтовые алгоритмы определения стоянок на основании скорости, не решают проблему "метания", проверенно.. sad.gif В программе анализа трека у меня реализован софтовый фильтр, который вырезал до 90% метаний чипсета xemics, но с сирфом результаты значительно хуже из-за характера этих самых "метаний" - координата медленно ползет, и крайне сложно отличить это "ползанье" от реального движения.

В итоге для себя я определил 2 способа борьбы: 1) грамотная установка антенн (open sky). 2) анализ дополнительной информации о состоянии транспортного средства (зажигание, данные спидометра, акселерометры и т.д.)
brag
я тоже долбаюсь с сирфом. модуль telit ge863gps. аналогичная проблема с дрейфом координат. от мелких скачков спасает простой БИХ-фильтр на скорость. Yn=Y(n-1)+(Xn-Y(n-1))/K. но от катания, никак. когда координата начинает ехать, сразу исчезает шум курса и скорости и получается очень правдоподобное движение. static navigation включать не пробовал. разберусь как - попробую.
возможности присобачить акселерометр нету,разве что пробовать шум питалова мерять. хотя тож не корректно - машина может ехать и бз двигателя smile.gif
Alex_1811
Народ, никто не подскажет как посчитать растояние между точками GPS и направление от одной точки к второй.
Желательно реализация на AVR.
brag
в каких единицах?
Alex_1811
Цитата(brag @ May 24 2009, 22:47) *
в каких единицах?

Не понял что вы имеете в виду.
С GPS модуля я получаю такие координаты:
$GPRMC,163645.000,A,5015.8776,N,02840.6037,E,0.00,,120509,,,A*7F
brag
понятно. значт в градусах WGS84...
нужно, во первых, перевести в метры
http://www.navgeocom.ru/forum/lofiversion/...x.php/t573.html
http://www.levante.org/svarogich/ru/memo05.html
http://forum.sources.ru/index.php?showtopic=254641&st=15
http://www.astronet.ru/db/msg/1190817/node25.html
http://www.geo-garant.ru/cgi-bin/content.pl?p=130
http://gis-lab.info/qa/wgs84-sk42-wgs84-formula.html
http://window.edu.ru/window_catalog/pdf2tx...98&p_page=5
затем юзая обычную теорему Пифагора посчитать расстояние между 2мя точками.
далее построить треугольник "север","точка1","точка2" и посчитать угол на вершине "точка1". это и будет курс, только к нему еще знак надо присобачить(иными словами перевести из 180градусов шкалу в 360).
artem79
Цитата(acronis2000 @ Oct 8 2007, 12:39) *
Здравуствуйте.
Есть ли у кого-нибудь нароботки или ссылки на GPS логгер на ATMega128 ?
Требуется чтобы микроконтроллер опрашивал GPS приемник (формат) NMEA и писал на флэш память .

Или пример работы микроконтроллера ATMega128 с GPS приемником в формате NMEA ?

Буду благадарен за любую помощь в написании примера для данного микроконтроллера.


Сейчас делаю как раз нечто подобное. GPS - Mega128 - LCD (Nokia 1100) - Flash (AT45db321). Необходим мобильный вариант. Поэтому все это брахло замариновал в корпус от сотового. Вроде прикольно получается. На первый взгляд на сразу догадаешься что за девайс и для чего нужен. Сейчас фото нет. Позже выложу.
brag
не поленитесь вкинуть туда акселерометр
Клим
http://elm-chan.org/works/glg/report_e.html
Собирал когда-то на меге32.
Есть еще желание влепить туда экранчик тексотвый и говорилку с диктофоном. Чтоб можно было туда голосовые коментарии писать.
Насчет акселерометров тоже думал, как у них с потреблением ?
artem79
Цитата(brag @ May 30 2009, 20:35) *
не поленитесь вкинуть туда акселерометр



Тык он вроде и не нужен. laughing.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.