In this project, I built a a new type of USB computer mouse capable of scrolling and panning smoothly in any direction. In the mouse, the scroll wheel is replaced with a finger-operated joystick, which is held static instead of being constantly rolled to navigate large documents and workspaces.
Firmware was developed for a STM32 development board, involving writing custom USB device applications, a driver for a PMW3610 optical sensor, and reverse-engineering the requirements of Windows hosts using protocol knowledge and Wireshark. Furthermore, a chassis with clicking mechanism was designed using Autodesk Fusion and fabricated using an FDM 3D printer.
Skills: Firmware development, CAD
Tools: STM32CubeIDE, Wireshark, Autodesk Fusion
Source code:
GitHub Repo
Design files:
Autodesk Fusion Project (.f3d, ? MiB)
Contents to follow:
Problem
System Design
Firmware Architecture
USB Device Development
Optical Sensor Driver
Chassis
Future Work
Conclusion
The goal of this project was to takeĀ
The circuit design starts with power management circuitry that provides basic protection and creates a 2.5-V "virtual ground" reference after 5 V are supplied via a 2.1-mm barrel plug. The decision to design the circuit using 5-V single-supply is the result of sticking to the 5-V power supply requirement without adding the complexity of a boost converter and disallowing the use of regulator or charge pump ICs.
Signal input/outputs are taken/provided to the user via 3.5 mm TRS audio receptacles. While the user can provide stereo input, the signal is ultimately processed in mono. This was an acceptable compromise to the client (myself) given the additional complexity stereo would introduce.
After mixing the signal and biasing it at 2.5 V, it goes through a -12 to 6-dB volume control stage. The larger magnitude of attenuation range serves to provide a smooth fade-in as the power switch is integrated in the volume knob. Equalization follows the volume control. Lastly, the processed signal branches to both the audio output and the clipping detector circuit (for the former of which, the 2.5-V biasing is removed).