аналог Nikon GPS

GPS приемник для фотоаппаратов NIKON

Появилась идея сделать GPS, вместо оригинального NIKON.
Для этого был применен gps-модуль EB-500
по схеме мало чем отличающейся от datasheet.
Для хранение альманаха и настроек вместо батарейки используется ионистор (supercap) 0.47F


Выполнено на двухслойном стеклотекстолите FR-4

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

Для подключения был использован разьем от проводного пульта заказанного на DX за 4 бакса, если для D90,D500 то такой. Правда разьем пришлось разбирать чтоб подключится к нужным контактам.

Фотоаппарат принимает протокол NMEA 0183 на скорости 4800bps.
Для определения данных достаточно $GPGGA… и $GPRMC… строк.

идея очень даже реализуема и потребует с минимум затрат.
Но в процессе выполнения появилось несколько проблем а именно:
Модуль eb-500 в строке $GPGGA… выдает количество спутников одним символом к примеру 6 спутников
$GPGGA,010101.000,0001.0001,N,000002.0002,E,1,6,1.49,222.5,M,27.8,M,,*5D

nikon не воспринимает такую посылку
Количество спутников должно состоять из 2-х символов
$GPGGA,010101.000,0001.0001,N,000002.0002,E,1,06,1.49,222.5,M,27.8,M,,*5D

Модуль собран, отступать уже некуда :)
Для решения задачи пришлось довесить AVR с наличием аппаратного USART. В моем случае это Atmega48PA.

Конечно «вторым этажом» выглядит не очень эстетично

Задача микроконтроллера принять обработать строку $GPGGA и в 6-ю позицию (разделяются запятыми) добавить «0».
Простым добавлением символа 0 не получится потому как портится контрольная сумма строки. Микроконтроллер на ходу и пересчитывает CRC и подменивает его в конце строки.Вычисление CRC происходит как результат XOR.
Для работы с USART в режиме кольцевого буфера очень пригодилась статья AVR. Учебный курс. Передача данных через UART

Раз у нас появился контроллер то на него и возложим инициализацию модуля eb-500.
Мне попадались модули из разных партий, более ранние были настроены по умолчанию на 9600, из новой партии на 115200.
В любом случае им надо указать перестроится на скорость 4800.
$PMTK251,4800*14
Но перед этим надо отключить лишние строки данных оставив только $GPGGA,$GPRMC
$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28

при первом включении надо поменять скорость обмена gps-модуля и отключить лишние строки данных NMEA. потоку как на скорости 4800 модуль не успевает физически передать всю информацию в данном случае для нас избыточную, такие как информацию о спутниках и уровень их сигнала.
Для передачи команды модулю пришлось принять нестандартное подключение TX от мк, ведь оно уже у нас задействован на выход данных к фотоаппарату.
Для этого я воспользовался возможностью контроллера менять вход-выход портов
и внешних резисторов R3 R5. при нормальной работе DP7 установлен в лог 1.
Когда нам нужно передать данные gps-модулю настраиваем порт на вход
Поначалу я пытался сразу gps-модулю дать команду перестроится на 4800. Но как оказалось, готовность модуля принимать команды после появления питаниия не раньше чем через 1 сек. Поэтому алгоритм инициализации сделал по другому.
При вкл USART на 4800, если по истечении 2-3сек не видим заголовка $GP…
значит перестраиваем мк на 115200 и выкидывваем команду на изменение скорости и снова возвращаемся на 4800. Если по истечении 2-х сек снова ничего не получаем то тогда делаем инициализацию на 9600 и возвращаемся на 4800 и обрабатываем поток данных.
схема зеркальный ЛУТ и прошивки для модулей 115200 и 9600 в одном архиве
  • +3
  • 13 декабря 2011, 01:01
  • yurcoua
  • 1
Файлы в топике: nmea_uart.zip

Комментарии (24)

RSS свернуть / развернуть
А к каким никонам подходит? От чего был взят разъём такой?
0
  • avatar
  • ACE
  • 13 декабря 2011, 06:05
И кстати распиновка разъема не помешала бы тоже. Алсо 115200 везде записана как 11520.
0
прошивки для модулей 11520 и 9600
А что мешало переключиться на 9600, послать команду настройки, потупить немного, чтобы модуль прожевал мусор и приготовился принимать данные если частота была неправильная, переключиться на 115200 и еще раз передать команду настройки? Модуль по идее не должен реагировать на битые посылки.
0
  • avatar
  • Vga
  • 13 декабря 2011, 06:35
