Спидометр одометр своими руками на ардуино
В простых велокомпьютерах обычно считаются обороты колеса — зная количество оборотов в минуту не сложно подсчитать скорость и пройденное расстояние. Вот только датчики Холла на вилку ставить морока, они быстро покрываются грязью и начинают сбоить. Лишние провода отнюдь не украшают байк, а только привлекают внимание воришек. Да и что делать, если в хозяйстве не только велосипед, но ещё и самокат, ролики или сноуборд?
Мы пошли другим путём. Данные о скорости мы получаем от приёмника сигналов спутниковой навигации GLONASS/GPS. А дальше — дело техники. Милые сердцу моряков и авиаторов узлы мы переводим в привычные «км/ч», а информацию об изменении координат используем для определения пройденного расстояния. Полученные значения в реальном времени выводим на четырёхразрядный индикатор, переключаясь между выводом скорости и дистанции обычной тактовой кнопкой.
Получилось компактное устройство, которое быстро крепится на руль, раму или просто на руку. Без лишних проводов и проблем с калибровкой.
Что потребуется
Полный сет компонентов проекта. В сет входят:
Видеоинструкция
Как собрать
Установите Troyka Slot Shield на Iskra Neo
Поверните GLONASS/GPS на 90 градусов против часовой стрелки и вставьте в правый верхний слот.
Переверните Quad Dispaly вверх ногами и вставьте в центральный и правый слоты нижнего ряда.
Переверните тактовую кнопку на 90 градусов против часовой стрелки и вставьте в центральный верхний слот.
Скетч
Прошейте контроллер скетчем через Arduino IDE.
Хотите собрать другой девайс? Выберите своё будущее устройство из списка проектов на Slot Shield.
У собранного своими руками электронного спидометра будет три режима:
- Спидометр (определение скорости) и одометр (пройденная дистанция)
- Задача 1 – проехать 32 км (20 миль)
- Задача 2 – достичь скорости 30 км\ч
Спидометр собран на Ардуино, так что нет предела вашему воображению.
Шаг 1: Как всё работает
Принцип работы проекта прост, но для сборки его нужно понимать. В самом простом понимании, он состоит из Геркона или магнитного выключателя, установленного на раму велосипеда и еще одного магнита, установленного на спицу колеса.
Так как колесо вращается, то магнит активизирует выключатель при каждом обороте. Сигнал поступает на Ардуино, который считает количество оборотов и по ним определяет покрытую дистанцию (нужно будет сначала указать диаметр вашего колеса). Также Ардуино следит за временем и вычисляет скорость. Данные выводятся на дисплей, где они отображаются в милях в час (или в километрах, если доработать формулу).
Шаг 2: Необходимые материалы
Проект недорогой и может обойтись вам в 300-700 рублей. Сборка потребует от вас некоторые умения в пайке.
Материалы для сборки:
Список необходимого инструмента:
- Паяльник
- Припой
- Корпус
- Что-то наподобие дремеля, чтобы прорезать в корпусе отверстия для установки электроники и дисплея
- Горячий клей или что-то подобное для закрепления компонентов на местах.
Шаг 3: Код
Перед тем, как мы перейдём к электронике, будет неплохо загрузить код, чтобы вы не испытывали конфуз, метаясь между неправильно подключенными проводами. Загрузите код на Ардуино, перед этим не забыв указать диаметр колеса вашего велосипеда.
Шаг 4: Электроника
Схема соединения компонентов приложена выше, но я также напишу её отдельно.
- Резистор на 220 Ом соединяем между пином 2 Ардуино и землёй
- Мгновенный переключатель соединяется с пином 2 и vcc
- Конденсатор на 0.1 uf помещаем между двумя клемами выключателя, чтобы уменьшить дибаунс
- Геркон на vcc и A0
- Резистор между A0 и gnd
После соединения всех компонентов можно запитать девайс и проверить, что всё работает.
Шаг 5: Корпус
Корпус можно сделать из пластика или дерева, он должен быть прочным и в нём должно быть достаточно пространства.
После установки переключателей, экрана, кнопки и хедеров проверьте девайс на работоспособность. Постарайтесь сделать устройство водонепроницаемым, ведь оно окажется в самых худших для работы условиях.
Шаг 6: Тестирование и устранение неполадок
Запитайте устройство от батарейки 9V и проверьте все три режима. Поднесите магнит близко к Геркону и скорость с дистанцией должны начать увеличиваться.
Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.
Подглядел я у одной американской машины интересную фичу. Спидометр проеКцировался на лобовое стекло.
Жил я с мечтой о таком нештяке почти всю свою сознательную жизнь. Ну не менять же своего японца на американца из за этого?
А тут дед мороз старшему сыну комплект "Матрешка Z" подарил.
Наборчик, развивающий познания в схемотехнике и программировании. Но сыну этот набор по боку. У него майнкрафт стынет. Ходил я бродил вокруг заветной коробочки и тут случилось. Соединилась моя мечта с возможностью реального воплощения.
Ну, думаю, сделаю. Не хочу простых путей. Зачем покупать у кого-то навороченные готовые наборы? Зачем мучить андроид, и качать на него бесплатную прогу? Сделаю САМ, Ну почти … сам.
Первым делом надо понять откуда буду брать сигнал. Мест море.
1) Датчик абс. Один леший ABS не работает.
2) Можно намутить проставку с датчиком скорости (сейчас такие на всех инжекторах стоят, не всегда проставки) между коробкой и тросом спидометра.
Ой у меня же инжектор. А вот как ЭБУ узнает скорость авто? Да и Автоматическая коробка как с этим справляется?
Книга. Вперед читать книгу. А точнее электросхемы. И тут я нашел. Оказывается у SpaceWagon'а тоже есть эта штуковина "он прячет ее в шкафу" (цитата из кинофильма "Солярис"). И стоит она непосредственно на спидометре. Называется геркон.
Вперед за приборкой. Вот её-то и буду мучить. Снял спидометр. А вот и геркон, который управляется магнитом с четырьмя полюсами. Для наглядности я разукрасил магнит маркером, пытаясь понять как сильно отличается зона разомкнутого геркона от зоны сомкнутого.
Ну теперь закипит работа. Или мой мозг.
Перепробовав все предложенные производителем набора эксперименты я так и не научился не программировать, не схемотехничать. :((
После долгих раздумий и сторонней помощи родилась схема, позволяющая запихнуть-таки сигнал геркона в arduino.
Схему привожу в первозданном виде. Договорились о том, что я буду ваять нижнюю часть, отделенную чертой.
Моё мнение заключается в том, что я думаю, что надо как-то отделить схему автомобиля от схемы arduino. Вышло это не ахти как, но уж ладно. По крайней мере мне в этой схеме всё понятно. :)) Делаю эту.
Собрав всё на монтажной плате, (прикольная штука, паять не надо, можно быстро всё переставить) я столкнулся со следующей проблемой. И эта проблема программная.
Резисторы как по схеме (вместо 600 Ом стоит 620 Ом). Диоды 1N4007. Оптрон PC817A.
И так Программирование. С горем пополам выяснил, что без прерываний не обойтись. Прерывание это такая штука. которая останавливает всю программу при возникновении какого-то времени или сигнала "Ч". Обрабатывает приоритетные данные, а потом возобновляет выполнение программы с той точки, где остановила.
Дальше круче. Если с сигналом от геркона всё оказалось просто, нашёлся оператор, который всё это (внешнее прерывание) обрабатывает, То с отсечкой времени (внутреннее прерывание) я до сих пор боюсь разбираться. Голова наверно сломается. Но мне опять помогли. Почти дали списать. Ладно. Спасибо. Работает.
Надо бы еще скетч кинуть наверно. Он на яндекс диске. Сразу предупреждаю, у меня Arduino UNO 16МГц. За работу на других подобных не отвечаю. Во внутренних прерываниях как-то задействованы внутренние ресурсы процессора. И при портации этого скетча на другую платформу надо что-то переделывать.
И видео про то, как это работает.
Одометр.
Желание переделать штатный одометр было очень давно, с момента первой переделки приборной панели. Сперва я просто перевернул пленку для инверсии, но вместо черного фон получался с синеватым оттенком. Затем были долгие пробы различных пленок, светофильтров, и разные варианты цветов и оттенков светодиодов. Все не то. черного цвета и белых букв на нем получить не удавалось. На некоторое время забросил эту идею и ездил с инвертированным. Потихоньку приходил к мысли, что нужно делать свой одометр на базе OLED дисплея. Они имеют черный фон, белые цифры, отличную контрастность, и не замерзают в -40 как обычные ЖК дисплеи от сотиков.
Одометр построен на базе Arduino Pro Mini. Раз уж делать свой одометр, то глупо просто скопировать штатный, нужно добавить, хотя бы минимум функционала.
Поэтому в него добавлено:
Пробег "Общий" не обнуляемый.
Пробег "Суточный"
Пробег "Бак бензина"
Пробег "Сервисное ТО"
Пробег "Замена масла"
и конечно давняя мечта это температура воздуха снаружи автомобиля.
Общий считает 0 до 999999 км, а первые два счетчика, считают в прямом направлении от 0 до 99999 км.
Два вторых счетчика имеют обратное направление и считают от Значения по умолчанию, до 0, При уменьшении одного из них до значения 500, на экране зажигается предупредительный знак "Внимание" сигнализируя о скором наступлении срока ТО или Замены масла. Моргающих/пищащих значков не стал делать, так как они при постоянном появлении больше раздражают.
Значение по умолчанию задаётся при программировании, но может быть изменено, при входе в режим настройки. Для Сервисного пробега оно может быть установлено от 10000 до 90000 км, с шагом 10000км,
а для пробега Масло, от 1000 до 10000км с шагом в 1000км.
Не хотелось городить лишние кнопки и переключалки на приборной панели, поэтому управление одометром осталось от штатной кнопки. Короткое нажатие переключает одометры, длинное нажатие сбрасывает текущий отображаемый одометр, либо до 0, первые два одометра, либо до Значения по умолчанию, вторые два одометра.
В качестве экрана использован OLED 128х64 пикселя, диагональю экрана 1.54 дюйма. Дисплей подключен через интерфейс IIC, это минимум проводов и обвязки. Экран немного уже чем штатное окошко, поэтому с краев есть две неприятные щели. позже заделаю их. Запитана вся схема от пятивольтового стабилизатора.
Датчик температуры DS18B20 расположил в правом крыле перед резонатором воздухозаборника.
Одометр делался под параметры датчика скорости Honda Accord Wagon (2548 импульсов на 1км) для других автомобилей можно поменять это значение в тексте программы.
Важное замечание:
Программа сохраняет значения счетчиков в энергонезависимой памяти контроллера, в момент пропадания напряжения на входе IGN, для возможности записи, необходимо предусмотреть схему задержки отключения питания на время записи. У меня одометр часть приборной панели и управляет питанием другое устройство. поэтому на схеме эти цепи не обозначены.
для повторения необходимы библиотеки
OneWire
OLED_I2C_RUS
Все иконки рисовал в паинте, конвертировал с помощью этого сайта
Все версии Одометра и УВП в одном архиве.
Версия 5 под 1.3" экран SH1106 для нее дополнительно нужно установить библиотеку MicroLCD
yadi.sk/d/Qcs53GqHziEZt
Для первоначальной установки значений одометров в память ЕЕПРОМ контроллера, нужно залить и выполнить скетч из папки ODO**_Init
для корректного отображения температуры нужно заменить файл DefaultFont.c в папке с библиотекой. на этот
Разбираемся как сделать на основе Ардуино одометр для измерения количества оборотов колеса велосипеда.
О проекте
Мы научимся собирать устройство для вычисления расстояния с помощью герконового датчика. Таким образом, мы соберем одометр.
При помощи него может быть измерен пройденный транспортным средством путь.
Представляете, - первый одометр был изобретён Героном Александрийским, греческим математиком и механиком. Который жил очень давно, где-то во второй половине I века н. э., но это не точно.
Во многих автомобилях существуют устройства, которые вычисляют пройденный путь и необходимы для предоставления информации водителю.
Таким образом, с помощью этой информации можно контролировать пройденное расстояние между двумя точками, например, с помощью счетчика пробега транспортного средства.
Компоненты
Для этого проекта одометра Ардуино мы будем использовать следующие компоненты:
- Печатная плата PCBWay
- Дисплей LCD 16x2
- Макетная плата
- Перемычки
- Ротационный потенциометр 10 кР
- UTSOURCE герконовый свитч
Также, конечно, нам понадобится IDE Arduino.
Давайте уже перейдем к сборке устройство для вычисления расстояния с помощью герконового датчика.
Теория
Мы предполагаем, что данное устройство изначально будет применяться в вело-тренажере. Мы сможем поставить обычный велосипед на помост и тренироваться дома, накручивая расстояние. Кроме того, мы создадим программу для Ардуино.
Этот проект имеет три функциональные возможности:
- Рассчитать расстояние, пройденное на велосипеде;
- Конфигурация радиуса;
- Адаптация к любому велосипеду.
Для доступа к этим функциям пользователь будет использовать три кнопки системы. Каждая кнопка имеет свою функциональность. В системе у нас будут следующие кнопки:
- Кнопка инкремента: будет использоваться для ввода в опцию настройки радиуса колес и увеличения значения радиуса;
- Кнопка декремента: будет использоваться для декремента опции настройки радиуса колес;
- Кнопка ввода: будет использоваться для вставки значения радиуса в систему.
Герконовый датчик
Как мы указали выше, мы будем использовать герконовый датчик. Он отвечает за определение того, когда колесо совершает полный оборот.
Для обнаружения этого, он должен быть установлен на магните на колесе.
Таким образом, каждый раз, когда магнит приближается к датчику, он приводит в действие герконовый переключатель. Процесс работает по следующему уравнению:
Через это уравнение мы узнаем, какова пройденная дистанция, которую проделал велосипед. В уравнении радиус вставляется пользователем, а номер поворота рассчитывается по числу оборотов колеса.
А для определения вращений колеса необходимо установить магнит на колесо велосипеда и установить герконовый датчик рядом с колесом.
Печатная плата
Для упрощения процесса мы создадим печатную плату для подключения датчика герконового переключателя и трех кнопок. Печатная плата представлена ниже на рисунке.
Глядя на печатную плату, можно увидеть Ардуино. Он отвечает за управление всеми системами. Кроме того, у нас есть 5 разъемов JST.
Соединения
C1 до C4 разъемы используются для подключения трех кнопок и датчика герконового переключателя. Теперь разъем C5 используется для подключения ЖК-дисплея 16x2 I2C.
Соединительные пины кнопок и герконового датчика:
- 8 — Герконовый переключатель датчика
- 9 — Декремент
- 12 — Инкремент
- 11 — Ввод
Таким образом, с помощью этой системы вы сможете установить устройство на велосипед и получить значение пройденного расстояния.
Код проекта
Для нашего одометра Ардуино мы будем использовать код, представленный ниже.
Нам нужно подключить две дополнительные библиотеки: EEPROM ( EEPROM.h ) и LiquidCrystal ( LiquidCrystal.h ).
Читайте также: