Каталог
|
Велокомпьютер на Arduino2016-10-07 Все статьи →Назар Дядюн Всем привет! Сегодня расскажу о своем велокомпьюетере на ардуино. До этого у меня был еще один велокомпьютер, но на Attiny 2313, однако он меня не устраивал функциональностью, и возможностью быстро дописать необходимый функционал. Мною было решено переделать его на платформу Arduino. Поставив перед собой цели - начал закупаться оборудованием для сборки. Из аппаратной части мне понадобилось:
Затем я начал писать софт для велокомпьютера. Было много проблем, но одной из самых значимых была запись в энергонезависимую память значений расстояния. А заключалась она в том, что моя плата каким-то образом постоянно стирала EEPROM каждую перезагрузку. И после нее оставались пустые ячейки. Все решилось библиотекой, которая была найдена в интернете. Корпусом стала небольшая пластиковая коробочка, найденная в куче хлама. В нее поместилось абсолютно все...Кроме аккумуляторов...Их пришлось вынести под велокомпьютер. На этой фотографии само устройство. Дисплей. Кнопки навигации и питания. И очень кривая сборка :)
Взгляд на кнопки с другого ракурса:
Одно из самых не красивых мест данного прибора. Однако тут Мы видим: Круглый порт для датчика(Левее), круглый порт для зарядки аккумуляторов(Правее), внизу виднеются сами аккумуляторы, порт для быстрой прошивки микроконтроллера(Справа в углу).
Для зарядки аккумуляторов я не использую никаких дополнительный устройств ввиду того, что мне не жалко этих аккумуляторов. Они и так потеряли свою емкость. Однако Вам крайне советую использовать контроллеры заряда. Думаю пришло время познакомится с "Операционной системой" под названием VeloPC. На текущий момент имеет версию 1.7 Как только Вы нажмете кнопку питания, на дисплее появится уже знакомый всем экранчик загрузки:
Затем краткая информация об температуре и напряжении батарей.
После этого попадаем на главный экран устройства, на котором отображается следующее: Взгляд на кнопки с другого ракурса:
Скорость, уровень заряда батареи с красивым значком, дистанция за текущую поездку. Кстати говоря о скорости: в качестве датчика я использую обыкновенный геркон, купленный на этом сайте. Работает отлично, никаких ложный срабатываний. За 450+ км "наших" дорог пока не развалился :) Если нажать на зеленую кнопку, то происходит сохранение текущего пробега с выводом общей дистанции на экран.
Если нажать на среднюю красную кнопку, то происходит очистка текущего пробега с выводом общего на экран.
Окей. Если нажать на кнопку меню(правая красная), то мы перейдем к следующему экрану меню:
На нем Мы видим: температуру и напряжение батарей. Касательно заряда батареи: уровень заряда основывается на напряжении, по этому он не совсем точный, однако судить про оставшееся время работы можно. Нажав на эту же кнопку еще раз, Мы перейдем на следующий экран:
На нем вся информация о пробеге, а именно: дистанция текущей поездки и общая дистанция.
Теперь о новенькой "вкусняшке" которую я добавил в версии 1.7. Это измеритель максимальной скорости. Для того, что бы попасть в этот режим нужно: 1.Зайти на главный экран. 2.Задержать кнопку "меню" от 6 до 10 секунд. И Мы попадем сюда:
Тут отображается текущая и максимальная скорость. Для того, что бы сбросить максималку, стоит всего лишь нажать на среднюю кнопку - кнопку сброса. На экране отобразится подтверждающая надпись, и скорость сбросится.
В итоге я проехал с ним 450+ км. Лично у меня аккумуляторы держат около 40 - 50 км. Но это уже индивидуально. В будущем планирую облагородить устройство, сделать новый корпус. Ну и само собой обновить версию ПО. Схема подключения:
На этом вроде бы и все. Как все подключить Вы сможете найти в скетче, который я приложил. Спасибо сайту Arduino.ua за отличное качество товаров, обслуживание а также чудесную поддержку! Спасибо всем за внимание! Хорошего Вам дня! Скетч:
Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Максим Викторович
23.04.2018 22:09:19
Все замечательно, но не понятно какой транзистор? И какие пины взаимодействованы?
Mr. Alex
26.03.2018 15:17:00
Задумка очень классная! Молодец, что смог реализовать до конца! Но есть и недостатки, а именно в написанном коде: "возможностью быстро дописать необходимый функционал" - это не про этот скетч! Все навалено в одну кучу. Методы setup и loop километровые, не сразу понятно где они начинаются и где заканчиваются. Лучше весь этот функционал разбить на отдельные маленькие (до 10 строк) методы. А еще лучше потом эти методы расформировать по смыслу в отдельные классы. Советую почитать о ООП. Это даст намного больше гибкости Вашему проекту.
|