This page lists the main hardware, firmware, configuration, and host-side components used by the Trackball to Spacemouse Emulator project.
Hardware Components
- Raspberry Pi Pico 2 W: embedded controller running the firmware.
- USB trackball receiver: standard mouse-style HID input device used as the physical controller.
- USB host wiring: four-wire USB connection between the Pico host side and the trackball receiver.
- USB connection to computer: device-side USB connection exposing the emulated controller to Windows or macOS.
Firmware Components
- Pico SDK firmware: initializes the board, loads configuration, and coordinates the runtime loop.
- TinyUSB device mode: presents the board to the computer as a multi-axis HID controller.
- TinyUSB host support: reads HID reports from the trackball receiver.
- PIO USB: provides the additional USB host path needed for the receiver side.
- Axis mapping layer: converts trackball movement, wheel movement, and button states into six-degree-of-freedom navigation axes.
- Persistent flash configuration: stores mappings and sensitivity values on the device.
- USB CDC command interface: allows the browser configurator to read and write settings.
Configurator Components
- Browser setup page: local HTML, CSS, and JavaScript interface for configuration.
- Web Serial API: connects the browser to the Pico over USB serial.
- Mapping controls: assign movement, wheel, and button-modified behavior to 3D navigation axes.
- Sensitivity controls: tune per-axis response without rebuilding firmware.
Host Software
- 3Dconnexion SpaceMouse driver path: lets CAD software interpret the device as a familiar 3D navigation controller.
- Fusion 360: tested CAD application.
- FreeCAD: tested CAD application.
- Windows and macOS: tested host operating systems.
Signal Flow
USB trackball receiver -> Pico PIO USB host -> TinyUSB host HID parser -> axis mapping and sensitivity logic -> TinyUSB HID device reports -> 3Dconnexion SpaceMouse driver path -> CAD application on the computer Browser configurator -> Web Serial -> USB CDC command interface -> flash-backed device configuration