Nuovo progetto Lightgun
Inviato: 14/05/2026, 22:14
Ho avuto questa idea, una lightgun basata su sensore IMU (accelerometro e giroscopio) con un singolo led IR come ancora.
come hardware sto usando:
XIAO ESP32S3 Sense come microcontrollore principale (25-30€ su aliexpress)
IMU LSM6DSOX settato a 833 Hz, è il cuore del puntamento (io avevo il "modulino" del kit Arduino, ma si trovano le schedine adafruit/sparkfun a pochi €)
Camera OV2640 (inclusa con il Sense)
LED IR 850 nm + filtro ottico 850 nm (che mi devono ancora arrivare)
Come funziona:
Attualmente viene visto come USB HID assoluto (mouse assoluto, compatibile quindi con giochi ed emulatori)
L'approccio è diverso dalle lightgun classiche: il puntamento è guidato dall'IMU (giroscopio + accelerometro), non dalla camera. La camera serve solo come ancora ottica lenta (30fps) per limitare il drift nel tempo.
nel firmware viene usato un MEKF (Multiplicative Extended Kalman Filter) 8x8 custom che stima:
orientazione tramite quaternione, il bias del giroscopio e l'offset camera-IMU
il cursore sempre è attivo anche quando il LED non è visibile (es. off-screen)
c'è l'off-screen detection con isteresi ai bordi
i GPIO del microcontrollore sono configurabili come tasti tastiera o pulsanti mouse
la posizione del puntatore è aggiornata 500 volte al secondo (testato), ho fatto un video a 240 fps in cui riprendo il monitor, impostato a 120 fps, dove il prototipo e la freccia del mouse partono a muoversi e cambiano direzione nello stesso frame video, quindi latenza inferiore a 4ms, l'usb comunica col pc a 1000 Hz
Video (scarica e visualizza con VLC per avanzare frame per frame
appena mi arrivano i led ed i filtrini IR faccio un po di tuning finale contro blob ambientali multipli,
valutazione del drift su sessioni lunghe (30+ min), misure di latenza end-to-end (devo capire come oltre al video)
poi farò la variante wireless Bluetooth HID con gestione della batteria, infine recoil con solenoide.
può interessare?
come hardware sto usando:
XIAO ESP32S3 Sense come microcontrollore principale (25-30€ su aliexpress)
IMU LSM6DSOX settato a 833 Hz, è il cuore del puntamento (io avevo il "modulino" del kit Arduino, ma si trovano le schedine adafruit/sparkfun a pochi €)
Camera OV2640 (inclusa con il Sense)
LED IR 850 nm + filtro ottico 850 nm (che mi devono ancora arrivare)
Come funziona:
Attualmente viene visto come USB HID assoluto (mouse assoluto, compatibile quindi con giochi ed emulatori)
L'approccio è diverso dalle lightgun classiche: il puntamento è guidato dall'IMU (giroscopio + accelerometro), non dalla camera. La camera serve solo come ancora ottica lenta (30fps) per limitare il drift nel tempo.
nel firmware viene usato un MEKF (Multiplicative Extended Kalman Filter) 8x8 custom che stima:
orientazione tramite quaternione, il bias del giroscopio e l'offset camera-IMU
il cursore sempre è attivo anche quando il LED non è visibile (es. off-screen)
c'è l'off-screen detection con isteresi ai bordi
i GPIO del microcontrollore sono configurabili come tasti tastiera o pulsanti mouse
la posizione del puntatore è aggiornata 500 volte al secondo (testato), ho fatto un video a 240 fps in cui riprendo il monitor, impostato a 120 fps, dove il prototipo e la freccia del mouse partono a muoversi e cambiano direzione nello stesso frame video, quindi latenza inferiore a 4ms, l'usb comunica col pc a 1000 Hz
Video (scarica e visualizza con VLC per avanzare frame per frame
appena mi arrivano i led ed i filtrini IR faccio un po di tuning finale contro blob ambientali multipli,
valutazione del drift su sessioni lunghe (30+ min), misure di latenza end-to-end (devo capire come oltre al video)
poi farò la variante wireless Bluetooth HID con gestione della batteria, infine recoil con solenoide.
può interessare?