Инструкция, как на arduino (ардуино) можно сделать бортовой компьютер, спидометр и другое

Инструкция, как на arduino (ардуино) можно сделать бортовой компьютер, спидометр и другое

Инструкция, как на arduino (ардуино) можно сделать бортовой компьютер, спидометр и другое

Примерно за 25 долларов мы сможем сделать бортовой компьютер, умеющий считать расход топлива, показывать температуру охлаждающей жидкости, скорость авто, расстояние поездки, потраченный за поездку бензин, обороты двигателя, давление во впускном коллекторе, температуру впускного коллектора, УОЗ, коррекции топлива, вольтаж датчиков кислорода, нагрузку двигателя и многое другое. Сброс ошибок доступен в режиме «recovery» (как зайти написано ниже). Общий цикл работы с запросом всех данных из эбу происходит примерно раз в 750 мс. (при условии паузы между запросами в 65 мс, так по умолчанию)

Список требуемых деталей для сборки БК

1) Arduino Uno R3 — 1 шт.

2) LCD2004 жк-модуль

3) Модуль Bluetooth HC-05

4) OBD ELM327 Bluetooth сканер

5) Резистор 10 кОм подстроечный, бипер для звука, 2 кнопки для смены экранов, провода для соединений, корпус

Настройка блютуз модуля HC-05 для работы

Подпаиваем провода к пинам блютуза: (картинку с выходами смотреть в описании требуемых деталей)

  • 1 — это TX
  • 2 — это RX
  • 12 — это 3.3V
  • 13 — это GND
  • 34 — на этот вход тоже кидаем 3,3 V (нужен для перевода модуля в режим настройки с помощью AT команд).

Подключаем блютуз модуль к ардуине для его настройки

  • 1 — TX модуля в 6 пин ардуины. (внимание будет TX в TX это не ошибка!)
  • 2 — RX модуля в 7 пин ардуины. (аналогично не ошибка!)
  • 12 — и 34 пин к 3,3V ардуины.
  • 13 — GND ардуины.

  • 1 — TX модуля в 6 пин ардуины. (внимание будет TX в TX это не ошибка!)
  • 2 — RX модуля в 7 пин ардуины. (аналогично не ошибка!)
  • 12 — и 34 пин к 3,3V ардуины.
  • 13 — GND ардуины.

Открываем Aduino IDE 1.0.6 (использовал эту версию) и заливаем скетч через USB порт в плату.

#include
SoftwareSerial BTSerial(6, 7); // TX | RX
void setup()
<
Serial.begin(9600);
Serial.println(«Enter AT commands:»);
BTSerial.begin(38400);
>

void loop()
<
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
>

После успешной загрузки скетча открываем: Сервис->Монитор порта. Далее снизу ставим скорость 9600 бод и NL+CR вместе.

Далее вводим команды по одной и нажимаем [Послать]. После каждого ввода должен быть ответ ok.

AT // (возможно 1 раз вылетит Error, не пугайтесь… это нормально, повторите опять)
AT+NAME=Car //Присваиваем имя модулю Car
AT+ROLE=1 // Переводим модуль в режим Мастер
AT+PSWD=1234 // Ставим пароль 1234 как на OBD ELM327
AT+BIND=AABB,CC,112233 //Прописываем Mac адрес OBD ELM327.
AT+CMODE=1 // Подключение модуля с фиксированным адресом

Заметьте, что mac-адрес вида: «AA:BB:CC:11:22:33» вводится как «AABB,CC,112233». MAC- адрес своего модуля ELM327 можете посмотреть, подключившись для начала на него со своего мобильника. (Стандартные пароли обычно: 1234, 6789, 0000).

Всё, настройка модуля Bluetooth закончена.

Теперь нужно собрать схему Arduino + блютуз + LCD-экран

1.Начнем с подключения HC-05 Bluetooth модуля.

  • 1 — TX модуля засовываем в 7 Pin (Rx) арудины (именно TX в RX, не так как ранее);
  • 2 — RX модуля засовываем в 8 Pin (Tx) арудины;
  • 12 — Pin (3,3V) модуля в Pin 3,3V ардуины;
  • 13 — Pin (Gnd) в Gnd арудуины;
  • 34 — Pin мы никуда не подключаем (заизолируйте или отпаяйте).

2. Подключаем монитор LCD.

  • VSS экрана к GND ардуины;
  • VDD экрана к 5V ардуины;
  • V0 экрана к центральному выходу резистора;
  • RS экрана к 12 пину ардуины;
  • RW экрана к GND ардуины;
  • E экрана к 11 пину ардуины;
  • DB4 экрана к 5 пину ардуины;
  • DB5 экрана к 4 пину ардуины;
  • DB6 экрана к 3 пину ардуины;
  • DB7 экрана к 2 пину ардуины;
  • A — к 5V ардуины;
  • K — GND ардуины.

