Embedded Hardware & Firmware
Motor-controller PCB and wireless 8 kHz mouse/dongle firmware
Motor Controller PCB
Four-layer board designed in Altium: an STM32G431 commutating six N-channel MOSFETs through a DRV8350F gate driver, with AS5247U magnetic rotor feedback, INA240 phase current sensing, and a TCAN337 transceiver for the CAN bus. Schematic capture, layout with tight power-plane routing, DFM review, and hand bring-up. Debugging involved oscilloscope validation of PWM timing, current-sense signal integrity, and thermal behavior under load. First spin required minor rework on a pull-up configuration; second spin ran clean.
End-to-end PCB ownership: component selection, schematic, layout, gerber review, assembly, and bring-up. Wrote the embedded firmware to drive the motor outputs and validate the hardware.
Loading 3D model
Loading schematic
Mouse & Dongle PCBs
Both boards run an nRF52820 against a meandering inverted-F antenna etched into the copper, so the radio needs no module. The mouse adds a PMW3360 optical sensor, USB-C charging through an MCP73831, and a TPS2110 power mux that hands the rails between the battery and the bus without dropping the link. The dongle is the same radio stripped to its USB-C interface and regulator. Both program over Tag-Connect footprints rather than paying board area for a header.
Designed both boards start to finish: RF layout and antenna tuning, power path, sensor and switch placement around the mouse shell, and bring-up of the assembled units.
Loading 3D model
Loading 3D model
Loading schematic
Loading schematic
Mouse Firmware
Wireless mouse and dongle targeting 8 kHz HID polling over RF. The main challenge was keeping the interrupt-driven USB stack and the RF link synchronized without jitter that would show up as cursor irregularity. Timing was validated with logic analyzer traces confirming consistent report intervals under load.
Wrote the low-level HID stack, RF communication layer, and polling loop. Tuned interrupt priorities to maintain 8 kHz report rate with no dropped packets under continuous movement.