Спидометр для велосипеда на Arduino
Содержание
- Необходимые элементы
- Электросхема
- Распайка шилда спидометра
- Геркон
- Установка геркона на велосипед
- Проверка работоспособности
- LCD дисплей
- Окончательная программа для спидометра
- Питание
- Корпус для спидометра на Arduino
- Установка Arduino и обвязки в бокс
- Устанавливаем спидометр на велосипед
- Велосипед со спидометром на дороге!
Хотите отследить скорость на велосипедной прогулке? Тогда эта инструкция для вас!
В проекте используется магнитный выключатель (геркон) для измерения скорости вращения колеса велосипеда. Arduino, в свою очередь, рассчитывает скорость перемещения в милях/час и передает эту информацию на LCD дисплей. Установить данную систему вы можете на любой велосипед/колесо. Для этого достаточно указать радиус колеса для правильного расчета.
Необходимые элементы
- 1 плата Arduino
- 1 геркон
- 1 резистор на 10 кОм, 1/4 ватта
- 1 Батарея на 9 вольт
- 1 Провод
- 1 Макетная плата для распайки
- 1 LCD дисплей
- 2 Переключателя
- Дополнительные материалы:
- Фанера, винты и т.п.
- Программа для Arduino Arduino IDE
Электросхема
Электросхема проекта приведена ниже.
Она состоит из трех переключателей:
1. Один подключен к питанию 9 вольт
2. Второй переключатель — к LCD экрану для его включения/выключения
3. Магнитный выключателя (геркон), который замыкает цепь каждый раз, когда колесо совершает полный оборот.
LCD монитор Parallax, который используется в проекте, подключается к Arduino по трем пинам. Один идет к 5 В, один к земле, третий — к серийному выходу (TX) на плате Arduino на цифровом пине 1.
Резисторы на 10 кОм подключены к переключателям и подсветке монитора, чтобы избежать превышения допустимой силы тока между 5 В и землей (ни в коем случае не подключайте 5 В и землю напрямую к Arduino).
Распайка шилда спидометра
Установите три ряда коннекторов на макетной плате таким образом, чтобы они сели на плату, как это показано ниже.
![]() |
![]() |
---|
Геркон
Геркон состоит из двух частей, выключателя и магнита. С самого выключателя (собственно, там и расположен геркон), выходит два провода. В момент, когда магнит располагается неподалеку, небольшой механический элемента внутри геркона перемещается и замыкает цепь.
Установите токоограничивающий резистор на 10 кОм между пином A0 и землей на вашей макетной плате. Концы провода подключите к пину A0 и 5V. Этот провод вы протянете в дальнейшем вдоль всего велосипеда к переключателям.
![]() |
![]() |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Установка геркона на велосипед
Для установки геркона и магнита на колесо велосипеда, используйте изоленту. На рисунке сверху показано, что магнит устанавливается на одну их спиц, а геркон — на раму велосипеда. Таким образом, магнит проходит мимо геркона после каждого полного оборота колеса. Подключите провода от геркона к кабелям с распаянной вами платы (как именно подключать — неважно, так как это просто переключатель).
Для проверки работоспособности вашего переключателя, используйте код, приведенный ниже. В момент, когда магнит проходит мимо геркона, Arduino должна выдать
1023, в ином случае будет отображаться 0. Откройте серийный монитор (Tools — Serial Monitor) в оболочке Arduino IDE и запустите проверку. Если магнит не генерирует сигнал на герконе, измените его положение или используете более сильный магнит.
//arduino спидометр для велосипеда
#define reed A0//пин, который подключен к геркону
//переменная для хранения данных
reedVal = analogRead(reed);//получаем значение с A0
![]() |
![]() |
---|---|
![]() |
![]() |
Проверка работоспособности
Загрузите код, приведенный ниже на плату Arduino. Активируйте серийный монитор. У вас должно отбражаться число 0.00. Начните крутить колесо велосипеда. Каждую секунду долгы отображаться данные текущей скорости в милях/час.
// максимальная скорость 35 миль/час =
// максимальная угловая скорость =
#define reed A0// пин, который подключен к геркону
long timer;// время между одним полным оборотом (в мс)
float radius = 13.5;// радиус колеса (в дюймах)
int maxReedCounter = 100;// минимальное время (в мс) одного оборота
// НАСТРОЙКА ТАЙМЕРА — таймер позволяет точно отслеживать время между сигналами геркона
cli();// остановка прерываний
// устанавливаем прерывания timer1 с частотой 1кГц
TCCR1A = 0;// устанавливаем внутренний TCCR1A регистр на 0
TCCR1B = 0;// то же самое для TCCR1B
// устанавливаем инкремент счетчика времени на 1 кГц
OCR1A = 1999;// = (1/1000) / ((1/(16*10^6))*8) — 1
// активируем режим CTC
reedCounter -= 1;// декремент reedCounter
reedCounter -= 1;// декремент reedCounter
mph = 0;// если новые с геркона не поступают новые импульсы, значит колесо не вращется, значит скорость равна 0 м/час
timer += 1;// инкремент таймера
// отображаем мили в час раз в секунду
LCD дисплей
Для установки дисплея вам понадобится дополнительный шилд. Припаяйте рельсу с контактами мама на выходе на protoshield. Три контакта будут использлваться для для подключения жидкокристаллического дисплея. LCD экран должен плотно установиться на рельсах.
![]() |
![]() |
---|---|
![]() |
![]() |
![]() |
Установка LCD
Подключите Arduino 5V, Ground, и TX (Arduino цифровой пин 1) к LCD сокету. Не забудьте проверить правильность установки экрана на основании меток на плате дисплея.
На задней части экрана Parallax LCD есть два переключателя и потенциометр. Потенциометр используется для ручной регулировки контраста дисплея. Переключатели надо установить в положения, которые приведены на фото ниже.
![]() |
![]() |
---|---|
![]() |
Проверка LCD для спидометра
Проверьте код, который приведен ниже. Лично у меня при первом запуске на экране появились совершенно невразумительные, хаотичные символы. Пришлось снять монитор, перезалить скетч и установить экран заново. Со второго раза все заработало. Возможно, проблема была в некорректной прошивке Arduino.
На LCD экране должна отобразиться надпись "Hello World".
//Проверка Parallax 2×16 lcd
//Результат выполнения данного скетча — надпись "Hello World" на вашем LCD экране. Свитч подсветки должен быть подключен к цифровому пину 2
//Serial.write(13);// новая строка
Тумблер подсветки спидометра
Подключите тумблер как это показано на рисунке ниже. Не забудьте соединить резистор на 10 кОм с черным и зеленым проводами. Потом эти провода подключаются к одному из контактов переключателя. Ко второму контакту подключаем красный провод.
Красный провод подключаем к Arduino 5V, вторую сторону резистора к земле, зеленый провод — к D2.
![]() |
![]() |
---|---|
![]() |
Окончательная программа для спидометра
Загрузите приведенный код на Arduino. Проверьте работу переключателя подсветки и насколько корректно отображается скорость.
Уточните радиус вашего коле в дюймах и вставьте это значение в строку: float radius = »»’;
В этой части кода я использовал прерывания, чтобы переменная "timer" увеличивала свое значение с частотой 1 кГц.
//Спидометр для велосипеда с использованием геркона
//скорость велосипеда отображается на LCD экране
//максимальная скорость 35 миль/час =
//максимальная угловая скорость =
#define reed A0// пин, к которому подключен геркон
float radius = 13.5;// радиус колеса (в дюймах)- измените это для своем велосипеде
long timer = 0;// время одного полного оборота (в милисекундах)
int maxReedCounter = 100;// минимальное время (в милисекундах) одного оборота
pinMode(2,OUTPUT);// свич подсветки
cli();// остановка прерываний
// устанавливаем прерывание timer1 на частоте 1 кГц
TCCR1A = 0;// устанавливаем внутренний регистр TCCR1A в 0
TCCR1B = 0;// то же самое для TCCR1B
// устанавливаем инкремент для счетчика 1 кГц
OCR1A = 1999;// = (1/1000) / ((1/(16*10^6))*8) — 1
// активируем режим CTC
reedCounter -= 1;// декремент reedCounter
reedCounter -= 1;// декремент reedCounter
mph = 0;// если не поступают импульсы от геркона, значит скорость равна 0
timer += 1;// инкремент таймера
// отображаем mph раз в секунду
Питание
Подключите последовательно коннектор для батареи и переключать как это показано на первом рисунке ниже. Красный провод от переключателя подключите к контакту Vin на Arduino, а черный контакт от коннектора для батареи — к земле на Arduino.
![]() |
![]() |
---|
Корпус для спидометра на Arduino
Бокс для спидометра был вырезан из фанеры толщиной 1/4". Использовалась лазерная резка мощностью 120 Ватт. Размеры бокса — 3.5"x4"x2". Бокс был спроектирован в AutoCAD. Для генерации файлов для лазерной резки использовался софт Autodesk 123D Make. Потом были добавлены два отверстия для переключателей и прямоугольное отверстие для LCD экрана. Кроме того, были добавлены отверстия на нижней части бокса, чтобы проще осуществить крепеж к велосипеду.
Стенки бокса крепятся между собой на клей. Углы надо зачистить наждачкой. Можно использовать какое-то покрытие для фанеры, чтобы придать боксу надлежащий вид и защитить от влаги.
Скачать необходимые детали для бокса можно по ссылкам ниже:
![]() |
![]() |
---|---|
![]() |
![]() |
Установка Arduino и обвязки в бокс
Переключатели фиксируются в корпусе с помощью гаек. LCD экран садится на клей или с фиксируется с помощью винтов на передней панели бокса. Arduino и Protoboard устанавливаются рядом с бетарейкой. Опять-таки, можно использовать клей для фиксации или предусмотреть крепеж на винтах.
![]() |
![]() |
---|---|
![]() |
Устанавливаем спидометр на велосипед
Бокс со спидометром на Arduino устанавливаем на руль велосипеда. Можно использовать пластиковые стяжки и sugru для фиксации. Провода, которые идут от платы к геркону надо пустить таким образом, чтобы они не мешали вам при поездке и при этом была возможность поворачивать руль.
![]() |
![]() |
---|---|
![]() |
![]() |
Велосипед со спидометром на дороге!
Не забывайте про правила поведения велосипедистов на дороге! Несмотря на ваш прекрасный Arduino спидометр, следите за транспортом и людьми!
Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!
Источник: