M5StickC Plus2: cree un sistema de detección de velocidad para bicicletas
Descripción del Proyecto
Este proyecto utiliza el sensor de unidad de efecto Hall M5Stack para rastrear la velocidad de la bicicleta. Comenzamos colocando tres imanes pequeños en el borde interior de la rueda y montando de forma segura el sensor Hall en el marco. A medida que la rueda gira, los imanes giran junto con ella y cada vez que un imán pasa por el sensor Hall, genera una señal eléctrica.
Para calcular la velocidad, primero medimos la circunferencia de la rueda. Luego, registramos el intervalo de tiempo entre dos señales para determinar cuánto tiempo le toma al imán completar una revolución completa. Dividiendo la circunferencia de la rueda por el tiempo registrado obtenemos la velocidad de la bicicleta.
Es imprescindible incorporar en el código un mecanismo antivibración para evitar múltiples disparos cuando la rueda gira lentamente. Sin esto, el sensor puede registrar señales falsas, lo que provocará lecturas de velocidad inexactas. Este proyecto demuestra cómo aplicar sensores de manera efectiva y al mismo tiempo garantizar precisión y confiabilidad mediante una implementación cuidadosa.
Características funcionales
- Visualización de velocidad en tiempo real: la velocidad actual de la bicicleta se muestra en tiempo real en la pantalla del M5StickC Plus 2, ofreciendo mediciones de velocidad precisas para una experiencia de conducción precisa.
- Detección del sensor de efecto Hall: el sistema aprovecha el sensor de efecto Hall M5Stack para calcular la velocidad midiendo la frecuencia a la que un imán pasa sobre el sensor, asegurando un seguimiento de velocidad preciso y consistente.
- Mecanismo antivibración: un algoritmo antivibración incorporado evita que se activen múltiples señales causadas por velocidad lenta de las ruedas o baches en la carretera, mejorando el mecanismo antivibración. fuerte>precisión de la indicación de velocidad.
- Diseño liviano: Con el compacto y liviano M5StickC Plus 2 como controlador, el sistema se adapta perfectamente a las bicicletas, ocupando un espacio mínimo y brindando una funcionalidad robusta.
Instalación y Operación
Precondición
Dependencia del software: Arduino IDE, etc. Requisitos de hardware: cable USB-C, M5StickCPlus2, Unidad de efecto Hall, etc. Dependencias: biblioteca M5StickCPlus2, biblioteca Arduino, etc.
Instalación de Dependencias
1. Después de instalar el IDE de Arduino, abra el menú Configuración, pegue el enlace de la placa de desarrollo M5 en el campo correspondiente y haga clic en Aceptar para guardar los cambios.
2. Abre Herramientas->Placa->Administrador de Placas
3. Busque M5Stack en Arduino Library Manager e instálelo. Como ya está instalado en este sistema, no repetiré el proceso de instalación.
4. Seleccione la versión de desarrollo, Herramientas->Placa->M5Stack Arduino->M5StickCPlus2
5. A continuación, instale la biblioteca M5StickCPlus2 seleccionando Herramientas -> Administrar bibliotecas, buscando 'M5StickCPlus2' y haciendo clic en Instalar. Si la biblioteca ya está instalada, se omitirá el proceso de instalación.
1. Primero, obtenemos la unidad de efecto Hall y aprendemos que cada vez que se acerca un imán, el indicador en el pin de salida se enciende y se envía una señal eléctrica desde el pin I.
2. Primero, comenzamos por definir los pines receptores de las señales eléctricas del sensor Hall.
#define WHEEL_CIRCUMFERENCE 2000 // Circunferencia del neumático en mm #define HALL_PIN 33 // Pines del sensor Hall #define DEBOUNCE_TIME 50 // Tiempo de tramado en milisegundos #define INPUT_PIN 26
3. Inicializando la pantalla Plus 2.
// Initialize M5StickC Plus2 M5.begin(); // Setting the orientation and font of the display M5.Lcd.setRotation(1); M5.Lcd.setTextSize(4); M5.Lcd.fillScreen(BLACK); M5.Lcd.setTextColor(WHITE);
4. Diseño antivibración: al detectar el intervalo entre señales eléctricas del sensor Hall, podemos determinar si se han producido detecciones repetidas.
contador int = 0; //Registra el número de rotaciones de neumáticos. lastPulseTime largo sin firmar = 0; // Hora del último pulso detectado lastDisplayTime largo sin firmar = 0; // La última vez que se mostró la actualización unsigned long currentTime = 0; currentTime = millis(); // Read Hall sensor status bool hallState = digitalRead(HALL_PIN); // Changes in Hall sensors are detected and jitter has to be filtered out if (hallState == LOW && (hora actual - última hora de pulso > DEBOUNCE_TIME)) { contador++; // El aumento del recuento indica una rotación de neumático. últimotiempodepulso = tiempoactual; // Actualizar la hora del último pulso }
5. La clave para obtener la velocidad es calcularla midiendo el intervalo de tiempo entre dos señales y combinándolo con la circunferencia de la rueda, luego mostrando el resultado en la pantalla del M5StickC Plus 2.
// Update screen display every 1 second if (currentTime - lastDisplayTime >= 1000) { M5.Lcd.fillScreen(BLACK); M5.Lcd.setCursor(20, 20); // Calculation of v'elocity in millimeters per second, converted to meters per second double speed = ((double)counter * (double)WHEEL_CIRCUMFERENCE) / 1000.0; // Create a character buffer to store the formatted speed value char buffer[20]; snprintf(buffer, sizeof(buffer), ' Speed: %.2f m/s', speed); // Prints formatted speed value to LCD M5.Lcd.print(buffer); // Reset Counter counter = 0; // Update the displayed time lastDisplayTime = currentTime; }
Compilar y Ejecutar
1. Primero, descargue el archivo zip. Una vez que se complete la descarga, descomprímala y abra el speed.ino archivo.
2. Conecte el M5StickC Plus 2 a su computadora usando un cable USB-C. Luego, vaya a Herramientas -> Puerto y seleccione el puerto correcto.
3. Haga clic en Compilar y, una vez completada la compilación, haga clic en Cargar.
Exhibición de Proyectos