Одну из оставшихся ног потенциометра пустить на GND ардуины.

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

3. Подключаем дополнительную кнопку для переключения экранов с данными.

[1 кнопка]: один конец от нормально-открытой кнопки подключаем в GND ардуино, а второй конец в пин 10.
[2 кнопка]: GND + пин 9.

Бипер для звуковых предупреждений подключить по следующей схеме «+» к пину 13, а минус к GND ардуино.

Заливаем скетч в Arduino с помощью Aduino IDE 1.0.6 (использовал эту версию).

Единственное, в скетче присутствуют переменные, которую нужно подправить.

Нужно будет обязательно учесть три переменных:

1) ED=1.998 Например объем двигателя в литрах 1.398;
2) VE_correct=1.0; Корректировка объёмного КПД ДВС по таблице: (если расход реально меньше — то уменьшаем значение в процентном соотношении). Если не хотите калибровать добейтесь чтобы при прогретом двигателе мгновенный расход в л/час был в районе половины обьема двигателя;
3) tcorrect=1.014 (калибровка времени).
4) delay_var=65 Время паузы между запросами в ЭБУ, в дастере например все работает уже на 65 мс, а в старом chrysler cirrus надо аж 235 мс ставить.
5)speed_korrect_val=1; Корректировка скорости машины, смотреть по GPS/

Возможно, Arduino будет не точно считать время с помощью комманды millis()… Тут только вручную корректировать значение. На экране «технологический 2» будет указаны секунды: например, time_start: 23. Сравните значение с реальным. Для примера засеките 10 минут, когда значение time_start будет, например, равно 23. И выйдет, что через 600 секунд реально покажет 605. Итого 623-605=18 секунд отставание в ардуинке. То есть поправочный коэффициент tcorrect будет равен 623/605=1,02975.

Управление

[Кнопка 1], [кнопка 2] — листать экран вперед назад.
При включении при надписи «Connecting»… держать [кнопку 1] вход в режим показывания технологических экранов и параметров отдаваемых ЭБУ в 16-чном формате. Если будете включать БК не в машине то нужно отключить функцию опроса блютуз, надо продолжать держать две кнопки при надписи «Recovery»… до появлении надписи «All off»… а то экран будет все время пустой.

[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.

Скетч:

(по умолчанию настройки в скетче на Рено Дастер 2.0)

Все, идем в машину, вставляем ELM327 в порт, ардуину в зарядку для авто и проверяем.

UPD 06.02.15: Обновлен расчет MAF по изменяемой объемной эффективности VE согласно графика при которое VE зависит от оборотов двигателя.
UPD 05.03.15: Переделан режим записи в EEPROM данных журнала пробега и расхода. Теперь данные записывает при низкой скорости от 1 до 9 км/час раз в 30 секунд, а при заведенном двигателе но скорости 0 км/час, раз в 10 секунд.
UPD 04.03.15: Обновлен режим «торможение двигателем», теперь срабатывает по нагрузке двигателя, работает корректнее чем по Fuel System Status. Расход топлива теперь изменяется по топливным коррекциям Long и Short. Также добавлено множество других правок.
UPD 26.02.15: Добавлен звуковой бипер. Если температура двигателя выше 102 градусов то вывести предупреждение о высокой температуре на экран и прогудеть бипером, так же будет звук при появлении ДжекиЧана
UPD 25.02.15: Добавлены экраны датчиков кислорода B1S1, B1S2.
UPD 24.02.15: При включении БК проверяет есть ли ошибки двигателя. При их наличии пишет сколько ошибок в двигателе, и показывает код ошибки. Сброс доступен в режиме рекавери.
UPD 23.02.15: Добавлен экран топливной коррекции.
UPD 22.02.15: Добавлен экран очистки ошибок в режиме recovery. Для очистки ошибок зажать обе кнопки на 4 секунды.
UPD 19.02.15: Добавил журнал общего пробега и потраченного бензина. Сброс — обе кнопки подержать 3 секунды.

Про параметр Fuel system status:

Для него нормальные показания это Closed loop (2).
Но иногда можно увидеть там open loop (1). Это значение можно увидеть в трех случаях:
1) автомобиль холодный и датчик кислорода еще не прогрелся
2) сильное нажатие на педаль газа и прекращение коррекции по ДК с целью достижения макс. мощности
3) прекращение подачи топлива при отпускании педали газа на скорости на передаче.

Про Обьемный КПД двигателя

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

