SCARA 2-D Plotter

Fall ‘25 —

A personal project I recently took on after realizing how much I’ve missed building. This is my first true solo foray into robotics engineering outside of school, and it’s been incredibly rewarding so far. Most parts are custom-designed and 3D printed, with a lot of inspiration from this blog post. Three spare NEMA 17 motors drive the three degrees of freedom: one at each of the two arm joints, plus a coupled lead screw for pen Z-height.

I still have some work to do, but overall I’m really excited with the progress so far. I still need to buy some fasteners to attach everything a little more cleanly. Additionally, I need the rails to support z movement (lead screw is already coupled to third stepper motor). I’m also missing limit switches, so homing is done by manually moving each arm to its individual homing angle. Finally, I’d like a more robust end-effector — one that could be compatible with any kind of drawing tool.

For the software, I built a Tkinter jog UI to drive each joint independently and sanity-check the kinematics in real time, then layered on a homing routine (will work once the limit switches arrive) and coordinate-based motion.

The system is two programs joined over USB serial. Arduino firmware handles everything real-time: step-pulse generation for the stepper motors and a serial command protocol. A Python desktop application is the brain - it computes forward and inverse kinematics, provides a GUI for homing, jogging, and coordinate entry, imports SVG vector images, and lets the user click a point on the image to drive the pen to the corresponding physical location.

The current system positions the pen point-to-point, interpolating in joint space. The next phase converts it into a true plotter: Cartesian interpolation to trace straight lines (slicing each path into fine waypoints run through the IK solver), a firmware motion buffer with look-ahead so the arm blends through waypoints without stopping for continuous, smooth strokes, and curve flattening to render full vector paths.

Next
Next

Cart Pole