Un bracciale da boxe che conta i pugni e li analizza mentre li tiri. Il progetto di Manivannan riunisce un Arduino Nesso N1, un Pulse Sensor e un modello di machine learning addestrato in Edge Impulse. Il display touch integrato da 1,14 pollici mostra il conteggio e cambia colore in base alla frequenza cardiaca. Cosi’ l’atleta capisce subito se sta lavorando in zona di riposo o a intensita’ di picco, senza guardare un’app esterna.
Il Nesso N1 e’ la scheda che regge tutto il sistema. Il microcontrollore ESP32-C6 monta due processori RISC-V a 32 bit, con core HP fino a 160 MHz e core LP a 20 MHz. La memoria conta 16 MB di NOR flash e 512 KB di SRAM, numeri che lasciano spazio al modello e al firmware. A bordo c’e’ anche un modulo LoRa SX1262 in banda 850-960 MHz, utile se in futuro si vuole spedire i dati a un secondo dispositivo. Le dimensioni sono 18 mm x 45 mm, quindi il bracciale resta compatto. L’alimentazione arriva da una batteria ai polimeri di litio integrata, con ingresso nominale a 5 V.
Dal firmware Nesso_IMU.ino alle quattro classi di pugno
Il firmware Nesso_IMU.ino inizializza l’IMU del Nesso N1, configura la pipeline di campionamento e trasmette le letture dell’accelerometro a 3 assi sulla seriale. I frame di movimento serializzati vengono poi acquisiti da Edge Impulse tramite il data forwarder. Qui il lavoro si sposta su Edge Impulse Studio, dove i frame vengono segmentati ed etichettati in quattro classi: Idle, Hook, Jab-Cross e UppeCut.
Il blocco di preprocessing e’ Spectral analysis, quello di apprendimento e’ Classification. La finestra di analisi e’ di 1200 ms e lo stride di 750 ms, quindi il sistema guarda poco piu’ di un secondo di movimento alla volta e avanza di tre quarti di secondo. La rete neurale viene addestrata con 100 cicli di training e un learning rate di 0,05. Il risultato dichiarato e’ un’accuratezza del 100% sia in fase di training sia in fase di testing.
Il modello addestrato viene esportato come libreria Arduino e importato nell’IDE. Da quel momento l’inferenza gira in locale sul dispositivo, senza dipendenza dal cloud. I risultati aggiornano le variabili di conteggio dei pugni, mentre il Pulse Sensor legge di continuo la frequenza cardiaca. Chi vuole rifare il percorso trova nella pagina del progetto su Hackster.io di Manivannan il racconto completo del flusso di lavoro, dalla raccolta dei dati all’esportazione della libreria.
Il Pulse Sensor sul pin GPIO5 e i colori della retroilluminazione
Il sensore di pulso va collegato al pin GPIO5, non al pin previsto di default. Percio’ la libreria PulseSensor Playground va modificata: dentro PulseSensor.cpp la variabile InputPin passa da 7 a 5. Il sensore si posiziona sulla punta dell’indice e si fissa con una fascetta hook-and-loop, cosi’ resta a contatto durante i colpi.
La frequenza cardiaca regola il colore della retroilluminazione LED, che diventa un indicatore di intensita’ leggibile con la coda dell’occhio:
- Sotto 100 bpm la retroilluminazione diventa verde, zona di riposo o bassa intensita’.
- Tra 100 e 140 bpm diventa blu, attivita’ moderata.
- Tra 140 e 160 bpm diventa gialla, alta intensita’.
- Sopra 160 bpm diventa rossa, intensita’ di picco.
Per rifare il bracciale servono pochi pezzi: il Nesso N1, un Pulse Sensor, nastro hook-and-loop e un kit di jumper wire da 5 cm. Il montaggio non richiede saldature particolari, perche’ i collegamenti passano dai jumper. Inoltre la fascia hook-and-loop tiene insieme sensore e bracciale senza stampa 3D. Chi cerca una scheda della stessa famiglia per altri esperimenti IoT trova in catalogo la board con Matter e Bluetooth LE, pensata per l’automazione domestica piu’ che per il wearable sportivo.
Il punto delicato e’ la calibrazione delle soglie cardiache. I quattro intervalli della scheda fatti valgono per questo progetto, ma ogni atleta ha massimali diversi. Quindi conviene registrare qualche round e confrontare i colori con i valori reali prima di fidarsi del feedback. Anche la posizione del sensore conta: se si sposta di poco, la lettura balla e il colore cambia a sproposito.
Il conteggio dei pugni si appoggia alle quattro classi del modello. Idle non incrementa nulla, mentre Hook, Jab-Cross e UppeCut fanno salire il contatore. Di conseguenza il numero a schermo non e’ un semplice picco dell’accelerometro, ma il risultato di una classificazione. Il limite e’ che il modello e’ stato addestrato sui movimenti di una persona sola: con un pugile diverso, o con la mano opposta, le prestazioni possono calare.
Fonte: https://www.hackster.io/manivannan/smart-ai-boxing-band-bddc39
