В моих велотрипах мне часто требуется определять расстояние между точками маршрута, знать скорость движения, время в пути... В этом мне помогает мой самодельный велокомпьютер на основе популярного Arduino Nano 3.0.
Функции моего самодельного велокомпьютера:
- измерение и отображение пройденного пути;
- измерение и отображение текущей скорости;
- измерение и отображение средней скорости;
- измерение и отображение пиковой скорости;
- измерение и отображение времени в пути;
- автоматическое отключение индикации при остановке и автоматическое включение индикации при начале движения;
- режим охраны;
- подача звукового сигнала.
Hex-файл прошивки для Arduino Nano 3.0 (версия от 18 июля 2018 года) - bike.ino.eightanaloginputs.hex.
Как прошить hex-файл в плату Arduino, я описал здесь.
Мой велокомпьютер на основе Arduino Nano содержит три основных части:
- датчик оборотов;
- модуль обработки и индикации;
- модуль питания.
Датчик оборотов
Датчик оборотов предназначен для регистрации оборотов колеса велосипеда. Я применил контактный датчик - геркон, контакты которого замыкаютя под воздействием магнитного поля постоянного магнита.
Обычный геркон проявил себя ненадежно (пропускаются обороты колеса):
Для улучшения фиксации оборотов я применил датчик от охранной сигнализации:
Я закрепил датчик (1) на раме велосипеда, а постоянный магнит (2) - на спицах колеса:
При вращении колеса в течение каждого оборота магнит проходит возле геркона датчика, и магнитное поле магнита вызывает замыкание контактов геркона - одно замыкание на один оборот колеса велосипеда.
Модуль обработки и индикации
Модуль обработки и индикации предназначен для приема информации от датчика оборотов, ее обработки и вывода результатов обработки на индикатор:
внешний вид:
схема:
Модуль принимает информацию от датчика оборотов (контакт геркона подключен к выводу A1 Arduino) и обрабатывает ее с учетом диаметра колеса (у моего велосипеда D = 2,06 м (50-559)).
Для улучшения видимости показаний и повышения информативности я применил OLED-дисплей на контроллере SSD1306 (я приобрел его на eBay):
Дисплей имеет интерфей I2C с четырьмя контактами:
контакт дисплея |
VCC |
SDA |
SCL |
GND |
контакт Arduino |
+5V |
A4 |
A5 |
GND |
На дисплее отображаются:
(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:
Индикаторный светодиод подключен через токоограничивающий резистор сопротивлением 2 кОм к выводу D13 Arduino. Светодиод загорается, индицируя замкнутое состояние контактов геркона.
Корпус модуля стянут нейлоновыми стяжками.
Модуль питания
Модуль питания предназначен для электропитания модуля обработки и индикации:
Он содержит два параллельно соединенных литий-ионных аккумулятора, выключатель и повышающий преобразователь.
Я использовал аккумуляторы от батареи ноутбука:
Для заряда аккумуляторов их контакты подключены к выведенным наружу корпуса винтовым зажимам. Полностью заряженные аккумуляторы выдают на вход преобразователя напряжение 4,23 В.
Повышающий преобразователь на микросхеме MC34063 предназначен для повышения напряжения от аккумуляторов до уровня 5 В:
Выключатель позволяет подключать аккумулятор к входу преобразователя, выход преобразователя подключен к модулю обработки и индикации.
Корпус модуля стянут нейлоновыми стяжками.
Эксплуатация велокомпьютера
Я закрепил модуль обработки и индикации и модуль питания на велосипеде:
При включении велокомпьютера выполняется тест дисплея и полоски светодиодов:
Затем велокомпьютер переходит в рабочий режим.
Для управления велокомпьютером предназначены две кнопки на боковой грани модуля обработки и индикации:
Короткое нажатие на черную кнопку приводит к включению/выключению звукового сигнала, издаваемого пьезосиреной. При этом включенный звуковой сигнал иллюстрируется на дисплее значком динамика:
Длительное (дольше двух секунд) нажатие на черную кнопку приводит к включению/выключению режима охраны, что отображается значком на дисплее:
В этом режиме каждые 10 секунд кратковременно загорается полоска светодиодов.
Если в режиме охраны колесо велосипеда придет в движение, то подается тревожный звуковой сигнал.
Короткое нажатие на зеленую кнопку приводит к включению/выключению дисплея.
Длительное (дольше двух секунд) нажатие на зеленую кнопку приводит к стиранию сохраненных показаний.
При остановке на дисплее отображается соответствующий значок:
Если остановка длится, то велокомпьютер переходит в парковочный режим - отключается дисплей. Включение дисплея происходит при движении велосипеда или при коротком нажатии на зеленую кнопку.
Продолжение следует