M5StickC Plus2: costruisci un sistema di rilevamento della velocità della bicicletta
Descrizione del progetto
Questo progetto utilizza il sensore M5Stack Hall Effect Unit per monitorare la velocità della bicicletta. Abbiamo iniziato attaccando tre piccoli magneti al bordo interno della ruota e montando saldamente il sensore Hall sul telaio. Mentre la ruota gira, i magneti ruotano insieme ad essa e ogni volta che un magnete passa davanti al sensore Hall, genera un segnale elettrico.
Per calcolare la velocità, misuriamo prima la circonferenza della ruota. Quindi, registriamo l'intervallo di tempo tra due segnali per determinare quanto tempo impiega il magnete per completare un giro completo. Dividendo la circonferenza della ruota per il tempo registrato otteniamo la velocità della bicicletta.
È essenziale incorporare nel codice un meccanismo anti-vibrazione per evitare scatti multipli quando la ruota gira lentamente. Senza questo, il sensore potrebbe registrare falsi segnali, portando a letture di velocità imprecise. Questo progetto dimostra come applicare i sensori in modo efficace garantendo al tempo stesso precisione e affidabilità attraverso un'implementazione ponderata.
Caratteristiche funzionali
- Visualizzazione della velocità in tempo reale: la velocità attuale della bicicletta viene mostrata in tempo reale sullo schermo M5StickC Plus 2, fornendo misurazioni precise della velocità per un'esperienza di guida accurata.
- Rilevamento del sensore ad effetto Hall: il sistema sfrutta il sensore ad effetto Hall M5Stack per calcolare la velocità misurando la frequenza alla quale un magnete passa sul sensore, garantendo un rilevamento della velocità accurato e coerente.
- Meccanismo anti-vibrazione: un algoritmo anti-vibrazione integrato previene l'attivazione multipla del segnale causata da velocità lente delle ruote o dossi stradali, migliorando la precisione della visualizzazione della velocità.
- Design leggero: con il M5StickC Plus 2 compatto e leggero come controller, il sistema si adatta perfettamente alle biciclette, occupando uno spazio minimo e fornendo funzionalità robuste.
Installazione e Operazione
Precondizione
Dipendenza software: Arduino IDE ecc. Requisiti hardware: cavo USB-C, M5StickCPlus2, Hall Effect Unit, ecc. Dipendenze: libreria M5StickCPlus2, libreria Arduino, ecc.
Installazione delle dipendenze
1. Dopo aver installato l'IDE Arduino, apri il menu Impostazioni, incolla il collegamento della scheda di sviluppo M5 nel campo appropriato e fai clic su OK per salvare le modifiche.
2. Apri Strumenti->Scheda->Gestore schede
3. Cerca M5Stack nell'Arduino Library Manager e installalo. Poiché è già installato su questo sistema, non ripeterò il processo di installazione.
4. Seleziona la versione di sviluppo, Strumenti->Scheda->M5Stack Arduino->M5StickCPlus2
5. Successivamente, installa la libreria M5StickCPlus2 selezionando Strumenti -> Gestisci librerie, cercando "M5StickCPlus2" e facendo clic su Installa. Se la libreria è già installata, il processo di installazione verrà saltato.
1. Innanzitutto, otteniamo l'unità ad effetto Hall e apprendiamo che ogni volta che un magnete si avvicina, l'indicatore sul pin di uscita si accende e un segnale elettrico viene inviato dal pin I.
2. Innanzitutto, abbiamo iniziato definendo i pin di ricezione per i segnali elettrici del sensore Hall.
#define WHEEL_CIRCUMFERENCE 2000 // Circonferenza pneumatico in mm #define HALL_PIN 33 // Pin del sensore Hall #define DEBOUNCE_TIME 50 // Tempo di dithering in millisecondi #define INPUT_PIN 26
3. Inizializzazione del display 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 anti-vibrazione: rilevando l'intervallo tra i segnali elettrici provenienti dal sensore Hall, possiamo determinare se si sono verificati rilevamenti ripetuti.
contatore intero = 0; // Registra il numero di rotazioni del pneumatico senza segno lungo lastPulseTime = 0; // Ora dell'ultimo impulso rilevato senza segno lungo lastDisplayTime = 0; // L'ultima volta che è stato visualizzato l'aggiornamento 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)) { contatore++; // Il conteggio aumentato indica una rotazione del pneumatico. lastPulseTime = currentTime; // Aggiorna l'ora dell'ultimo impulso }
5. La chiave per ottenere la velocità è calcolarla misurando l'intervallo di tempo tra due segnali e combinandolo con la circonferenza della ruota, quindi visualizzare il risultato sullo schermo 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; }
Compila e Esegui
1. Innanzitutto, scarica l'archivio zip. Una volta completato il download, decomprimilo e apri il file speed.ino file.
2. Collega M5StickC Plus 2 al computer utilizzando un cavo USB-C. Quindi vai su Strumenti -> Porta e seleziona la porta corretta.
3. Fai clic su Compila e, una volta completata la compilazione, fai clic su Carica.
Mostra del Progetto