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

Направлятор

 Это устройство задумывалось как маленький помощник тем, кто любит побродить по лесу - грибникам, лыжникам и другим любителям природы. Хотя в большинстве телефонов уже есть 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
Просмотров: 1821 | Комментарии: 27 | Теги: HMC5883L, atmega64, GPS, схемы | Рейтинг: 5.0/8
Всего комментариев: 27
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 если кому нужна односторонняя печать в спринт.

22 sand   (08.03.2017 23:29)
Спасибо за советы.
После исправления полезли другие ошибки, но я поставил баском 2.0.7.8 и все ошибки исчезли.

0  
21 exersizze   (08.03.2017 14:48)
Замените Low_level на Low Level

20 sand   (08.03.2017 14:33)
У меня Bascom 2.0.5.0 и ошибка возникает даже в исходном файле без изменений. В чем может быть проблема?

0  
19 exersizze   (08.03.2017 14:17)
Попробовал в баскоме 2.0.7.8, скомпилировалось без ошибок. В заголовке программы прописал

Код
$regfile = "m1280def.dat"


Частота будет влиять на качество связи с gps модулем, если выбирать из имеющихся то можно ставить кварц на 8, 10, 12, 16 МГц они дают одинаковый процент погрешности на 9600бод, и с ними тоже должно работать. Еще от частоты будет зависеть длительность подсветки, так как для задержки использован Timer1.

18 sand   (08.03.2017 03:57)
Добрый день. Я хочу использовать ATmega1280 (просто она есть в наличии) и пытаюсь скомпилировать исходники, но получаю ошибку Error 347, Line: 357 External interrupt mode not supported or found in DAT file [LOW_LEVEL]. Подскажите, пожалуйста, в чем может быть проблема.
Имеет ли значение частота, на которой работает контроллер?

0  
17 exersizze   (06.03.2017 08:31)
Ага, такой. Но все же рекомендую его пока не использовать, не знаю когда получится довести до ума алгоритм для его приемлемой работы. Прошивайте прошивкой в самом конце статьи.

16 seemson   (05.03.2017 21:05)
Спасибо. У меня есть компас GY-271 у вас такой? Я надеюсь на дальнейшее развитие проекта!

0  
15 exersizze   (05.03.2017 17:21)
В контроллер заливается только hex файл.
Фьюзы выставляются на работу от внешнего высокочастотного кварца, также необходимо отключить JTAG и совместимость с Atmega103

14 seemson   (05.03.2017 17:06)
Здравствуйте очень классная идея! Хочу собрать с сыном, но я в программировании не силен, прошивка скомпилироавна в HEX файл? а Eeprom не используется и фьюзы какие выставлять? Заранее благодарен.

0  
13 exersizze   (05.03.2017 08:53)
В 2.0.7.8, в библиотеке дисплея поправлены все моменты на которые компилятор ругался.

12 RUSHPIL   (05.03.2017 01:03)
exersizze, в какой версиии скомпилирована прошивка? Хочу позаимствовать пару решений для LCD Nokia, но на предыдущих страницах темы читал, что библиотека дисплея работает на раниих версиях Баскома.
Спасибо.

0  
11 exersizze   (04.03.2017 11:02)
Добавил файлы модели корпуса и обновил прошивку.

0  
10 exersizze   (27.02.2017 08:36)
simonT, можно и без них. В этом случае ножки PortC.1 и PortC.2 нужно будет подтянуть к плюсу резисторами 5-10 кОм.
Как вариант, если отказаться от компаса на кнопку S1 можно повесить отображение доп.информации (время, дата, скорость количество найденных спутников или еще что-то).

9 simonT   (26.02.2017 21:58)
Идея супер! Хочу повторить устройство, можно ли обойтись без HMC5883L и ADXL335?

8 sany2   (18.02.2017 21:59)
Тут аудиопроц делал на td8425.Дисплей SH1106 попался.Тоже немцы помогли.Исходники тут https://yadi.sk/d/5IyezKiH3EExGB

