Projektin kuvaus
Tässä projektissa käytetään M5Stack Hall Effect Unit -anturia pyörän nopeuden seuraamiseen. Aloitimme kiinnittämällä kolme pientä magneettia pyörän sisäreunaan ja asentamalla Hall-anturin tukevasti runkoon. Kun pyörä pyörii, magneetit pyörivät mukana, ja aina kun magneetti kulkee Hall-anturin ohi, se tuottaa sähköisen signaalin.
Nopeuden laskemiseksi mittaamme ensin pyörän ympärysmitan. Sitten kirjaamme aikavälin kahden signaalin välillä määrittääksemme, kuinka kauan magneetilta kestää tehdä yksi täysi kierros. Jakamalla pyörän ympärysmitan mitatulla ajalla saamme polkupyörän nopeuden.
On välttämätöntä sisällyttää koodiin tärinänestomekanismi välttääkseen useita laukaisuja, kun pyörä pyörii hitaasti. Ilman tätä anturi saattaa rekisteröidä vääriä signaaleja, mikä johtaa epätarkkoihin nopeuslukemiin. Tämä projekti osoittaa, miten antureita käytetään tehokkaasti samalla kun varmistetaan tarkkuus ja luotettavuus huolellisella toteutuksella.
Toiminnalliset ominaisuudet
- Reaaliaikainen nopeusnäyttö: Polkupyörän nykyinen nopeus näkyy reaaliaikaisesti M5StickC Plus 2:n näytöllä, tarjoten tarkat nopeusmittaukset tarkan ajokokemuksen takaamiseksi.
- Hall-efektin anturin tunnistus: Järjestelmä hyödyntää M5Stackin Hall-efektin anturia nopeuden laskemiseen mittaamalla, kuinka usein magneetti kulkee anturin yli, varmistaen tarkan ja johdonmukaisen nopeuden seurannan.
- Tärinänestomekanismi: Sisäänrakennettu tärinänestomekanismi estää useita signaalin laukaisuja, joita aiheuttavat hitaat pyörän nopeudet tai tien töyssyt, parantaen nopeusnäytön tarkkuutta.
- Kevyt muotoilu: kompaktin ja kevyen M5StickC Plus 2:n ohjaimena järjestelmä sopii täydellisesti polkupyöriin, vie vähän tilaa ja tarjoaa samalla vankan toiminnallisuuden.
Asennus ja käyttö
Edellytys
Ohjelmistoriippuvuudet: Arduino IDE jne. Laitteistovaatimukset: USB-C-kaapeli, M5StickCPlus2, Hall Effect Unit jne. Riippuvuudet: M5StickCPlus2-kirjasto, Arduino-kirjasto jne.
Riippuvuuksien asennus
1. Arduino IDE:n asentamisen jälkeen avaa Asetukset-valikko, liitä M5-kehityskortin linkki asianmukaiseen kenttään ja napsauta OK tallentaaksesi muutokset.
2. Avaa Työkalut->Levy->Levyjen hallinta
3. Etsi M5Stack Arduino-kirjaston hallinnasta ja asenna se. Koska se on jo asennettu tähän järjestelmään, en toista asennusprosessia.
4. Valitse kehitysversio, Työkalut->Levy->M5Stack Arduino->M5StickCPlus2
5. Seuraavaksi asenna M5StickCPlus2-kirjasto valitsemalla Työkalut -> Hallinnoi kirjastoja, etsimällä 'M5StickCPlus2' ja napsauttamalla Asenna. Jos kirjasto on jo asennettu, asennus ohitetaan.
1. Ensin saamme Hall-efektiyksikön ja opimme, että aina kun magneetti lähestyy, lähtönastan merkkivalo syttyy ja sähköinen signaali lähetetään I-nastasta.
2. Ensin määrittelimme vastaanoton nastat Hall-anturin sähköisille signaaleille.
#define WHEEL_CIRCUMFERENCE 2000 // Renkaan ympärysmitta millimetreinä #define HALL_PIN 33 // Hall-anturin nastat #define DEBOUNCE_TIME 50 // Häiriöaika millisekunneissa #define INPUT_PIN 26
3. Plus 2 -näytön alustaminen.
// 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. Värinänestosuunnittelu: Havaitsemalla Hall-anturin sähköisten signaalien välinen aika, voimme määrittää, onko toistuvia havaintoja tapahtunut.
int counter = 0; // Pyörän kierrosten lukumäärä unsigned long lastPulseTime = 0; // Viimeksi havaittu pulssin aika unsigned long lastDisplayTime = 0; // Viimeisin päivityksen näyttökerta 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++; // Kasvattamalla laskuria merkitsee yhtä pyörän kierrosta. lastPulseTime = currentTime; // Päivitä viimeisin pulssin aika }
5. Nopeuden saamiseksi lasketaan aika kahden signaalin välillä ja yhdistetään se pyörän ympärysmittaan, minkä jälkeen tulos näytetään M5StickC Plus 2 -näytöllä.
// 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; }
Käännä ja suorita
1. Lataa ensin zip-arkisto. Kun lataus on valmis, pura se ja avaa speed.ino tiedosto.
2. Yhdistä M5StickC Plus 2 tietokoneeseesi USB-C-kaapelilla. Siirry sitten kohtaan Työkalut -> Portti ja valitse oikea portti.
3. Napsauta Käännä, ja kun käännös on valmis, napsauta Lataa.
Projektinäyttely