M5StickC Plus2 : créer un système de détection de vitesse de vélo
Description du projet
Ce projet utilise le capteur M5Stack Hall Effect Unit pour suivre la vitesse du vélo. Nous avons commencé par fixer trois petits aimants sur la jante intérieure de la roue et par monter solidement le capteur Hall sur le cadre. Lorsque la roue tourne, les aimants tournent avec elle et chaque fois qu'un aimant passe devant le capteur Hall, il génère un signal électrique.
Pour calculer la vitesse, nous mesurons d'abord la circonférence de la roue. Ensuite, nous enregistrons l'intervalle de temps entre deux signaux pour déterminer combien de temps il faut à l'aimant pour effectuer un tour complet. En divisant la circonférence de la roue par le temps enregistré, on obtient la vitesse du vélo.
Il est essentiel d'incorporer un mécanisme anti-secousse dans le code pour éviter des déclenchements multiples lorsque la roue tourne lentement. Sans cela, le capteur peut enregistrer de faux signaux, conduisant à des mesures de vitesse inexactes. Ce projet montre comment appliquer efficacement les capteurs tout en garantissant la précision et la fiabilité grâce à une mise en œuvre réfléchie.
Caractéristiques fonctionnelles
- Affichage de la vitesse en temps réel : La vitesse actuelle du vélo est affichée en temps réel sur l'écran M5StickC Plus 2, offrant des mesures de vitesse précises pour une expérience de conduite précise.
- Détection du capteur à effet Hall : le système exploite le capteur à effet Hall M5Stack pour calculer la vitesse en mesurant la fréquence à laquelle un aimant passe sur le capteur, assurant un suivi de vitesse précis et cohérent.
- Mécanisme anti-secousses : un algorithme anti-secousses intégré empêche les déclenchements de signaux multiples causés par des vitesses lentes des roues ou des irrégularités de la route, améliorant ainsi le précision de l'affichage de la vitesse.
- Conception légère : Avec le M5StickC Plus 2 compact et léger comme contrôleur, le système s'adapte parfaitement aux vélos, occupant un minimum d'espace tout en offrant des fonctionnalités robustes.
Installation et fonctionnement
Précondition
Dépendance logicielle : Arduino IDE etc. Configuration matérielle requise : Câble USB-C, M5StickCPlus2, Unité à effet Hall, etc. Dépendances : Bibliothèque M5StickCPlus2, Bibliothèque Arduino, etc.
Installation des dépendances
1. Après avoir installé l'IDE Arduino, ouvrez le menu Paramètres, collez le lien de la carte de développement M5 dans le champ approprié et cliquez sur OK pour enregistrer les modifications.
2. Ouvrez Outils->Carte->Gestionnaire de cartes
3. Recherchez M5Stack dans le gestionnaire de bibliothèque Arduino et installez-le. Puisqu'il est déjà installé sur ce système, je ne répéterai pas le processus d'installation.
4. Sélectionnez la version de développement, Outils->Carte->M5Stack Arduino->M5StickCPlus2
5. Ensuite, installez la bibliothèque M5StickCPlus2 en sélectionnant Outils -> Gérer les bibliothèques, en recherchant « M5StickCPlus2 » et en cliquant sur Installer. Si la bibliothèque est déjà installée, le processus d'installation sera ignoré.
1. Tout d'abord, nous obtenons l'unité à effet Hall et apprenons que chaque fois qu'un aimant s'approche, l'indicateur sur la broche de sortie s'allume et un signal électrique est envoyé depuis la broche I.
2. Tout d’abord, nous avons commencé par définir les broches de réception des signaux électriques du capteur Hall.
#define WHEEL_CIRCUMFERENCE 2000 // Circonférence du pneu en mm #define HALL_PIN 33 // Broches du capteur Hall #define DEBOUNCE_TIME 50 // Temps de tramage en millisecondes #define INPUT_PIN 26
3. Initialisation de l'affichage 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. Conception anti-tremblement : En détectant l'intervalle entre les signaux électriques du capteur Hall, nous pouvons déterminer si des détections répétées ont eu lieu.
compteur int = 0 ; // Enregistre le nombre de rotations des pneus non signé long lastPulseTime = 0 ; // Heure de la dernière impulsion détectée non signé long lastDisplayTime = 0 ; // La dernière fois que la mise à jour a été affichée 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 && (currentTime - lastPulseTime > DEBOUNCE_TIME)) { compteur++; // Un nombre accru indique une rotation de pneu. lastPulseTime = heure actuelle ; // Mise à jour de l'heure de la dernière impulsion }
5. La clé pour obtenir la vitesse est de la calculer en mesurant l'intervalle de temps entre deux signaux et en le combinant avec la circonférence de la roue, puis d'afficher le résultat sur l'écran du 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; }
Compiler et exécuter
1. Tout d’abord, téléchargez l’archive zip. Une fois le téléchargement terminé, décompressez-le et ouvrez le speed.ino fichier.
2. Connectez le M5StickC Plus 2 à votre ordinateur à l'aide d'un câble USB-C. Ensuite, allez dans Outils -> Port et sélectionnez le bon port.
3. Cliquez sur Compiler, et une fois la compilation terminée, cliquez sur Télécharger.
Vitrine de projet