SyncMotion is a personal embedded project from 2025. The idea is simple to state: a stepper motor that follows the position of a quadrature encoder in real time. Turn the encoder and the motor mirrors the movement. This master-follower behavior is the basis of many machine-synchronization tasks, and I wanted to build it from the ground up — my own hardware, my own firmware, no off-the-shelf motion controller. The system also streams position and angle over an RS485 link, so the motion can be monitored from a distance.
The firmware runs on an STM32G0, written in Embedded C over the STM32 HAL. I read the quadrature encoder through timer input capture and decode it into a position reference; a timer-based control path generates step pulses for the stepper driver at 1/32 microstepping for smooth follower motion. The core of it is keeping the control logic fully non-blocking: encoder capture, step generation, and RS485 telemetry interleave without any path stalling another, which is what lets the motor track the encoder in real time. Position and angle stream out over RS485 for remote monitoring. I built the hardware as well, so both sides of the project — hardware and firmware — are my own work.