VE изменяется в зависимости от оборотов, и дроссельной заслонке согласно найденной информации и в машинах для него вообще есть настоящие 3D таблицы:

Нашел график изменения в гугле и попытался воспроизвести хотя бы грубо его изменение.

Вот такой вот график получился! =))) ( кто сможет точнее дать данные для более точного графика буду рад, информации особо не нашел сколько не искал.)

Спидометр для велосипеда на основе Ардуино

В этом уроке мы создадим своими руками простой спидометр для велосипеда на основе микроконтроллера Ардуино. Идея состоит в том, чтобы измерить угловую скорость колеса велосипеда. Таким образом, зная диаметр и математическую легенду Пи (3.14) можно рассчитать скорость. Также, зная количество раз, которое провернулось колесо, можно легко узнать пройденное расстояние. В качестве дополнительного бонуса мы решили добавить световой индикатор на велосипед, – задача состояла в том, когда включить стоп-сигнал.

Шаг 1. Держатель

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

Если все одновременно пойдет не так, Arduino покажет скорость высокоскоростного поезда. Кроме того, вы не захотите, чтобы ваш лучший друг Ардуино упал на дороге только потому, что вы решили быть ленивым и использовать для держателя очень дешевые материалы.

Поэтому, чтобы соблюсти все нюансы безопасности, мы решил использовать алюминиевые ленты, так как их можно легко разрезать и просверлить, они устойчивы к коррозии и довольно дешевы, что всегда хорошо для поделок своими руками. Мы также использовали некоторые гайки (с шайбами) и болты, чтобы закрепить держатель на раме, так как всё должно быть надежно закреплено на раме.

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

Шаг 2. Датчик и магнит

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

Используемый здесь датчик – классический датчик с эффектом Холла А3144. Этот датчик понижает свою выходную мощность, когда конкретный полюс направлен в правильной ориентации. Ориентация очень важна, так как внешний полюс не повлияет на выход.

Выше несколько фото, показывающих правильную ориентацию. Также для датчика эффекта Холла требуется нагрузочный резистор 10 кОм, но в этом проекте заменен на нагрузочные резисторы 20 кОм в Arduino.

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

Шаг 3. Дисплей

Этот дисплей теоретически необязателен, но вам нужно что-то, чтобы отображать скорость и расстояние в реальном времени. Думать об использовании ноутбука совершенно абсурдно. Мы использовали 0,96-дюймовый OLED-дисплей с I2C в качестве протокола связи между ведомым и ведущим устройствами.

Изображения выше показывают три режима, между которыми автоматически переключается Arduino.

  1. “Start” в правом нижнем углу – это когда Arduino только начал работу и успешно загрузился.
  2. Скорость в км/ч. Этот режим отображается только тогда, когда велосипед находится в движении, и автоматически отключается после его остановки.
  3. Последний, с метрами в качестве единиц, очевидно, – расстояние, которое прошел вел. Как только вел останавливается, Arudino переключается на отображение расстояния в течение 3 секунд.

Эта система не идеальна. Он на мгновение отображает пройденное расстояние, даже когда байк находится в движении. Может это не идеально, но это достаточно мило.

Шаг 4. Источник питания

Проект, будучи немного громоздким, не всегда может иметь под рукой розетку для зарядки. Поэтому из-за лени было решено просто использовать блок питания в качестве источника питания и использовать мини-USB-кабель для подключения питания USB от блока питания к Arduino Nano.

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

Скорее всего это пороговое значение составляет не менее 200-300 мА. Наша схема будет иметь максимальное потребление тока не более 20 мА. Таким образом, обычный банк питания отключит выход. Это может привести вас к мысли, что в вашей цепи есть какая-то неисправность. Этот конкретный банк питания на фото выше работает с таким небольшим током.

Шаг 5. Стоп-сигнал (опционально)

В качестве дополнительной функции было решено добавить стоп-сигнал. Вопрос был в том, как определить, когда начался процесс торможения.

Если мы тормозим, велосипед замедляется. Это означает, что если мы рассчитываем ускорение и если оно оказывается отрицательным, можно включить стоп-сигналы. Это, однако, означает, что свет включится, даже если мы просто перестанем крутить педали.

Также мы не добавили транзистор в световую цепь, что абсолютно рекомендуется. Если кто-то сделает этот проект и правильно интегрирует эту часть, мы бы были более чем рады увидеть её и добавили бы картинки сюда. Ток мы получаем напрямую от цифрового контакта 2 Arduino Nano.

Шаг 6. Код проекта

Скачать или скопировать код для спидометра Ардуино вы можете ниже:

