Велосипедный спидометр на Arduino

Представляю проект велоспидометра, который позволяет следить за скоростью езды на велосипеде при помощи Arduino. Для измерения скорости вращения одного колеса используется магнитный выключатель (также называемый геркон). Контроллер Arduino рассчитывает скорость и выводит эту информацию на ЖК-дисплей, закрепленный на руле. Устройство совместимо с любым велосипедом/колесом, необходимо лишь ввести радиус колеса в прошивку для калибровки.

Список деталей:
(1x) Arduino Uno REV 3.
(1x) Геркон.
(1x) 10КОм 0.25Вт резистор.
(1x) Батарея 9В.
(1x) Разъемы для 9В батареи.
(1x) Макетная плата.
(1x) ЖК-дисплей с подсветкой Parallax 27977-RT.
(x2) Тумблер.
(2x) BLS штырьки.
(1x) BLS разъемы.

Дополнительные материалы:
Провод №22.
Припой.
Наждак.
Фанера.
Столярный клей.
Термоклей.
Винты.
Кабельные стяжки.

Принципиальная схема

На схеме есть три тумблера:
— первый на линии питания 9В.
— второй для включения и выключения подсветки ЖК-дисплея.
— и один магнитный выключатель (так называемый геркон), который замыкается каждый раз, когда колесо совершает один полный оборот.

Parallex LCD подключается к Arduino при помощи лишь 3-х контактов: 5В, GND и последовательного цифрового выхода (TX) – 1 контакт Arduino.

Резисторы 10 кОм подключены к геркону и выключателю подсветки во избежание избыточного тока между 5В и GND Arduino.

Припаяйте на макетную плату три линии BLS штырьков как показано на фотографии для подключения Arduino.

Геркон

Магнитный выключатель состоит из 2-х частей: геркона и магнита. У геркона есть контакты, которые механически замыкаются внутри него при приближении магнита.

Припаяйте токоограничительный  10кОм резистор между A0 и GND на макетной плате. Припаяйте длинные провода к А0 и 5В – они будут проведены по велосипеду и подключены к геркону.

Установка геркона на колесо

Установите магнит и геркон на ваш велосипед при помощи изоленты (подходит любое колесо). Как видно на фотографии, магнит установлен на одну из спиц колеса, геркон на раму велосипеда. То есть каждый раз, когда колесо делает полный оборот, магнит проходит мимо геркона, замыкая его. Подключите к геркону провода, ранее припаянные к плате. Геркон неполярный, поэтому как его подключать — не имеет значения.

Используйте код приведенный ниже для проверки. Когда магнит на колесе будет проходит мимо геркона, Arduino будет выдавать значение ~1023, в противном случае значение будет ~0. Откройте Serial Monitor (монитор последовательного порта) (Tools >> Serial Monitor) в Arduino IDE, чтобы проверить это. Если магнит не влияет на геркон, попробуйте переставить его или использовать более мощный.

#define reed A0 //Номер пина к которому подключен геркон

int reedVal;

void setup(){
Serial.begin(9600);
}

void loop(){
reedVal = analogRead(reed); // считываем знаение A0
Serial.println(reedVal); // выводим в Serial Monitor
delay(10); // пауза 10 мс
}

Прошейте Arduino. Включите Serial Monitor (монитор последовательного порта). Он должен показывать 0.00. Начните крутить колесо, и вы увидите скорость миль/ч, изменяющуюся каждую секунду.

ЖК-дисплей

Я использовал ЖК-дисплей с последовательным интерфейсом.
Припаяйте линию BLS разъемов на обратную сторону (с контактами) макетной платы. Три разъема будут использоваться для подключения ЖК-дисплея. ЖК-дисплей хорошо в станет в эти разъемы.

Подключите 5В, GND, и TX (1 цифровой вывод Arduino) от Arduino к разъему дисплея. Смотрите на подпись выводов ЖК-дисплея, чтобы сделать всё правильно.

В нижней части ЖК-дисплея Parallax есть два переключателя и потенциометр. Потенциометром контролируется контрастность дисплея. Для правильной работы переключатели должны быть установлены как на фотографии.

Для тестирования ЖК-дисплея используйте следующий код. Почему-то на моем ЖК-дисплее начинают появляться случайные символы во время прошивки, но они исчезают после того, как я пере подключаю USB-кабель. Я думаю, что это является помехой при связи Arduino с компьютером через 1 цифровой контактный (TX) во время прошивки.

При включении на ЖК-дисплее должна отображаться надпись «Hello World».

void setup() {
Serial.begin(9600);
pinMode(1,OUTPUT); // TX-линия

Serial.write(12); // Очищаем
Serial.write(«Hello World»); // Вывод надписи
}

void loop() {
}

Подключите тумблер как показано на фотографии. Припаяйте резистор 10 кОм и зеленый провод к одному контакту, а красный провод к другому.

Подключите красный провод к 5В Arduino и к GND через резистор, а зеленый провод к D2.

Программа

Прошейте Arduino скетчем, который вы можете скачать внизу статьи. Убедитесь, что подсветка включается и выключается, а скорость отображается правильно. (Возможно, вам придется переподключить Arduino для корректной работы).

Измерьте радиус колес (в дюймах) и вставить его в строку: float radius = «»‘;

Я использовал прерывания по таймеру.  Для отображения скорости в км/ч необходимо внести корректировку в программу.

Батарея

Соедините разъем для батареи и тумблер последовательно, как показано на фотографии. Подключите красный провод от выключателя к Vin Arduino, а черный провод от разъема для батареи к GND Arduino.

Корпус

Я вырезал корпус для своего проекта при помощи  1/4″ лазерного резака 120 Вт. Размеры корпуса 3,5″x4″x2″. Я смоделировал корпус в AutoCAD и сделал файлы для лазерной резки (с шиповым соединением) в Autodesk 123D Make. Затем я добавил два отверстия для тумблеров и прямоугольное отверстие для ЖК-дисплея. Также  добавил несколько отверстий в нижней части корпуса для облегчения крепления к велосипеду.

Далее, склеил корпус древесным клеем, и отшлифовал края. Закончив корпус, я покрыл его лаком.

Установка компонентов в корпус

Закрепите тумблеры на корпусе при помощи гаек. Приклейте или привинтите ЖК-дисплей с внутренней стороны передней панели. Установите макетную плату, Arduino и батареи в корпусе и закрепить при на липучках или клее.

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

Теперь вы можете выезжать с этим спидометром, однако при движении не отвлекайтесь от дороги!

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.