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

Направлятор

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

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

 Схема строится на микроконтроллере ATMega64 с тактированием от внешнего кварцевого резонатора на 11,0592 МГц. За работу с GPS отвечает NEO-6M от U-blox, это хоть и старенький, но очень распространенный и недорогой модуль с достаточно точным определением координат. Информация выводится на дисплей от Nokia 3310 (5110). Еще в схеме присутствуют магнитометр HMC5883L и акселерометр ADXL335, о них расскажу позже.

 Итоговая схема устройства

 

печатная плата:

 

 Схема и плата спроектированы в системе EasyEDA, глянуть на проект можно здесь

 

  

 

 Перед прошивкой контроллера рекомендую отключить GPS приемник, так как ножка RXD совмещена c линией MOSI и модуль может начать отправлять данные во время прошивки, что вызовет ошибку в загружаемой программе.

 Включение и выключение устройства происходит длинным нажатием на кнопку S5. После включения и поиска спутников (при холодном старте может уйти до 10 минут или даже больше) мы можем посмотреть текущие координаты, нажав на кнопку S2.

 

 Координаты конечной точки можно посмотреть нажав на кнопку S3.

 

 Нажав кнопку S4 попадаем в меню сохранения точки. Сохранить точку можно двумя способами: сохранить текущие координаты

  

 

или же забить координаты вручную

   

 Ввод интуитивно понятен, по очереди изменяем градусы, минуты и секунды. Выбранное значение для редактирования мигает.

 

 

 Вернуться в режим следования к точке можно по короткому нажатию на кнопку S5

 

 

 Теперь об использовании магнитометра и акселерометра. Для расчета азимута используются данные полученные с GPS приемника, поэтому в случае если рассчитать координаты не возможно (например если спутники не видны или их мало) пропадает возможность и рассчитать направление в котором нужно двигаться, чтобы придти к точке. И первоначально моя задумка была в том, чтобы использовать магнитометр как вспомогательное средство для указания курса.  Но столкнулся с некоторыми трудностями.

 Во-первых. Кто знакомился с работой цифровых магнитометров знают что, точность их данных зависит от того в каком положении они находятся. Поэтому для корректной работы в любом положении необходимо использовать акселерометр, который бы давал более точную картину проекции магнитного поля на все три оси магнитометра. Возможное решение этой задачи я подсмотрел в одном журнале. но пока не осилил перенести весь расчет в Bascom (может кто-то из энтузиастов возьмется?).

 Во-вторых, заметно сказывается различие магнитного склонения в разных частях Земли. Например в Поволжье магнитное склонение составляет 13°, а на другом конце страны склонение уже 11° и в другую сторону.  А ведь есть еще и магнитное наклонение - когда линии магнитного поля входят или выходят под углом к горизонту, и много других факторов влияющих на показания.

 

     

<<< расчет >>>

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

 

 Осталось распечатать под устройство корпус, его модель я выложу позже, а пока о результатах уличных испытаний. Девайс получился очень интересным и вполне помогающим выйти к сохраненной точке. Но нужно понимать, что миллиметровой точности ожидать не следует. Ошибка определения GPS координат всего в одну секунду даст неточность определения положения в 20 метров. Также погрешность неизбежно накапливается при округлении в математических  расчетах.  Но тем не менее устройство даже в городских условиях плотной застройки позволило вернутся к точке с точность несколько метров.

 

 И напоследок немного фоток с уличных испытаний

    

 

Используемые компоненты

GPS модуль NEO-6M

ЖК дисплей

Магнитометр HMC5883

Акселерометр ADXL335

 

Исходники и прошивка

 

UPD:

вот такой получился корпус для направлятора

 

 Архив с файлами модели (SolidWorks + STL)

 

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

 

Скачать обновленную прошивку

 

Категория: Проекты | Добавлено: 11.02.2017
Просмотров: 6031 | Комментарии: 52 | Теги: HMC5883L, atmega64, GPS, схемы | Рейтинг: 5.0/9
Всего комментариев: 521 2 »
52 rom-i   (06.09.2017 20:39)
Получил второй NEO6. Повезло Китайцу, что первой сторокой идет RMC. Направлятор заработал. Но в модуле нельзя ни чего изменить. Китаяц обманул, и спор ему. Снял прошивку с ппзу 24С32. Оказалось, что стоит она чисто для внешнего вида(как в оригинале). В ней нет ни чего, и для Китайского модуля не надо. Продолжает работать без нее, без изменений. Все расчитано на лоха. По картинкам на Али не определиш какой модуль стоит(NEO, или КИТАНЕО). Наклейка такая же на железке. Если на Китайскую плату припаять оригинальный модуль, все будет OK. Работа направлятора понравилась. Китайсий модуль тож не совсем плох. Спутники ловит даже в подвале деревянного дома. Для других разработок милое дело.

