Мой самодельный велокомпьютер на Arduino Nano с OLED-дисплеем

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

Функции моего самодельного велокомпьютера:

  • измерение и отображение пройденного пути;
  • измерение и отображение текущей скорости;
  • измерение и отображение средней скорости;
  • измерение и отображение пиковой скорости;
  • измерение и отображение времени в пути;
  • автоматическое отключение индикации при остановке и автоматическое включение индикации при начале движения;
  • режим охраны;
  • подача звукового сигнала.

прошивка
Hex
-файл
прошивки для Arduino Nano 3.0 (версия от 18 июля 2018 года) - bike.ino.eightanaloginputs.hex.
Как прошить hex-файл в плату Arduino, я описал здесь.

Мой велокомпьютер на основе Arduino Nano содержит три основных части:

  • датчик оборотов;
  • модуль обработки и индикации;
  • модуль питания.

Датчик оборотов

Датчик оборотов предназначен для регистрации оборотов колеса велосипеда. Я применил контактный датчик - геркон, контакты которого замыкаютя под воздействием магнитного поля постоянного магнита.

Обычный геркон проявил себя ненадежно (пропускаются обороты колеса):
геркон велокомпьютер

Для улучшения фиксации оборотов я применил датчик от охранной сигнализации:
геркон велокомпьютера

Я закрепил датчик (1) на раме велосипеда, а постоянный магнит (2) - на спицах колеса:
геркон велокомпьютера
При вращении колеса в течение каждого оборота магнит проходит возле геркона датчика, и магнитное поле магнита вызывает замыкание контактов геркона - одно замыкание на один оборот колеса велосипеда.

Модуль обработки и индикации

Модуль обработки и индикации предназначен для приема информации от датчика оборотов, ее обработки и вывода результатов обработки на индикатор:

внешний вид:
велокомпьютер на Arduino

схема:
велокомпьютер на Arduino

Модуль принимает информацию от датчика оборотов (контакт геркона подключен к выводу A1 Arduino) и обрабатывает ее с учетом диаметра колеса (у моего велосипеда D = 2,06 м (50-559)).

Для улучшения видимости показаний и повышения информативности я применил OLED-дисплей на контроллере SSD1306 (я приобрел его на eBay):
SSD1306
Дисплей имеет интерфей I2C с четырьмя контактами:

контакт дисплея VCC SDA SCL GND
контакт Arduino +5V A4 A5 GND

На дисплее отображаются:
велокомпьютер на Arduino

(1) - текущая скорость движения (англ. current speed), км/ч
(2) - пройденный путь (англ. trip distance), км
(3) - средняя скорость движения (англ. average speed), км/ч
(4) - пиковая скорость движения (англ. maximum speed), км/ч
(5) - время в пути, ч.мм (двоеточие мигает)

Вот изображение с дисплея при остановке:
самодельный велокомпьютер

Для наглядного отображения текущей скорости движения велосипеда я применил линейку из восьми светодиодов, катоды которых через токоограничивающие резисторы сопротивлением 390 Ом подключены к выводу A0 Arduino, а аноды - параллельно сегментам индикатора:
самодельный велокомпьютер
1 - зеленый - скорость 5...10 км/ч - вывод Arduino D0
2 - зеленый - скорость 10...15 км/ч - вывод Arduino D1
3 - зеленый - скорость 15...20 км/ч - вывод Arduino D2
4 - желтый - скорость 20...25 км/ч - вывод Arduino D3
5 - желтый - скорость 25...35 км/ч - вывод Arduino D4
6 - красный - скорость 35...50 км/ч - вывод Arduino D5
7 - красный - скорость 50...70 км/ч - вывод Arduino D6
8 - красный - скорость более 70 км/ч - вывод Arduino D7

На боковой грани модуля расположены кнопки управления, подключенные к выводам Arduino - черная - к D9, зеленая - к D11:
велокомпьютер своими руками

Пьезосирена подключена к выводу D10 Arduino.

На боковой грани модуля расположены выключатель для подачи питания (напряжение 5 В) от выхода преобразователя модуля питания, индикаторный светодиод и разъем miniUSB для программирования Arduino:
велокомпьютер на Arduino

Индикаторный светодиод подключен через токоограничивающий резистор сопротивлением 2 кОм к выводу D13 Arduino. Светодиод загорается, индицируя замкнутое состояние контактов геркона.

Корпус модуля стянут нейлоновыми стяжками.

Модуль питания

Модуль питания предназначен для электропитания модуля обработки и индикации:
как сделать велокомпьютер

Он содержит два параллельно соединенных литий-ионных аккумулятора, выключатель и повышающий преобразователь.
Я использовал аккумуляторы от батареи ноутбука:
аккумуляторы велокомпьютера
Для заряда аккумуляторов их контакты подключены к выведенным наружу корпуса винтовым зажимам. Полностью заряженные аккумуляторы выдают на вход преобразователя напряжение 4,23 В.

Повышающий преобразователь на микросхеме MC34063 предназначен для повышения напряжения от аккумуляторов до уровня 5 В:
преобразователь питания велокомпьютера

Выключатель позволяет подключать аккумулятор к входу преобразователя, выход преобразователя подключен к модулю обработки и индикации.

Корпус модуля стянут нейлоновыми стяжками.

Эксплуатация велокомпьютера

Я закрепил модуль обработки и индикации и модуль питания на велосипеде:
самодельный велокомпьютер

При включении велокомпьютера выполняется тест дисплея и полоски светодиодов:
самодельный велокомпьютер

Затем велокомпьютер переходит в рабочий режим.

Для управления велокомпьютером предназначены две кнопки на боковой грани модуля обработки и индикации:
велокомпьютер своими руками

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

Длительное (дольше двух секунд) нажатие на черную кнопку приводит к включению/выключению режима охраны, что отображается значком на дисплее:
велокомпьютер
В этом режиме каждые 10 секунд кратковременно загорается полоска светодиодов.
Если в режиме охраны колесо велосипеда придет в движение, то подается тревожный звуковой сигнал.

Короткое нажатие на зеленую кнопку приводит к включению/выключению дисплея.

Длительное (дольше двух секунд) нажатие на зеленую кнопку приводит к стиранию сохраненных показаний.

При остановке на дисплее отображается соответствующий значок:
как сделать велокомпьютер

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

Продолжение следует

Яндекс.Метрика