This is Arduino code and 3D-printable models for a Bluetooth trackball in which all the electronics are inside the ball.
It runs on Adafruit's Feather nRF52840 Sense and uses the accelerometer, gyroscope and magnetometer data with a sensor fusion algorithm to get the ball's orientation. When you rotate the ball, it moves the mouse cursor accordingly.
TODO:
- whitelist advertising to only allow connections from bonded devices unless the user requests pairing mode
- go to sleep after a period of inactivity and wake when moved
- OTA firmware updates