[DIY] SMARTGLOVE: un sistema intelligente per la guida ciclistica

Smartglove è un dispositivo indossabile che aiuta i ciclisti durante la guida e può offrire un aiuto importante soprattutto di notte. I ciclisti condividono la strada con altri veicoli, causando spesso problemi quando i conducenti non riescono a vedere o rispettare lo spazio del ciclista, soprattutto in percorsi stradali che non prevedono la presenza di piste ciclabili. Per venire incontro alle esigenze di una guida sicura, Smartglove aiuta i ciclisti a comunicare le loro intenzioni di guida agli altri utenti della strada. 

Il progetto consiste in un guanto dotato di Arduino Nano 33 BLE SENSE, con Bluetooth e rilevamento del movimento a bordo. In combinazione con il codice di apprendimento automatico TinyML, Arduino è in grado di rilevare i gesti delle mani del ciclista, i quali vengono quindi interpretati e i messaggi pertinenti vengono visualizzati su uno schermo a LED indossato sul retro del ciclista.

>>Leggi anche Nano 33 BLE Sense: la scheda Arduino nata per l’AI

Il guanto è realizzato con una scheda Arduino che raccoglie i dati da un giroscopio e un accelerometro. Il codice Arduino utilizza un modello di machine learning (tinyML) e funziona con il gesture recognition: ogni movimento della mano viene analizzato e riconosciuto (mano inclinata a sinistra, a destra, avanti, dietro, etc.). Quindi, questo segnale viene inviato tramite Bluetooth Low Energy (BLE) a un altro microcontrollore collegato a una matrice LED (posizionata su uno zaino, ad esempio). Secondo il segnale ricevuto dal microcontrollore, alcuni schemi si illuminano sulla matrice LED, in modo che altri utenti della strada possano vedere cosa sta facendo il ciclista (frecce a destra, sinistra e diritte, o anche un testo). Ogni volta che viene riconosciuto un gesto, un segnale viene inviato al pannello LED e viene visualizzato un motivo. La custodia è composta da due parti stampate in 3D. La prima parte in giallo contiene la scheda Arduino, la batteria e l'interruttore, mentre la seconda parte in nero serve per proteggere la batteria e la scheda. Il progetto si basa sul concetto di pannelli LED per ciclisti. Esistono molti di questi progetti, alcuni sono zaini con matrice LED integrata, altri semplicemente consistono in una matrice che può essere attaccata ovunque. Ma in tutti i casi, questi pannelli LED sono controllati da un telecomando e non dal riconoscimento dei gesti.

In Figura 1 è rappresentato uno schema riassuntivo delle principali caratteristiche delle schede Arduino Nano per diverse applicazioni.

Figura 1. Confronto tra le diverse tipologie di schede Arduino Nano

Tutte le schede indicate in Figura 1 sono molto interessanti, ma l'unica che potrebbe essere utilizzata per il gesture recognition è la scheda Arduino Nano 33 BLE SENSE poiché è l'unica ad avere sensori e supportare Tensorflow Lite. Inoltre, le schede Arduino Nano 33 BLE SENSE hanno LED RGB integrati. Un altro punto di forza è che le schede Arduino Nano 33 IOT, BLE e BLE SENSE dispongono di Bluetooth, quindi tutte possono essere utilizzate sulla matrice LED per ricevere i segnali BLE. La connessione Bluetooth in questo progetto, infatti, è di fondamentale importanza dal momento che è il modo in cui il segnale viene inviato dai sensori al pannello LED.

L'idea qui è di verificare se il segnale è stato inviato al pannello LED, ma poiché il pannello sarà collegato al retro del ciclista, è abbastanza difficile assicurarsi che il riconoscimento dei gesti abbia funzionato e che il segnale sia stato inviato al pannello.
Come si può vedere nello sketch riportato di seguito, c'è un LED rosso sul pin 22, un LED verde sul pin 23 e un LED blu sul pin 24.

/* Blink example modified for built-in RGB LEDs (Arduino Nano 33 BLE sense).<a href="http://www.arduino.cc/en/Tutorial/Blink">http://www.arduino.cc/en/Tutorial/Blink </a> */
const int LED_BUILTIN_RED = 22;
const int LED_BUILTIN_GREEN = 23;
const int LED_BUILTIN_BLUE = 24;

//the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN_RED, OUTPUT);
pinMode(LED_BUILTIN_GREEN, OUTPUT);
pinMode(LED_BUILTIN_BLUE, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN_RED, LOW); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN_RED, HIGH); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second

digitalWrite(LED_BUILTIN_GREEN, LOW); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN_GREEN, HIGH); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second

digitalWrite(LED_BUILTIN_BLUE, LOW); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN_BLUE, HIGH); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

Riferimenti

Smartglove for Cyclists: progetto completo

DIY Smartglove for cyclists

 

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend