Иногда случаются велопокатушки и прочие «выползки» на природу и вот с некоторого времени я стараюсь писать пройденные маршруты — для статистики пройденного расстояния. Началось все с первых попыток писать трек с помощью Samsung GT-i5500, потом при помощи Lenovo P700i — но что то в софтовых трекерах мне не нравилось. Везде встречались какие либо минусы и порой они пересиливали все плюсы. И вот была поставлена задача — спроектировать и изготовить «железный» путевой самописец — GPS Logger. О нем и будет рассказано ниже.
Стал я рассматривать варианты покупки готового прибора под свои нужды — но я так и не смог найти нужный мне вариант. Китайские поделки с Aliexpress хоть и назывались логгерами, но при ближайшем рассмотрении оказывались или компасом грибника или устройством для слежения за мото/авто. Или слали координаты через GPRS на непонятные сервера и там формировали подобие трека. Все это меня не устраивало. Совсем. И было принято решение строить GPS logger самостоятельно — что хочу, то и накручу. А что из этого получилось — постараюсь описать тут.
На просторах Aliexpress было обнаружено несколько вариантов модулей GPS — вроде бы все они подходят под поставленную задачу — выдают поток данных в стандарте
NMEA-0183 [1]. Но вот цена разнится в два и более раз. Что делать? Выход напрашивается сам собой — брать тот, который дешевле :-). Сказано — сделано! В итоге был заказан вот такой модуль:
В описании чипа есть фраза: «старый чип» — выпытал у китайца значение этой фразы — просто старой ревизии модуль. В отзывах к лотам на али иногда встречаются фразы — якобы приходит паяный, немного б/у и т.д… Мне пришло все в отличном состоянии, модуль без следов пайки. размеры модуля (без учета антенны): 36 х 24 х 3,35 мм. Размеры антенны G165: 20,64 х 7.07 х 6,79 мм. После осмотра платы GPS-приемника и снятия размеров — подаю питание на модуль и при помощи
TTL конвертера на CH340G [2] и
утилиты для ПК u-Center [3] подключаю GPS приемник к ПК. Немного потанцевав с бубном вокруг настроек сом-порта получаю такую картинку:
Спутники нашлись, координаты определены, модуль работоспособен. Проверяю формат вывода данных в NMEA-0183 — формат строки $GPRMC полностью соответствует стандарту. А это значит — пока откладываю модуль в сторону и приступаю к разработке печатной платы.
Печатную плату рисовал по
этой схеме [4], а если точнее — данная заметка и была взята за основу будующей конструкции.
От схемы-первоисточника отличия незначительные. применен другой стабилизатор напряжения питания —
LM1117 [5], кварц на частоту, отличную от 8 МГц с соответствующими правками в коде, светодиоды другого цвета и соответственно резисторы для этих светодиодов, так же применена карта MicroSD и картоприемник для нее.
ATmega128 [6] — тут все без изменений — была заказана по сходной цене на том же Aliexpress. Добавлен модуль заряда литиевой батареи на
TP4056 [7]. Пластиковый корпус куплен на радиорынке. Результат компоновки элементов на плате представлен на рисунке:
Что тут есть что:
—
GPS IN — вход данных от GPS-приемника (подключается к TX на модуле)
—
GND — общий
—
Vcc + — питание, подается через кнопку с фиксацией (установлена вне печатной платы)
—
LED1, LED2, LED3 — индикаторы состояния и работоспособности логгера
—
KEY — кнопка управления (установлена вне печатной платы)
Даже на этом этапе все понятно со схемой — обвязки у контроллера не так уж и много. Но я все же постараюсь изобразить схему принципиальную — так как в данном варианте печатной платы была замечена ошибка — с сигнальными линиями для внутрисхемного программированния!!!
Подключать программатор надо по даташиту и не ориентироваться слепо на приведенный выше рисунок печатной платы!!!
Травлю плату, перенеся рисунок по технологии
ЛУТ без утюга [8]:
При помощи суперклея, напильника и кусков корпуса магнитофона «ПРОТОН» допиливается корпус для GPS-логгера. В результате — получаем вот такую конструкцию:
Принципиальная схема. За основу, как уже упоминалось ранее, был взят подобный
DIY логгер [4]. От авторской конструкции, описываемая здесь — отличается незначительно (в плане «железа») и значительно (в плане «софта»). Я свой вариант схемы на черновике накидал и по нему собиралась и отлаживалась конструкция, чистового варианта схемы нет — как и у большинства DIY-конструкций. Выход простой — берем схему-первоисточник и немного подправим ее:
Что тут что и как оно работает. После подачи питания — модуль NEO-6M-001 стартует и начинает активно искать спутники. МК стартует, опрашивает карту памяти — если все в норме — программа выполняется далее, если нет — то программа останавливается и загорается красный светодиод. Если инициализация карты прошла успешно — МК пытается найти на ней файл с настройками — CONFIG.CFG. Если файл найден и считан — программа берет настройки из этого файла — номера порядковые записываемых файлов (0-9999), коррекцию часового пояса (UTC+2 или любое другое значение), расстояние между записываемыми точками трека (в метрах) — частота записи точек в файл — через 10, 20 50, 100 метров и т.д. Если этого файла нет — например при первом включении логгера — программа МК создаст его с параметрами «по умолчанию»: порядковый номер — 0, коррекция времени — «3» и точность записи — «10,0». Позже можно внести изменения в файл настроек.
В это время модуль NEO-6M-001 ищет спутники… Если они найдены — на карте создаются файлы .txt, .kml и .gpx, мигают все светодиоды одновремено и гаснут — начинает мигать желтый светодиод. В момент нахождения нужного количества спутников модуль NEO-6M-001 выдает строку $GPRMC в формате NMEA-0183 — с временем и датой, с координатами, скоростью, высотой… И из этой каши программа МК выбирает и формирует нужные нам данные для записи их в .txt, .kml и .gpx файлы.
Спутники найдены — мигает зеленый светодиод — идет запись координат в файлы. И далее если расстояние между двумя точками трека более, чем указанно в CONFIG.CFG — запись координат в файл идет. Если данные с GPS-модуля валидны — запись координат в файл идет. Если одно из этих условий (в любой последовательности) не выполняется — то программа МК пропускает запись координат в файл и ожидает новой посылки с данными от GPS-приемника.
Идет запись — во время движения мигает зеленый светодиод. Остановка — мигают одгновременно желтый и зеленый. Таким образом — во время стоянки в трек не пишутся лишние данные.
Если появилась необходимость завершить трек и выключить логгер или просто начать новый трек — жмем кнопку KEY — загорается зеленый светодиод — можно выключить логгер — файлы .txt, .kml и .gpx финализированы и успешно записаны на карту памяти (карта может использоваться любая micro sd, объемом до 2Гб). Для начала нового трека — включаем питание логгера. Если вдруг питание логгера было отключено без нажатия на кнопку KEY или разрядилась батарея или еще по какой причине случилась остановка записи — файлы с пройденным маршрутом прийдется финализировать в ручном режиме — в любом текстовом редакторе на ПК.
На схеме не указаны —
модуль зарядки TP4056 [7] — подключенный к Li-Ion аккумулятору
SAMSUNG ICR18650-26F [9] с модулем защиты от батареи сотового телефона. Как это все соединить — я думаю не стоит подробно описывать… Единственный момент — ток заряда в модуле TP4056 настроен на 500 мА.
И немного результатов работы логгера:
Вот так выглядит содерджимое карты памяти логгера: файл CONFIG.CFG — настройки логгера. Файлы GPS_ХХХХ.KML, GPS_XXXX.GPX и GPS_XXXX.TXT — соответственно файлы с записанными координатами и другими параметрами пройденного пути.
В результате получилась довольно полезная конструкция. К покупке данный модуль я бы рекомендовал на 99% — все в нем отлично — работает, сигнал от спутников прнимает, цена — вполне адекватная. Но все же — 1% — желательно брать модуль, у которого антенна жестко зафиксирована на плате — это исключает излом и обрыв ВЧ кабеля между антенной и приемником. Стоит ли брать подобные модули с поддержкой ГЛОНАСС, акселерометром и цифровым компасом (есть и такие) — решать нужно исходя из требований на конечное устройство. Все эти «плюшки» увеличивают цену GPS-приемника.
Огромное спасибо
DooMmen'у за помощь.
UPD:
По расчету, время работы устройства — примерно сутки автономности.
Ток потребеления 60-70 мА. Соответственно при батарее 2600 мА*ч имеем: 2600/70=37,1428 ч.
Использованные компоненты, документация, прошивка ATmega128 и прочие полезности
Сам я не пользовался, может у кого есть опыт работы с такими (думаю стоит он того или нет)?
Но как я понял, это тот же A6 + 3 доп. используемые ножки (в A6 они были NC), одна из ножек просто GPIO. 2 другие — это антенна и TX 9600 для NEMA (RX пин отсутствует, RX через RX/TX управления). Еще есть 3 доп. команды, для вкл./выкл. GPS, AGPS и частоты обновления NEMA.
Тут что нашел:
Datasheet (ну очень скудный): raymondtunning.files.wordpress.com/2016/09/a6_a7_a6c_datasheet-en.pdf
Команды: wiki.ai-thinker.com/lib/exe/fetch.php/modules/datasheet/a6/ai-thinker_a6_a7_a6c_at_v1.02.pdf
Краткий обзор: www.youtube.com/watch?v=H7eBurjWC0k
По обзору видно что на антенну не подается питание, т.е. бессмысленно использовать активные антенны, это минус.
абсолютно независимое устройство, сделанное своими руками конкретно под задачу.
Их никогда корректировать не нужно.
Всегда точная дата и время.
Данный модуль — это инструмент.
Область применения ограничена лишь руками и фантазией.
Вот мой логгер, который брал в поход.
Это зарядка для Li-Ion АКБ 1А на основе TP4056 с защитой.
Как только появляется питание, включается запись.
Если просто оставить АКБ в ней и отключить внешнее питание, модуль начнёт брать питание с батареи.
Почти шпионский гаджет.
С низу закрывается штатной крышкой и внешне неотличим от обычной зарядки.
Использую в машине, постоянно включена через USB для зарядки 18650 из фонариков. За одно всегда можно достать флешку и посмотреть где ездила машина без меня.
Я этот логгер делал в спешке, за день до выезда.
Как трекер будет использоваться крайне редко, а вот как зарядкой он на постоянку.
Мне становится просто смешно, когда начинают предлагать использовать готовые решения.
1. Это не спортивно.
2. Запилить своё — бесценно. Получаешь знания и опыт.
3. Цена.
NEO6M V2 — 378р.
Arduino Pro Mini — 99р.
Micro SD Module SPI — 32р.
TP4056 с защитой. -22р.
Корпус — 50р.
Итог: 582р.
Замечательно получилось.
Но…
1) чем все таки готовые коробочные девайсы не подошли? например HOLUX M-241. Два ходовых дня от 1 АА. А если хороший ак поставить то и три дня будет. + информация на экране, о скорости, времени + по синезубу данные отдает и компактнее. Памяти хватает на 2 ходовых недели
2) сутки от 18650 маловато. Может поиграться с режимами? Допустим снимать точку 1 раз в 3 сек. Или чуток пожертвовать точностью, ради меньшего потребления. Может у плат более дорогих будет потребление ниже. Для логера сутки маловато будет.
з.ы. время работы — как пример откатали велопрогулку «Осенний велодень 2016» — это я в 9-00 выехал из дома, включил логгер, катали-катали-катали (включая простои и остановки), домой вернулся к вечеру — примерно к 20-00. И выключил логгер. С тех пор были еще покатушки — логгер я не заряжал.
з.з.ы. коробочные варианты — цена на них не устраивает.
Для себя давно уже задумал малопотребляющий модуль + акселерометр, чтоб гасить его пока нет движения.
там по расчетам — 18650 хватит на 3 недели-месяц.
небольшие затраты на мегу, еще миллиампер 5… все равно 3 дня вполне протянет.
Проснуться раз в секунду и принять пакет НМЕА на 115200 — это 5мсек * 3ma ~+15 мка
Писать под ардуину — да будет не так красиво
тут просто проблема, что уарт не видит изменения этотого первого бита и весь байт не принимает как ошибочный
— LM1117 заменить на что-то поприличнее, например, LP2985 или MCP1700. Этот «кушает» лишние 5мА минимум.
— С баскомом не знаком, но судя по прошивке, контроллер не спит.
— В дополнение к предыдущему пункту — при включении конфигурировать GPS приемник: увеличить скорость порта, отключить ненужные «телеграммы»
— Увеличить номинал резисторов подтяжки светодиодом и мигать импульсами покороче
— был только 1117 в наличии
— да
— может этот чип так себя похабно ведет — оключил все что можно (все, что можно отключить, не влияя на стабильность работы модуля), скорость порта 9600 — более — начинаются аномалии с работой порта приемника
— с режимом работы индикаторов — можно сделать по предложенному варианту.
Кому интересно — забирайте сорцы и кодьте как будет Вам удобно.
да дороже, но на руке, пишут трек отлично,
если с кардио датчиком, пишет все с пульсом, накладывает на карту.
PS есть экспорт в Strava
На день хватит, Зарядка микроUSB можно если что от банки силы зарядить.
8 часов не так и мало. Я думал меньше.
Автор очень крут в том, что делает своими руками свои хотелки, я многократно восторгаюсь его умениями, но для себя смысла в такой самоделке не вижу.
Я в детстве занимался радиоэлектроникой. Паяли всякие сирены, регуляторы мощности. Всё это продавалось в готовом виде. Однако насколько было интересней собрать БП, который удовлетворял мои запросы (готовые все были шаблонные и то одного, то другого в них не хватало для полного счастья), И вот, поковырявшись 3 дня, я собираю БП, который полностью удовлетворяет моим желаниям. Мало того, что я получил НУЖНУЮ мне вещь и по моим запросам, так я еще получил неописуемое удовлетворение от процесса изготовления. И денег сэкономил порядочно. И после этого ни один знакомый не задал мне вопрос — НАФИГА? Ведь ты мог купить готовый! Наоборот все были в восторге. И заказывали себе такие же. Я еще и денег потом заработал :-) Так что не всегда готовое решение есть самое оптимальное.
Вы пишете, он паяет, все всё делают не так тысячи лет уже как )))
Ну и приведенный довод остаться в самый неподходящий момент без связи из-за логгера — самый весомый, конечно.
А, автор сделал сам! Автор молодец! Такие энтузиасты как раз и разрабатывают электронику — те же смартфоны…
Даже на этом этапе все понятно со хемой
Сам много и часто катаюсь круглый год на велосипеде, записываю треки смартфоном.
Использую сервис www.sports-tracker.com Попробуйте, позволяет писать данные с bt датчиков скорости, каденса, сердечного ритма. Фото, сделанные из приложения, расставляет по маршруту на карте, чем меня лично и привлёк данный сервис.
Есть ли более быстрые? 10, 20?
Зато у меня с экранчиком. :)
Ваш логгер — GPS-логгер i-gotU GT-820 Pro — это с хабра который?
Тут весь вопрос в прямизне рук и том, что проще — заплатить за готовую железку или сварганить своё.
Сегодня, наверное, я бы попытался вашим вариантом воспользоваться. Всё же три года назад доллар совсем другой был…
А GPS как будет отключаться: как Warm или как Hot?
Сам имею Holux M-241, покупал давно, специально для походов. До сих пор пользуюсь.
Удобство в том, что включил, бросил в карман/рюкзак и не думаешь ни о чём. Потом достаёшь, выключаешь. Остаётся на компьютер сбросить.
Минус единственный, что нельзя как навигатором с картой сориентироваться.
Но с другой стороны, он стоит 60-65 уе. А за 90-110 уже можно взять бу навигатор с поддержкой нормальных карт.
Тут речь не о самой плате, на которой распаян приемник и минимальная обвязка, а именно про приемник. Он уже до этого где-то трудился — отсюда и цена. Да и на фотках мне сразу же показалось, что он б/у, поэтому и полез читать обзор — так ли это. Но раз пашет, то вообще все отлично. Надо будет прибарахлиться по случаю. Спс.
И в таком положении логгер помещается в карман органайзера рюкзака (когда катаю с рюкзаком) и в таком же положении размещается в кармане джерси (когда катаю без рюкзака) — все отлично работает и проблем не замечено.
— разработать макет платы и собрать устройство в целом как оно есть — вышло по цене как купить один контроллер ATmega128 в оффлайне на радиорынке.
— что бы поместить код, написанный на бейсике в 328 мегу — его пришлось долго перерабатывать (если под 128 мегу код в данном случае был переписан на 90% по сравнению с оригиналом, то под 328 мегу код переработан был на 200%).
Модуль на атмеге 128 по ссылке — просто гигант микроконтроллерной техники :-)
mySKU.me/blog/aliexpress/39653.html
mySKU.me/blog/china-stores/42223.html
Респект и уважуха Автору!
Посмотрев на Вашу работу понял, что мне можно было бы сделать лучше, даже если не брать во внимание изготовление печатной платы.
Сейчас хочу переделать в блютуз-датчик каденса, сигнал с которого бы принимала какая-нибудь программа вроде рунтастика, но не знаю протокола.
Паять вроде могу, в ардуинстве не разбираюсь от слова совсем.
Эх, думал обойтись малой кровью и разжиться хенд-мейдовым GPS-ом. В телефоне GPS работает не очень стабильно, трек «прыгает».
Вам спасибо за ответ!
1. нужно 7 ножку снять с GND, для этого нужно феном (я грел снизу платы) снять сам модуль и отрезать 3 или 4 перемычки на GND.
2. на 7 ногу подать +3,3 с 5-й ноги IC1
3. подключить usb разъем на 5 и 6 ножку модуля (D+ и D-)
4. минус usb на GND модуля (куда удобней подпаять)
5. плюс usb на 1 ногу IC1
Все!
chris-stubbs.co.uk/wp/?p=252
резисторов я не ставил, но для безопасности модуля лучше поставить что-то типа STF202
>> МК пытается найти на ней файл с настройками — CONFIG.CFG
пример файла или его описание не сложно сделать.