Велосипедный спидометр на 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 при помощи только трех контактов: 5В, GND и последовательного цифрового выхода (TX) – 1 контакт Arduino.

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

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

Геркон

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

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

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

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

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

1023, в противном случае значение будет

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

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

ЖК-дисплей

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

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

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

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

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

Подключите тумблер как показано на фотографии. Припаяйте резистор 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 и батареи в корпусе и закрепить при на липучках или клее.

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

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

Стрелочный спидометр для велосипеда на Arduino

Материалы и инструменты для самоделки:
– микроконтроллер Arduino Nano;
– серводвигатель;
– геркон;
– пластиковые хомуты;
– постоянный магнит (автор использовал от компьютерного жесткого диска);
– светодиод красного цвета;
– один резистор на 1 кОм;
– один резистор на 22 Ом;
– пластиковая коробка для создания корпуса;
– провода;
– паяльник;
– материалы для создания механической части спидометра, винтики, ножницы, горячий клей и прочее.






Процесс изготовления велосипедного спидометра:

Шаг первый. Электронная схема самоделки
Электронная схема устройства очень простая и понятна даже интуитивно. Все, что нужно сделать, это подключить все элементы так, как указано на картинке. На схеме есть резистор на 220 Ом, он используется для подключения светодиода. Что касается резистора на 10 кОм, то через него подключается переключатель.

Сервопривод здесь будет вращаться стрелку спидометра, а когда будет достигаться определенная (по словам автора максимальная) скорость, то на спидометре будет загораться красная лампочка.


















Шаг пятый. Прошивка и настройка устройства

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

Первая отметка у автора означает скорость движения в 8 км/ч, вторая 19 км/ч, а третья 24 км/ч. Что же касается максимальной скорости движения, то она составляет 36 км/ч. При достижении этой величины на спидометре загорается светодиод красного цвета. Но каждый может сам для себя настроить устройство под любую скорость.

Спидометр для велосипеда на Arduino

Хотите отследить скорость на велосипедной прогулке? Тогда эта инструкция для вас!

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

Необходимые элементы

  • 1 плата Arduino
  • 1 геркон
  • 1 резистор на 10 кОм, 1/4 ватта
  • 1 Батарея на 9 вольт
  • 1 Провод
  • 1 Макетная плата для распайки
  • 1 LCD дисплей
  • 2 Переключателя
  • Дополнительные материалы:
  • Фанера, винты и т.п.
  • Программа для Arduino Arduino >

Электросхема

Электросхема проекта приведена ниже.

Она состоит из трех переключателей:

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;// инкремент таймера

Serial.write(13);// начинаем новую строку

// отображаем mph раз в секунду

Питание

Подключите последовательно коннектор для батареи и переключать как это показано на первом рисунке ниже. Красный провод от переключателя подключите к контакту Vin на Arduino, а черный контакт от коннектора для батареи – к земле на Arduino.

Корпус для спидометра на Arduino

Бокс для спидометра был вырезан из фанеры толщиной 1/4″. Использовалась лазерная резка мощностью 120 Ватт. Размеры бокса – 3.5″x4″x2″. Бокс был спроектирован в AutoCAD. Для генерации файлов для лазерной резки использовался софт Autodesk 123D Make. Потом были добавлены два отверстия для переключателей и прямоугольное отверстие для LCD экрана. Кроме того, были добавлены отверстия на нижней части бокса, чтобы проще осуществить крепеж к велосипеду.

Стенки бокса крепятся между собой на клей. Углы надо зачистить наждачкой. Можно использовать какое-то покрытие для фанеры, чтобы придать боксу надлежащий вид и защитить от влаги.

Скачать необходимые детали для бокса можно по ссылкам ниже:

Установка Arduino и обвязки в бокс

Переключатели фиксируются в корпусе с помощью гаек. LCD экран садится на клей или с фиксируется с помощью винтов на передней панели бокса. Arduino и Protoboard устанавливаются рядом с бетарейкой. Опять-таки, можно использовать клей для фиксации или предусмотреть крепеж на винтах.

Устанавливаем спидометр на велосипед

Бокс со спидометром на Arduino устанавливаем на руль велосипеда. Можно использовать пластиковые стяжки и sugru для фиксации. Провода, которые идут от платы к геркону надо пустить таким образом, чтобы они не мешали вам при поездке и при этом была возможность поворачивать руль.

Велосипед со спидометром на дороге!

Не забывайте про правила поведения велосипедистов на дороге! Несмотря на ваш прекрасный Arduino спидометр, следите за транспортом и людьми!

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Читать еще:  Советы, какой выбрать аккумулятор и как установить на renault (logan и другие модели)
Ссылка на основную публикацию
Adblock
detector