Подправил статью. и прошивку. Таки при первом включении когда модуль не проинициализирован вероятность тупления и перебора скоростей может занять до 4 сек. При последующих включениях когда модуль на 4800 никаких задержек не происходит.
список фотоапаратов такой же как и на оригинальном GPS-1
* Camera Body D2Hs
* Camera Body D2X
* D5100
* D7000
* D200
* D3X
* D90
* D3
* D2Xs
* D700
* D3100
* D5000
* D300s
все дело только в разьеме подключения
0
Важно побольше переходных отверстий соединяющих земляные площадки с двух сторон текстолита.
Не могли бы вы пояснить почему это важно?
0
Если в двух словах то GPS приемник высокочастотное устройство, где даже толщина проводника играет роль а точнее его волновое сопротивление. Ответ найдете в литературе по высокастотным цепям. Я применял рекомендации по GPS модулям Ublox. там очень развернуто описано.
границы области заземления должны быть окружены плотной линией отверстий
В этом лично убедился когда сделал демоплатку на скорую руку с минимум земляного полигона.
Если обратили внимание то проводник RF имеет увеличенную ширину а также расстояние до екрана равной толщине стеклотекстолита в результате получаем волновое сопротивление 50 Ом.хотя длина проводника предельно мала но все же влияет.
0
смотрю и думаю — а нафига фотику надо такое устройство? Он что, пишет точные координаты на снимок, рядом с датой?
0
Да есть фотоаппараты которые пишут в метаданные фотографии геолокационные данные. Потом всегда можна посмотреть где сделана была фотография
ps: многие сматрфоны комуникаторы имеющие встроенный gps так же могут прописывать данные в фотки.
0
Вот что то подобное
0
Кстати, а зачем ионистор?
0
Вместо батарейки. Без него приемник каждый раз при включении по полчаса спутники искать будет.
0
что-то архив не качается :(
а за статью — спасибо, интересно и полезно!
0
Внизу поста список аттачей, слей оттуда. Автор архив обновил, а ссылку поправить забыл.
0
спасибо, не доглядел.
0
уже подправил
0
Отличная вещь!
Но, автор слизал проект с www.petermillerphoto.com/nikongps/nikongps2.html#Overview
0
не отрицаю, идея была подсмотрена с этого сайта что таки реально самому сделать ;), Но реализация была с применением популярного в последнее время модуля EB-500. Причем пришлось довесить контроллер для изменения скорости в 4800 и привести в нужный формат данные о количестве спутников.
0
Согласен, для изучения атмела, можно и огород городить. Но лучше взять другой модуль GPS с нормальной строкой и дешевле. Но в целом творчество я поддерживаю,молодец, создал трудность и сам преодолел.
Для информации на DX есть готовый за 74,70$( www.dealextreme.com/p/jyc-n-769-n1-gps-receiver-for-nikon-d2x-d2xs-more-54735 )
0
Поздравляю, Вы мистер, теперь тоже опубликованы в терре:)
Можно добавить еще одну строчку плюсов в резюме:))
0
  • avatar
  • PRC
  • 13 февраля 2012, 18:42
Итого, есть две платки, на одной висят с краю {GPS_IN,LED_IN,GPS_OUT,NMEA_OUT,LED_OUT}, на другой, тоже с краю — {RXD1,TXD1,PPS,TXD0,RXD0}, а на USB-разъем, которого ни на одной фотографии не видать, выведены TXD0 и RXD0, кроме того, есть еще разъем фотоаппарата — {VCC,RXD,GND}… хотелось бы знать — как всё это хозяйство д.б. соединено? И ещё хотелось бы знать — что это за секретная кнопочка J3 (Azimut), о которой ничего не говорится в статье?
0
в схеме нет usb это название разьема «перекочевало» с моей предыдущей схемы.
В итоге это просто 4пиновая площадка для подпайки проводов от разьема фотоапарата.
Платка верхняя крепится термоклеем в народе «китайскими соплями» :)
Что касается всех перечисленных сигналов (RXD1,TXD1,PPS,TXD0,RXD0)на основной платке, то они обозначены с избыточностью, потому как у меня схема рисовалась с универсальностью подключения и на другие проекты.
Основная платка с дополнительной соединена только сигналами TXD0--GPS_OUT и RXD--GPS_IN обычними перемычками, ну и питанием.
На дополнительной платке также присутствует избыточное обозначение сигналов, потому как была задумка вместо GPS мигать разными вариациями.

Что касается кнопки azimut, то это так и осталось на уровне идеи. Была задумка вместо азимута координат подставлять температуру иземренную внутреннми термодатчиком мк. Тоесть потом в данных фотки можно было наблюдать не только координаты фотки но и температуру на улице когда была сделана фотография :)
0
Ясно, спасибо.
Насчет 'азимута', забавно. :) А что, какие-то особенные температуры у вас бывают?: о)
0
У керамических антенн есть липучка, я ставил на неё, но вот подумал — правильно ли это? Может нужно как-то заботиться о том, чтобы слой противовеса антенны гальванически контактировал с земляным полигоном на плате? Хотя, площадь/емкость там д.б. нехилая… как правильно?
0
Здравствуйте!
Подскажите пожалуйста где можно скачать архив?
0
  • avatar
  • klnd
  • 17 декабря 2014, 15:43
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.