51 rom-i   (21.08.2017 15:29)
Проект появлялся, и попробовал переписать пругу под седьмую строку. Конкретного форума на Bascom avr не нашел. Упираюсь в буфер обмена по UART.Сама переменная Stryng на меге32 позволяет 600 символов. Но как выковорить ее из буфера, не знаю. Попытки все не удачны. Компилятор берет, в железе не работает. Протеус не может работать в реальном времени. Тем более прошивка использует power down. Сон меги до нажатия на кнопку. Протеус сл сном работать не может. Нужен ответ опытного программиста. Как из буфера достать седьмую строку ответа. Вообще заказал еще модуль NEU6. Китаяц кричит, что можно менять установки. Обошелся в 475 р. Но не факт, что не закончится спором. В дешевых модулях доступ к памяти закрыт. Есть вариант выпаять ее, и прошить отдельно. Но где взять прошивку. Ведь там чип используется не NEO.По этому знают тока Китайцы. Или достучаться до программиста на Баском авр. На бейсике нет каких-то кодов. Он довольно прост. Но нужно искать правильный подход.

0  
50 exersizze   (20.08.2017 21:18)
Ну зачем же забрасывать?) Изучайте язык, оптимизируйте код под себя.

49 алексей1984   (18.08.2017 18:09)
очень жаль, что же остается забросить данный проект?((( в программировании полный ноль.

48 rom-i   (17.08.2017 16:44)
Ни чего с лишними строками сделать не получится. Это такие модули продают на Али. Там есть подпись down. То есть с модуля можно только считывать. Которые можно программировать стоят дороже. Они как бы оригинальные.

47 алексей1984   (21.07.2017 20:40)
у меня тоже модуль шлет 10 строк, лишние никак не могу отключить, не подскажите как?

46 алексей1984   (21.07.2017 18:31)
Помогите пожалуйста, собрал сей девайс, при включении проходит заставка, выходит компас и уходит в вечный поиск, на кнопки никак не реагирует. при припаивании резистора на 26 ногу контроллера приборчик даже не включается, подскажите куда копать? подключал по uart gps модуль рабочий.

45 rom-i   (17.05.2017 19:28)
GSV
Для меня это сложновато. Не знаю многих команд. Без подписей много не понятно.

44 GSV   (12.05.2017 18:47)
rom-i
Делал приём строки $GPRMC без буфера,может пригодится https://yadi.sk/d/yaBBgWuW3J62QV

43 rom-i   (12.05.2017 18:12)
С седьмой строкой не получилось. Не успевает контролер. Пытался переписать пругу под мою первую строку $GPGGA по количеству символов, работать начинает. Но эта строка не стабильна по количеству символов. Получаятся фарш в отображении. Да, и там нет азимута. Выключить лишние данные при передаче в приемнике, не получается. Жму дисаблет, в ответ тишина. Автор в программе использует только $GPRMC. Может приемник дохлый, или не умею пользоваться u-center.

42 rom-i   (12.05.2017 12:35)
Хочу попробовать взять седьмую строку. Семь раз прописать Getline S. В моем случае $GPRMC седьмая строка. Переписывать подпрограмму под строку $GPGGA. Не хватит умения. Думаю заблужусь. https://yadi.sk/i/OTbakDpL3J5Dup

41 rom-i   (12.05.2017 12:04)
сравнил посылки данных с вашим скрином. Думаю дело в этом.
скрин exersizze / мой скрин
RMC / GGA
VTG / GLL
GGA / GSA
GSA / GSV
GSV / GSV
GSV / GSV
GSV / RMC
GLL / VTG
--- / ZDA
--- / TXT
Думаю нужно, что то в программе изменить. Для меня она сильно сложная. Только пытаюсь разбираться на небольших программах. Если использовать Getline, то получиться возьмеш не ту строку с нашим рассогласовании в приеме данных. Изменить в приемнике ничего не получается. USB - UART TTL, ни чего не дал. Ни чего не изменить. Порт RX не работает, или закрыт.https://yadi.sk/i/ToMwfiK43J5BBr

40 rom-i   (02.05.2017 11:55)
Отключать прередачу лишних строк не пробовал. Хотел изменить промежуток между посылками. По умолчанию 1Гц. Ставил 2Гц, рессивер не запоминает. Грешу на UART. Он сделан на MAX232. Может, что с TX. Заказал USB UART, но это не скоро. Еще меня смущает установка порта в приемнике. Строки пустые если судить по u-center. Изменить не получилось. Таже проблема с передачей. Не запоминает. Накидал схему на PIC16F628, и такой же индикатор. Все показывает. Дату, время, широту, долготу, высоту над уровнем моря, количество спутников. Как бы приемник работает. Остается ждать UART. Ну, и самое не хорошее другой рессивер. Надеюсь к сезону грибов успею. До охотничего сезона точно.

0  
39 exersizze   (29.04.2017 20:08)
rom-i
Углядел на видео, что модуль у тебя шлет 10 строчек, и получается что пока закончится передача одной посылки, следом передается следующая, видимо контроллер постоянно уходит в прерывание от UART и не успевает делать полезную работу.
Попробуй отключить некоторые ненужные строки через U-center.
Вот к примеру что шлет мой модуль http://exersizze.ru/neo-6m/123131.png всего восемь строк.

38 rom-i   (25.04.2017 13:46)
https://yadi.sk/a/1BpvBS-c3HL7UN Набросал как все произходит. В полном тупике.

37 rom-i   (25.04.2017 10:26)
Понятно, что работает. У меня только поиск.

36 Mikkels   (25.04.2017 09:41)
https://drive.google.com/open?id=0B8Fj99uLQPSvVDctSW9sMVB1d00

35 rom-i   (24.04.2017 21:26)
https://yadi.sk/i/19l7ehaz3HJjmf Так выставлены фьюзы. Может чего не так?

34 rom-i   (23.04.2017 14:54)
jtag mega103 отключены. Кварц 11.0592. Пробовал в программе компилить сдвигая частоту. 11000000 чаще начал выходить из поиск. Увеличивая в программе частоту 11100000 начинает вешаться. С кварцем 10000000, и естественно в программе изменил. Даже появился долгожданный кружок. Но не долго маилась старушка, в высоковольтных проводах. С нова поиск. Думаю в модуле NEO-6EM надо чгото изменить. Китайцы молодцы!!! На месте не стоят. Ускорили скорее всего запросы по UART. Судить если по терминалам, модуль дает посылку данных примерно три за 2 секунды. Опрос мега64 по программе делает немного реже. Засада где то здесь. Программист из меня уровня 1 класса школы. Вот, спецы, и нужны. Нужно сам модуль приспокоить. Там все на языке, обычному русскому не понятен. Не нравиться мне англицкий. Они винтовки кирпичем не чистят.

33 Mikkels   (23.04.2017 00:30)
Да, все заработало, спасибо :) с фьюзами тоже немного помучался, в итоге поставил по аналогии с конструкцией логгера температуры, за исключением JTAG. Ждем новых разработок :)

0  
32 exersizze   (22.04.2017 14:58)
Mikkels, rom-i , на 26ю ножку через транзистор Q1 и диод идет подтяжка к плюсу, может транзистор использован другой и до конца не открывается. Ну раз заработало ладно)
rom-i, жтаг и совместимость с atmega103 во фьюзах отключены?

31 rom-i   (21.04.2017 12:31)
Модуль GPS прекрасно работает с любыми терминалами. Скорость 9600. Прибор не берет информацию. Время считывается, правда разница в три часа. На месте координат очень редко, что то проскакивает. Так все в вечном поиске. Пробовал играться с кварцами, кондерами. Поиск... , и все. Может с фьюзами, что не то? Игрался с питанием от 3.3 до 5.0В. Эффекта ноль.

30 rom-i   (20.04.2017 20:31)
28 Mikkels не дописал. Нужно подтянуть 26 ногу к питанию, для корректной работы. Выход из любого подменю, длительное нажатие откл. питания. На любой печатке влазит резистор 10к. Дороги рядом.

29 rom-i   (20.04.2017 20:06)
Пришел модуль из Китая. Прошивка, что к конце статьи без ADXL335, HMC5883L. Доллго ждал. Светодиод моргает, на дисплее поиск ... Думал дохлый модуль пришел. Подключился к компу черезь UART к U-CENTER. Оказалось спутники ловит мгновенно, и много. Все определяется. Почему не работает в приборе?

28 Mikkels   (19.04.2017 19:14)
Уважаемый Автор!
Спасибо за очередную конструкцию, слежу за Вашим сайтом уже несколько лет :) Вопрос по конструкции: все работает, но есть неприятность: единожды включив, прибор не выключается никак, только отключением батареи. В чем может быть причина?
UPDATE: причина найдена, на схеме не дорисован резистор 5 26 ноге

