Projektbeskrivelse
Dette projekt bruger M5Stack Hall Effect Unit-sensoren til at måle cyklens hastighed. Vi startede med at fastgøre tre små magneter på den indvendige fælg af hjulet og montere Hall-sensoren sikkert på stellet. Når hjulet drejer, roterer magneterne med det, og hver gang en magnet passerer Hall-sensoren, genererer den et elektrisk signal.
For at beregne hastigheden måler vi først hjulets omkreds. Derefter registrerer vi tidsintervallet mellem to signaler for at bestemme, hvor lang tid det tager for magneten at gennemføre en fuld omdrejning. Ved at dividere hjulets omkreds med den registrerede tid får vi cyklens hastighed.
Det er vigtigt at indarbejde en anti-rystemekanisme i koden for at undgå flere udløsninger, når hjulet drejer langsomt. Uden denne kan sensoren registrere falske signaler, hvilket fører til unøjagtige hastighedsaflæsninger. Dette projekt demonstrerer, hvordan man effektivt anvender sensorer samtidig med, at man sikrer nøjagtighed og pålidelighed gennem gennemtænkt implementering.
Funktionelle egenskaber
- Realtids hastighedsvisning: Den aktuelle hastighed på cyklen vises i realtid på M5StickC Plus 2-skærmen og leverer præcise hastighedsmålinger for en nøjagtig køreoplevelse.
- Hall-effektsensorregistrering: Systemet udnytter M5Stack Hall Effect Sensor til at beregne hastigheden ved at måle frekvensen, hvormed en magnet passerer over sensoren, hvilket sikrer præcis og konsekvent hastighedsregistrering.
- Anti-rystemekanisme: En indbygget anti-rystealgoritme forhindrer flere signaludløsninger forårsaget af langsomme hjulhastigheder eller vejstød, hvilket forbedrer nøjagtigheden af hastighedsvisningen.
- Letvægtsdesign: Med den kompakte og lette M5StickC Plus 2 som controller passer systemet perfekt på cykler, optager minimal plads og leverer samtidig robust funktionalitet.
Installation og drift
Forudsætning
Softwareafhængighed: Arduino IDE osv. Hardwarekrav: USB-C kabel, M5StickCPlus2, Hall Effect Unit osv. Afhængigheder: M5StickCPlus2-bibliotek, Arduino-bibliotek osv.
Installation af afhængigheder
1. Efter installation af Arduino IDE åbnes Indstillinger-menuen, indsæt M5-udviklingsboard-linket i det relevante felt, og klik på OK for at gemme ændringerne.
2. Åbn Værktøjer->Board->Boards Manager
3. Søg efter M5Stack i Arduino Library Manager og installer det. Da det allerede er installeret på dette system, gentager jeg ikke installationsprocessen.
4. Vælg udviklingsversion, Værktøjer->Board->M5Stack Arduino->M5StickCPlus2
5. Installer derefter M5StickCPlus2-biblioteket ved at vælge Værktøjer -> Administrer biblioteker, søge efter 'M5StickCPlus2' og klikke på Installer. Hvis biblioteket allerede er installeret, springes installationsprocessen over.
1. Først får vi Hall Effect Unit og lærer, at når en magnet kommer tæt på, lyser indikatoren på outputpinnen, og et elektrisk signal sendes fra I-pinnen.
2. Først begyndte vi med at definere modtagelsespins til Hall-sensorens elektriske signaler.
#define WHEEL_CIRCUMFERENCE 2000 // Dæk-omkreds i mm #define HALL_PIN 33 // Hall-sensorpins #define DEBOUNCE_TIME 50 // Ditheringstid i millisekunder #define INPUT_PIN 26
3. Initialisering af Plus 2-displayet.
// 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. Anti-rystedesign: Ved at registrere intervallet mellem elektriske signaler fra Hall-sensoren kan vi afgøre, om der er sket gentagne registreringer.
int counter = 0; // Registrer antallet af hjulrotationer unsigned long lastPulseTime = 0; // Tidspunkt for sidste registrerede puls unsigned long lastDisplayTime = 0; // Sidste gang opdateringen blev vist 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++; // Øget tælling angiver én hjulrotation. lastPulseTime = currentTime; // Opdater sidste pulstidspunkt }
5. Nøglen til at opnå hastigheden er at beregne den ved at måle tidsintervallet mellem to signaler og kombinere det med hjullets omkreds, og derefter vise resultatet på M5StickC Plus 2-skærmen.
// 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; }
Kompilér og kør
1. Først skal du downloade zip-arkivet. Når download er færdig, pak det ud og åbn speed.ino fil.
2. Tilslut M5StickC Plus 2 til din computer med et USB-C-kabel. Gå derefter til Værktøjer -> Port og vælg den korrekte port.
3. Klik på Compile, og når kompileringen er færdig, klik på Upload.
Projektudstilling