M5StickC Plus2: Bouw een fietssnelheidsdetectiesysteem
Projectbeschrijving
Dit project maakt gebruik van de M5Stack Hall Effect Unit-sensor om de snelheid van de fiets te volgen. We zijn begonnen met het bevestigen van drie kleine magneten aan de binnenrand van het wiel en het stevig bevestigen van de Hall-sensor op het frame. Terwijl het wiel draait, draaien de magneten mee, en elke keer dat een magneet de Hall-sensor passeert, genereert deze een elektrisch signaal.
Om de snelheid te berekenen, meten we eerst de wielomtrek. Vervolgens registreren we het tijdsinterval tussen twee signalen om te bepalen hoe lang het duurt voordat de magneet een volledige omwenteling heeft voltooid. Door de omtrek van het wiel te delen door de geregistreerde tijd, verkrijgen we de snelheid van de fiets.
Het is essentieel om een anti-schudmechanisme in de code op te nemen om meerdere triggers te voorkomen wanneer het wiel langzaam draait. Zonder dit kan de sensor valse signalen registreren, wat leidt tot onnauwkeurige snelheidsmetingen. Dit project laat zien hoe u sensoren effectief kunt toepassen en tegelijkertijd nauwkeurigheid en betrouwbaarheid kunt garanderen door middel van een doordachte implementatie.
Functionele kenmerken
- Realtime snelheidsweergave: De huidige snelheid van de fiets wordt in realtime weergegeven op het M5StickC Plus 2 scherm, waardoor nauwkeurige snelheidsmetingen voor een nauwkeurige rijervaring.
- Hall Effect Sensor Detectie: Het systeem maakt gebruik van de M5Stack Hall Effect Sensor om de snelheid te berekenen door de frequentie te meten waarmee een magneet over de sensor passeert, zorgen voor nauwkeurige en consistente snelheidsregistratie.
-
Anti-schudmechanisme: een ingebouwd anti-schudalgoritme voorkomt meerdere signaaltriggers veroorzaakt door lage wielsnelheden of verkeersdrempels, waardoor de
nauwkeurigheid van de snelheidsweergave. - Lichtgewicht ontwerp: Met de compacte en lichtgewicht M5StickC Plus 2 als controller past het systeem perfect op fietsen, neemt het minimale ruimte in beslag en biedt het robuuste functionaliteit.
Installatie en werking
Voorwaarde
Softwareafhankelijkheid: Arduino IDE enz. Hardwarevereisten: USB-C kabel, M5StickCPlus2 >, Hall Effect Unit, enz. Afhankelijkheden: M5StickCPlus2-bibliotheek, Arduino-bibliotheek, enz.
Installatie van afhankelijkheden
1. Open na het installeren van de Arduino IDE het menu Instellingen, plak de link naar het M5-ontwikkelbord in het juiste veld en klik op OK om de wijzigingen op te slaan.
2. Open Gereedschappen->Bord->Bordenbeheer
3. Zoek naar M5Stack in de Arduino Library Manager en installeer deze. Omdat het al op dit systeem is geïnstalleerd, zal ik het installatieproces niet herhalen.
4. Selecteer de ontwikkelingsversie, Tools->Board->M5Stack Arduino->M5StickCPlus2
5. Installeer vervolgens de M5StickCPlus2-bibliotheek door Extra -> Bibliotheken beheren te selecteren, te zoeken naar 'M5StickCPlus2' en op Installeren te klikken. Als de bibliotheek al is geïnstalleerd, wordt het installatieproces overgeslagen.
1. Eerst verkrijgen we de Hall Effect Unit en leren dat wanneer een magneet in de buurt komt, de indicator op de uitgangspin oplicht en er een elektrisch signaal wordt verzonden vanaf de I-pin.
2. Eerst zijn we begonnen met het definiëren van de ontvangstpinnen voor de elektrische signalen van de Hall-sensor.
#define WHEEL_CIRCUMFERENCE 2000 // Bandomtrek in mm #define HALL_PIN 33 // Hall-sensorpinnen #define DEBOUNCE_TIME 50 // Ditheringtijd in milliseconden #define INPUT_PIN 26
3. Het Plus 2-display initialiseren.
// 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-trillingsontwerp: door het interval tussen elektrische signalen van de Hall-sensor te detecteren, kunnen we bepalen of herhaalde detecties hebben plaatsgevonden.
int-teller = 0; // Registreer het aantal bandomwentelingen niet-ondertekend lang lastPulseTime = 0; // Tijdstip van de laatst gedetecteerde puls niet-ondertekend lang lastDisplayTime = 0; // De laatste keer dat de update werd weergegeven unsigned long currentTime = 0; huidigeTijd = 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 == LAAG && (currentTime - lastPulseTime > DEBOUNCE_TIME)) { teller++; // Een verhoogd aantal duidt op één bandomwenteling. laatstePulseTime = huidigeTijd; // Update laatste pulstijd }
5. De sleutel tot het verkrijgen van de snelheid is het berekenen ervan door het tijdsinterval tussen twee signalen te meten en dit te combineren met de omtrek van het wiel, en vervolgens het resultaat weer te geven op het M5StickC Plus 2 scherm.
// 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; }
Compileren en uitvoeren
1. Download eerst het zip-archief. Zodra het downloaden is voltooid, pakt u het uit en opent u het speed.ino bestand.
2. Sluit de M5StickC Plus 2 aan op uw computer met behulp van een USB-C-kabel. Ga vervolgens naar Extra -> Poort en selecteer de juiste poort.
3. Klik op Compileren en zodra de compilatie is voltooid, klikt u op Uploaden.
Project Showcase