
Если вы хотите знать свою скорость во время езды на велосипеде, но не хотите носить с собой гаджет, подумайте о создании собственного спидометра с помощью микроконтроллера. Это не только увлекательный проект, но и отличный способ научиться работать с электроникой.
Чтобы измерить скорость, нам нужно знать, как часто колесо вращается за определенный промежуток времени. Для этого мы будем использовать датчик Холла, который срабатывает каждый раз, когда магнит, прикрепленный к колесу, проходит мимо него. Количество импульсов, генерируемых датчиком, прямо пропорционально скорости вращения колеса.
После того, как мы получим данные о скорости, мы можем вывести их на дисплей. Для этого можно использовать жидкокристаллический дисплей (LCD) с интерфейсом I2C. Он прост в использовании и позволяет отображать текст и числа.
Чтобы начать проект, вам понадобится микроконтроллер Arduino, датчик Холла, магнит, жидкокристаллический дисплей с интерфейсом I2C, провода и breadboard для сборки схемы. Также вам понадобится программное обеспечение Arduino для программирования микроконтроллера.
Выбор компонентов для измерения скорости велосипеда
Для измерения скорости велосипеда вам понадобится датчик вращения колеса. Рекомендуется использовать датчик магнитный, такой как Hall Effect Sensor. Он работает, обнаруживая магнит, прикрепленный к колесу, и генерирует импульс каждый раз, когда колесо вращается.
Также вам понадобится дисплей для отображения скорости. Рекомендуется использовать ЖК-дисплей, такой как LCD 16×2. Он имеет достаточную площадь для отображения скорости и прост в использовании.
Для питания всей системы вам понадобится источник питания. Рекомендуется использовать аккумулятор или батарею, так как они обеспечивают портативность и мобильность.
Программирование Микроконтроллера
Начните с установки среды программирования Arduino IDE на ваш компьютер. Это позволит вам писать и загружать код на микроконтроллер. Рекомендуется использовать официальный сайт Arduino для загрузки и установки IDE.
После установки IDE, вам понадобится подключить ваш микроконтроллер к компьютеру через USB-кабель. Затем откройте IDE и создайте новый проект. Для начала, вам понадобится включить сериальный монитор в IDE, чтобы отслеживать данные, отправляемые микроконтроллером.
Для измерения скорости велосипеда, вам понадобится подключить датчик скорости к микроконтроллеру. Рекомендуется использовать датчик магнитного поля, который генерирует импульсы при каждом обороте колеса. Подключите датчик к соответствующим пинам микроконтроллера и начните программирование.
В коде микроконтроллера, вам понадобится использовать функцию interrupts, чтобы отслеживать импульсы датчика скорости. При каждом импульсе, увеличьте счетчик оборотов и вычислите скорость в км/ч. Рекомендуется использовать формулу: скорость = (обороты за время / число зубьев на колесе) * (диаметр колеса в метрах / пи) * 3.6.
Чтобы отобразить скорость на дисплее, вам понадобится подключить ЖК-дисплей к микроконтроллеру. Рекомендуется использовать дисплей с интерфейсом I2C, так как он требует меньше пинов микроконтроллера. В коде, используйте библиотеку для управления дисплеем, чтобы отобразить скорость в реальном времени.
Пример кода
Вот пример кода, который измеряет скорость велосипеда и отображает ее на ЖК-дисплее:
cpp
#include
#include
const int magnetPin = 2; // пиновой ввод датчика магнитного поля
volatile int count = 0; // счетчик оборотов
float speed = 0.0; // скорость в км/ч
float circumference = 2 * PI * 0.05; // окружность колеса в метрах
float wheelRevolutions = 0.0; // количество оборотов колеса
LiquidCrystal_I2C lcd(0x27, 16, 2); // адрес и размеры ЖК-дисплея
void setup() {
pinMode(magnetPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(magnetPin), countRevolution, RISING);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print(«Speed:»);
}
void loop() {
speed = (wheelRevolutions / 10) * (circumference / 1000) * 3.6; // вычисляем скорость в км/ч
lcd.setCursor(7, 0);
lcd.print(speed);
delay(100);
}
void countRevolution() {
count++;
if (count == 10) {
wheelRevolutions++;
count = 0;
}
}