+1   Спам
7 Mrshilov   (14.02.2017 07:08)
Да, к N81 библиотека подойдет.

6 AlekS   (13.02.2017 23:25)
+++++... оригинальная штучка ) и оч. полезная, особо детям.) Mrshilov хотелось бы узнать, имели Вы дело с lcd N81 (слайдер) LS024Q3UX01 ? ( http://bascom.at.ua/publ/podkljuchaem_displei_nokia/1-1-0-107 ) библиотека пойдет ?

0  
5 RD3AVJ   (13.02.2017 20:47)
Автор привет)))) А для проекта вот такая платка уже с акселерометром и магнитометром в сборе не пойдет?https://ru.aliexpress.com/item/GY-85-BMP085
Ответ: upd: сам спросил - сам ответил))) - акселерометры то разные, аналоговый и цифровой)))

4 Mrshilov   (13.02.2017 08:54)
Если имеете ввиду дисплей SSD1306, то для него есть библиотека с возможностью графики:
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=13125&highlight=oled
Можно не тратить память на картинки, а рисовать окружность и залитый кружок как метку.
Не пробовал на морозе, но на солнце и в темноте у OLED видимость гораздо лучше.

Есть еще библиотека под цветной OLED (с графикой):
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=13479&highlight=oled

Оригинальный PCD8544 по паспорту 2,7...3,3V. Если не сгорел от 4,2V и от 5V, то это называется "повезло". Во всяком случае, рекомендовать для повторения опасно. Как правило горит умножитель - дисплей отзывается, но не показывает.

3 Scorpushka   (13.02.2017 08:14)
спасибо, как обычно с нетерпением жду новых проектов

0  
2 exersizze   (13.02.2017 08:11)
Думал во второй версии применить какой-нибудь другой дисплей . Этот конечно хорош, в плане цены и простоты работы с ним, но хочу найти что-нибудь поменьше в размерах. И в морозы ЖК промерзает так, что читается уже не очень хорошо (в -15 еще нормально, а вот в -20 уже все смазывается). У китайцев есть мелкий OLEd дисплей 0,96",  хочу его взять на пробу.
По питанию ни с китайским ни с оригинальными дисплеями проблем небыло, всегда запитывал их от пяти вольт. Бывает что у китайца контраст начинает гулять и появляется полосатость, но чтобы сгореть -  пока такого небыло.

1 Mrshilov   (13.02.2017 05:18)
Если будете делать вторую версию, в ней лучше использовать стандартную библиотеку дисплея:
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=12163&highlight=3310
Она поддерживает обычные шрифты и картинки "bgf" (со сжатием) - займет меньше места.

NB! Полностью заряженная батарея 4,2V. Дисплей может не выдержать.

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






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

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

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Двухпериодный автомат включения/выключения
24.03.2017 - Ghiotto:
С точки зрения безопасности лучше селектор режима подключать напрямую к базовому...
Фильтр Калмана
24.03.2017 - Ghiotto:
а получился цифровой фильтр низких частот
Минитерминал v.2.0
23.03.2017 - sakatgg:
Нарисовал плату под DIP
mediafire.com/file/mpdxd2825em872a/Минитерминал+0...
Направлятор
22.03.2017 - RD3AVJ:
Привет дружище!
в гугле отрыл гдето
там есть прога для винды, по к...
USB розетка для ноутбука
22.03.2017 - exersizze:
Автор max, напишите ему в личку

...
Направлятор
22.03.2017 - exersizze:
RD3AVJ, а где ты для ардуины код с калибровкой взял?
USB розетка для ноутбука
21.03.2017 - jedayak:
Доброго времени суток
как связаться с автором сего чуда и приобрасти его?
Направлятор
21.03.2017 - RD3AVJ:
upd: похоронил идею использовать этот магнитометр в проектах, ибо калибровка пре...
Направлятор
20.03.2017 - RD3AVJ:
Коллеги, чтобы получить правильные показания магнитометра с помощью акселерометр...