0  
27 RD3AVJ   (22.03.2017 19:17)
Привет дружище!
в гугле отрыл гдето
там есть прога для винды, по компорту общается с датчиком, строит матрицу и автоматом выдает значения коррекции по осям
http://arduino.ru/forum/apparatnye-voprosy/kalibrovka-hmc5883l
http://www.count-zero.ru/2016/hmc5883l/
и в ютубе полно инфы...
Ответ: тут тоже разжевать пытались:
http://www.avislab.com/blog/hmc5883l_ru/
а вот тут https://www.youtube.com/watch?v=lpLx8sViZEQ дядька прям показывает на видео

0  
26 exersizze   (22.03.2017 16:59)
RD3AVJ, а где ты для ардуины код с калибровкой взял?

0  
25 RD3AVJ   (21.03.2017 10:41)
upd: похоронил идею использовать этот магнитометр в проектах, ибо калибровка предусмотрена только в среде ардуино, а без калибровки он показывыет что угодно, может даже температуру на Марсе, но не азимут. Разница в показаниях юга у моего экземпляра -40градусов от истинного, юго запад еще хуже....

0  
24 RD3AVJ   (20.03.2017 09:08)
Коллеги, чтобы получить правильные показания магнитометра с помощью акселерометра необходимо откорректировать показания с учетом крена. Тут http://uran.donntu.org/~masters/2007/kita/gerus/diss/index.htm описана формула расчета, но я по тригонометрии в школе имел твердый трояк, и было это 30 лет назад. Помогите с расчетом  с помощью показаний акселерометра пожалуйста. После того, как будут известны углы, можно будет ввести коррекцию по формуле:
Xh = X*cos(Ф) + Y*sin(tau) - Z*cos(tau)*sin(Ф)
Yh = Y*cos(tau) + Z*sin(tau)
Azm = Yh/Xh
Я так понял, что tau и Ф (фета) - это тангаж и крен))))

23 rom-i   (19.03.2017 15:14)
Хорошая штука. Автору добавить еще использование нескольких точек в программе, тогда вообще класс. По прямой двигаться не всегда норма. Сколько раз болото обходить приходилось. https://yadi.sk/d/mEvNBAx_3G95ir если кому нужна односторонняя печать в спринт.

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






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

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

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://jlcpcb.com/

авторизация
Логин:
Пароль:
Комментарии
Бесконтактный датчик температуры MLX90614
21.09.2017 - TSL:
Подскажите пжл. фьюзы для меги8 данного проекта. Боюсь залочить данный проц.
Крутим шаговый двигатель
19.09.2017 - Serg-24:
У Вас прекрасный материал для творчества и все понятно. Перерыл нет потратив 2 д...
Беспроводная система оповещения с датчиком движения
11.09.2017 - rom-i:
https://yadi.sk/d/KCRzZ98I3Mnqfk Программы для Attiny13. 1.3 с использованием АЦ...
Беспроводная система оповещения с датчиком движения
11.09.2017 - rom-i:
Интересно получается. Если использовать АЦП для контроля аккумов, тема жрет 250м...
Направлятор
06.09.2017 - rom-i:
Получил второй NEO6. Повезло Китайцу, что первой сторокой идет RMC. Направлятор ...
Регулятор температуры и влажности
06.09.2017 - ROZARIO:
У кого получится рабочая прошивка с минусовой температурой под этот датчик то по...
Регулятор температуры и влажности
06.09.2017 - ROZARIO:
Спасибо всем участникам этого проекта. Научился немного в BASCOM-AVR работать. <...
Беспроводная система оповещения с датчиком движения
03.09.2017 - exersizze:
Да лучше дождаться и отлаживать с модулями, потому как не предугадаешь какой фок...
Беспроводная система оповещения с датчиком движения
24.08.2017 - rom-i:
Тема понравилась. Как раз занимался охранкой на SIM800l. Подумывал о радиодатчик...