Найти тему
voltNik

ДЕЛАЕМ GPS ТРЕКЕР СВОИМИ РУКАМИ

Привет друзья! У нас с вами над головой летает большое количество разных космических аппаратов. Среди них есть примерно 90 крайне полезных навигационных спутников американской системы GPS, российской ГЛОНАСС, европейской Галилео и китайской БэйДоу. И сегодня я расскажу как ловить с них сигнал.

-2

Для реализации проекта понадобится ряд электронных модулей: программируемая платформа Arduino Nano, OLED экран 128 на 32 точки (он подключается по шине I2C), GPS модуль для подключения по UART, любой литиевый аккумулятор емкостью выше 200 миллиампер, защитно-зарядный модуль для лития и повышающий преобразователь для того чтобы получить 5 вольт.

-3

Подключаем экран к Ардуино и сталкиваемся с первой трудностью. Стандартная библиотека OLED экрана занимает 20 кБ, это 70% памяти микроконтроллера и практически не оставляет места для программы. Ранее я собирал высотомер и столкнулся с тем что любая новая строчка кода приводит к переполнению памяти и зависанию микроконтроллера при работе. Поэтому буду использовать значительно более легкую библиотеку. В ней нет работы с графикой и доступен только вывод текста на OLED экран, а занимает она всего 1 кБ памяти.

-4

Отдельно подключаю GPS модуль к макетной плате и вижу первые навигационные данные – сигнал из космоса пойман и обработан. Теперь делаю вывод информации на экран. Класс! Видит 4 спутника, теперь 3, и снова 4, уже 5! Для лучшего приема GPS модуль висит за окном на проводе.

-5

Во время разработки проекта я использовал GPS модули разных типов. Пробовал несколько разных программных библиотек, и TinyGPS+ оказалась единственной, которая работала сразу со всеми модулями GPS.

Вообще библиотека занимается разбором протокола NMEA, по-простому парсит данные, которые выплевывает GPS модуль два раза в секунду. Вот так выглядит не обработанный поток данных.

-6

В итоге моя прошивка позволяет подключать практически любой GPS модуль по UART с протоколом передачи данных NMEA. По сути это большинство модулей, у которых есть пины RX и TX. Рекомендую брать именно модуль GPS с Глонасс, он видит больше спутников, поэтому точность у него выше.

-7

Макетка показала полную работоспособность системы, теперь можно собирать все в железе. В качестве питания я буду использовать литиевый аккумулятор, он подключатся к защитной плате с зарядкой. На этой плате нижний резистор R3 задает ток зарядки аккумулятора, по умолчанию установлен 1 ампер, это много для маленьких аккумуляторов, поэтому резистор нужно заменить. Узнать номинал резисторов под разные токи зарядки можно в таблице:

-8

Если ваш аккумулятор имеет емкость 500 миллиампер часов, то нужно выставлять ток заряда не выше этого значения. Т.е. можно поставить 200 или 300 миллиампер, и не превышать 500.

Далее напряжение нужно повысить, экран и GPS модуль питаются от 5 вольт. Это будем делать с помощью повышающего преобразователя напряжения. Такие обычно устанавливаются в повербанки для того чтобы поднять напряжения с 3.7 до 5 вольт.

-9

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

-10

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

-11

На еще одном экране есть текущее расстояние до нулевой точки, максимально зафиксированное удаление от нее и одометр.

-12

Измеряю размеры всех модулей и пытаюсь расположить их максимально компактно. Но как я не старался, тонкий экран никак не увязывался с широким GPS приемником. Поэтому решил заменил экран на другой OLED 128х64 точки. Так получается эргономичнее и кнопочку можно большую поставить.

-13

Схема сборки простая. Нужно подключить экран к шине I2C это пины А4 и А5, gps модуль подключается к программному serial порту на пинах D3 и D4. Кнопка на пин D7. Питание от аккумулятора через защитный модуль тащим на выключатель, далее на повышающий преобразователь, и подключаем на 5 вольт Ардуино.

-14

Для удобного размещения компонент буду использовать зеленую макетную плату 7 на 3 сантиметра. Чтобы экран не висел на разъеме устанавливаю его на пластиковые стойки спейсеры на 5 миллиметров. Между экраном и кнопкой будет находится GPS приемник. С обратной стороны платы будет установлен контроллер Ардуино, аккумулятор и защитная плата. Аккумулятор буду использовать тонкий литий на 350 миллиампер.

Замеряю, промеряю и готовлю проект корпуса для печати на 3Д принтере. Буквально 15 минут на сайте TinkerCAD и проект готов к печати.

-15

Плата идеально устанавливается внутрь корпуса, крепления сошлись, кнопка не заедает. С одного торца есть отверстие под разъем Ардуино Нано, а с другой стороны для зарядки аккумулятора.

-16

У зарядной платы по краям есть выступы, они мешают углубить разъем, стачиваю их надфилем.

Пора паять. Запаиваю первый контакт экрана на плату, примерка – все правильно и можно запаять остальные три контакта. Теперь кнопка. И обязательно счищаем флюс щеткой. Запаиваю провода на модуль защиты аккумулятора.

-17

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

-18

Верхняя часть платы собрана, провода продеты и теперь нужно установить выключатель.

-19

Устанавливаю плату в корпус и закрепляю на четыре маленьких самореза. Ответные отверстия уже предусмотрены на подставках корпуса.

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

-20

После пайки всех проводов на модули, закрываем нижнюю плату синей изолентой. Сверху будет лежать контроллер Ардуино с зарядкой, и без изоляции появляется вероятность что-нибудь замкнуть.

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

-21

Далее запаиваю все торчащие провода согласно схеме, на контроллер Arduino Nano. Готово, теперь нужно залить прошивку.

-22

Подключаем Ардуино к компьютеру, заходим на страницу проекта. Качаем архив, распаковываем файлы, устанавливаем библиотеки, открываем нужную версию прошивки для экрана на 32 или на 64 точки и загружаем ее в контроллер. Все, заработало с первого раза! Данные с GPS прут. Круто!

-23

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

-24

Считаю, что трекер получился афигенный, смотрите мои тесты.

Ну и сразу отвечу на вопрос можно ли добавить GSM модуль и управлять трекером по SMS? Да, можно. Для этого помимо самого модуля еще потребуется добавить в код программы обработку SMS команд и это должен быть отдельный проект.

На этом сегодня все, если вам понравилась статья, то я уверен вы оцените ее лайком и поделитесь ссылкой на видос со своими друзьями.

Для сборки вам потребуется: контроллер Arduino Nano, OLED экран 128х64, OLED экран 128х32, GPS модуль UBLOX M8N (GPS+Glonass), GPS модуль MN-880 (GPS+Glonass+Compass), GPS модуль NZ-GPS (только GPS), повышающий преобразователь 10 шт., микро повышающий преобразователь 10 шт., мини повышающий преобразователь 8 шт., кнопки 25 шт., выключатели 20 шт., монтажный провод 280 м, черный корпус, дешевые макетные платы 10 шт.

Всем удачи и до встречи! Пока-пока!