🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🚲 Проект: велоспидометр на герконе KY-025 и LCD1602

Геркон KY-025 и LCD1602

Магнит на спице колеса раз за оборот проходит мимо геркона KY-025, закреплённого на вилке — зная длину окружности колеса, Arduino считает скорость и общий пробег на LCD1602.

Как это работает

Геркон (герметичный контакт) — это механический переключатель, который замыкается под действием магнитного поля. KY-025 устроен так же, как в велокомпьютерах с проводным датчиком: небольшой магнит закрепляется на спице колеса, а сам геркон — на неподвижной части вилки так, чтобы магнит при каждом обороте колеса проходил в нескольких миллиметрах от него. Каждое прохождение магнита мимо геркона даёт один импульс замыкания контакта.

Зная длину окружности колеса (расстояние, которое велосипед проезжает за один оборот) и время между двумя последовательными импульсами геркона, легко посчитать мгновенную скорость: окружность, делённая на время одного оборота, даёт пройденное расстояние в единицу времени. А суммируя длину окружности на каждый зафиксированный оборот — получаем общий пройденный путь (одометр).

Важный нюанс в коде — расчёт скорости должен учитывать ситуацию, когда велосипед остановился: если новых импульсов от геркона давно не было, скорость должна показывать 0, а не «зависать» на последнем измеренном значении до следующего оборота колеса.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Закрепите небольшой неодимовый магнит на спице колеса максимально близко к ободу или ступице (по вкусу), а геркон KY-025 — на неподвижной части рамы или вилки так, чтобы магнит при каждом обороте проходил вплотную к датчику.
  2. Подключите KY-025: сигнальный выход → D2, VCC → 5V, GND → GND.
  3. Подключите LCD1602 с I2C-переходником: SDA → A4, SCL → A5 (на платах с другой маркировкой — к пинам, подписанным так же).
  4. Измерьте рулеткой длину окружности колеса (катить колесо один полный оборот и замерить пройденное расстояние — точнее, чем считать по диаметру через формулу).
  5. Прокрутите колесо вручную несколько раз и убедитесь, что на дисплее меняются показания скорости и пробега — только потом устанавливайте электронику окончательно.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

const int reedPin = 2;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const float wheelCircumferenceM = 2.1; // длина окружности колеса, метры — измерьте рулеткой!
volatile unsigned long lastPulse = 0;  // время последнего импульса от геркона, мс
volatile unsigned long interval = 0;   // интервал между последними двумя импульсами, мс
float totalDistanceKm = 0;             // накопленный пробег, км
bool lastState = HIGH;

void setup() {
  Serial.begin(9600);
  pinMode(reedPin, INPUT);
  lcd.init();
  lcd.backlight();
}

void loop() {
  bool state = digitalRead(reedPin);
  if (state == HIGH && lastState == LOW) {
    // геркон только что замкнулся — зафиксировали ещё один оборот колеса
    unsigned long now = millis();
    interval = now - lastPulse;
    lastPulse = now;
    totalDistanceKm += wheelCircumferenceM / 1000.0;
  }
  lastState = state;

  // если с последнего импульса прошло больше 2 секунд — считаем, что велосипед стоит
  float speedKmh = (interval > 0 && millis() - lastPulse < 2000)
    ? (wheelCircumferenceM / 1000.0) / (interval / 3600000.0) : 0;

  lcd.setCursor(0, 0);
  lcd.print("Speed: ");
  lcd.print(speedKmh);
  lcd.print("   ");
  lcd.setCursor(0, 1);
  lcd.print("Dist: ");
  lcd.print(totalDistanceKm);
  lcd.print("km  ");
  delay(200);
}

`wheelCircumferenceM` нужно измерить рулеткой по факту (длина окружности колеса) — от этого числа напрямую зависит точность показаний скорости и пробега.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← ⚙️ тахометр оборотов на фотопрерывателе KY-01…🎲 электронный кубик на кнопке и TM1637 →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 312 ₽ 281 ₽ (экономия 31 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA