Popis projektu
Tento projekt používá senzor M5Stack Hall Effect Unit k měření rychlosti jízdního kola. Začali jsme připevněním tří malých magnetů na vnitřní okraj kola a pevnou montáží Hallova senzoru na rám. Když se kolo otáčí, magnety se s ním otáčejí a pokaždé, když magnet projde kolem Hallova senzoru, generuje elektrický signál.
Pro výpočet rychlosti nejprve změříme obvod kola. Poté zaznamenáme časový interval mezi dvěma signály, abychom určili, jak dlouho trvá magnetu dokončit jeden úplný oběh. Vydělením obvodu kola zaznamenaným časem získáme rychlost jízdního kola.
Je nezbytné začlenit do kódu mechanismus proti chvění, aby se zabránilo vícenásobným spouštěním při pomalém otáčení kola. Bez toho může senzor zaznamenávat falešné signály, což vede k nepřesným měřením rychlosti. Tento projekt ukazuje, jak efektivně používat senzory a zároveň zajistit přesnost a spolehlivost prostřednictvím promyšlené implementace.
Funkční vlastnosti
- Zobrazení rychlosti v reálném čase: Aktuální rychlost jízdního kola je zobrazena v reálném čase na obrazovce M5StickC Plus 2, poskytující přesná měření rychlosti pro přesný zážitek z jízdy.
- Detekce Hallova efektu: Systém využívá M5Stack Hall Effect Sensor k výpočtu rychlosti měřením frekvence, s jakou magnet prochází nad senzorem, což zajišťuje přesné a konzistentní sledování rychlosti.
- Mechanismus proti chvění: Vestavěný algoritmus proti chvění zabraňuje opakovaným spouštěním signálu způsobeným nízkými rychlostmi kol nebo nerovnostmi na silnici, čímž zvyšuje přesnost zobrazení rychlosti.
- Lehký design: Díky kompaktnímu a lehkému M5StickC Plus 2 jako řídicímu prvku systém dokonale sedí na jízdních kolech, zabírá minimum místa a přitom poskytuje robustní funkčnost.
Instalace a provoz
Předpoklad
Softwarová závislost: Arduino IDE atd. Hardwarové požadavky: USB-C kabel, M5StickCPlus2, Hall Effect Unit atd. Závislosti: Knihovna M5StickCPlus2, Arduino knihovna atd.
Instalace závislostí
1. Po instalaci Arduino IDE otevřete nabídku Nastavení, vložte odkaz na vývojovou desku M5 do příslušného pole a klikněte na OK pro uložení změn.
2. Otevřete Nástroje->Deska->Správce desek
3. Vyhledejte M5Stack v Arduino Library Manager a nainstalujte jej. Protože je již na tomto systému nainstalován, nebudu proces instalace opakovat.
4. Vyberte vývojovou verzi, Nástroje->Deska->M5Stack Arduino->M5StickCPlus2
5. Dále nainstalujte knihovnu M5StickCPlus2 výběrem Nástroje -> Spravovat knihovny, vyhledáním 'M5StickCPlus2' a kliknutím na Instalovat. Pokud je knihovna již nainstalována, proces instalace bude přeskočen.
1. Nejprve získáme Hallův efektový modul a zjistíme, že kdykoli se přiblíží magnet, indikátor na výstupním pinu se rozsvítí a z I pinu je odeslán elektrický signál.
2. Nejprve jsme začali definováním přijímacích pinů pro elektrické signály Hallova senzoru.
#define WHEEL_CIRCUMFERENCE 2000 // Obvod pneumatiky v mm #define HALL_PIN 33 // Piny Hallova senzoru #define DEBOUNCE_TIME 50 // Čas pro odstranění zákmitů v milisekundách #define INPUT_PIN 26
3. Inicializace displeje 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. Design proti chvění: Detekcí intervalu mezi elektrickými signály z Hallova senzoru můžeme určit, zda došlo k opakovaným detekcím.
int counter = 0; // Zaznamenat počet otočení pneumatik unsigned long lastPulseTime = 0; // Čas posledního detekovaného pulzu unsigned long lastDisplayTime = 0; // Poslední čas, kdy bylo zobrazení aktualizováno 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)) { counter++; // Zvýšený počet znamená jedno otočení pneumatiky. lastPulseTime = currentTime; // Aktualizovat čas posledního pulzu }
5. Klíčem k získání rychlosti je její výpočet měřením časového intervalu mezi dvěma signály a kombinací s obvodem kola, poté zobrazení výsledku na obrazovce 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; }
Kompilace a spuštění
1. Nejprve stáhněte zip archiv. Po dokončení stahování jej rozbalte a otevřete speed.ino soubor.
2. Připojte M5StickC Plus 2 k počítači pomocí USB-C kabelu. Poté přejděte na Nástroje -> Port a vyberte správný port.
3. Klikněte na Sestavit a jakmile je sestavení dokončeno, klikněte na Nahrát.
Prezentace projektu