← Projects
3d-printing intermediate Aug 18, 2026 ◑ 2 views ◯ 4 min read

Build a Motorized Camera Slider: 3D-Printed Rail, Stepper Drive, and ESP32 Control

Build time: 8-15 hours
Tools needed: 3D printer, soldering iron, hex keys, calipers, tape measure, wire strippers
Parts List
camera slidermotion controlstepper motoresp32timelapsephotography3d printinggt2 belt

A motorized slider turns a static product shot or a timelapse into something with real production value — smooth, repeatable linear motion that would otherwise require renting equipment or eyeballing a manual push along a tripod rail. This build is almost entirely 3D-printed: a printed carriage rides on smooth steel rods or an aluminum extrusion rail, driven by a GT2 belt and a NEMA 17 stepper, with an ESP32 running the motion profile and exposing a simple web interface so you can trigger moves from a phone without a laptop on set. It's a satisfying build that combines mechanical design, motor control, and firmware in one project, and the finished slider is genuinely useful for both video work and automated multi-angle product photography.

How It Works

A NEMA 17 stepper mounted at one end of the rail drives a GT2 timing pulley, which pulls a closed belt loop running the length of the slider; the printed carriage clamps to the belt so that each full step (or microstep, with a driver like the TMC2209 covered in our TMC2209 tuning guide) moves the carriage a known, repeatable distance. An ESP32 running a stepper library handles acceleration and deceleration ramping so the camera doesn't jerk at the start and end of a move, and either a limit switch or sensorless homing (if you're using TMC2209 drivers) establishes a known zero position on power-up.

Rail and Carriage Design

Two rail approaches both work well: 8mm smooth steel rod supported at both ends (cheap, widely available, needs printed linear bearing holders — LM8UU bearings press-fit directly into a printed carriage) or V-slot aluminum extrusion with printed or purchased V-wheels (stiffer over longer spans, easier to mount to a tripod at multiple points). For a slider under 60cm, rod-and-bearing is simpler and lighter; past 80-100cm, extrusion resists sag and twist far better. Print the carriage in PETG rather than PLA — it's handling repeated belt tension and bearing preload, and PLA's tendency to creep under sustained clamping load will loosen bearing fit over weeks of use. Design the carriage with a standard 1/4-20 camera mount thread (a printed insert works, but a brass threaded insert installed per our threaded insert guide will survive far more mounting cycles) and add an adjustable friction clamp or cable channel so the camera's power/HDMI cable doesn't snag as the carriage travels.

Electronics

ComponentRole ESP32 Dev BoardRuns the motion controller and serves a web UI for move commands over WiFi TMC2209 or A4988 Stepper DriverConverts step/dir signals from the ESP32 into phase current for the motor NEMA 17 Stepper MotorDrives the belt; 40-59Ncm torque is plenty for a camera-weight carriage Limit/Endstop SwitchEstablishes home position; skip if using TMC2209 sensorless homing (StallGuard) 18650 Battery Pack or USB Power BankMakes the slider cordless for field use — a stepper at rest draws holding current, so include a physical power switch

Wire the driver following the same step/dir/enable pattern used across Arduino and ESP32 motor projects (see our motor driver guide if you haven't wired a stepper driver before), and keep the driver's current limit set conservatively at first — an overcurrent-set TMC2209 will run hot and can lose steps under load, which shows up as a carriage that drifts from its intended position over a long timelapse.

Firmware and Control

The ESP32 firmware needs three things: a motion profile generator (trapezoidal acceleration is enough — the AccelStepper library handles this out of the box), a homing routine that runs on boot, and a control interface. The simplest useful interface is a small AsyncWebServer page (the same pattern used in our standalone ESP32 web control panel guide) exposing three modes: manual jog, point-to-point move with a set duration (for a fixed-length video pan), and continuous timelapse mode where the carriage advances a small step between each camera trigger. For camera triggering itself, a simple relay or opto-isolated trigger cable wired to the camera's remote-shutter port, fired by a GPIO pin timed against the move sequence, keeps the whole rig self-contained without needing an intervalometer.

Calibration

Once assembled, measure actual belt travel per motor revolution against the pulley's tooth count and belt pitch (2mm for GT2) to compute steps-per-mm, then verify by commanding a 100mm move and measuring the real carriage travel with a tape measure — small discrepancies here compound over a long slide and are worth correcting in firmware rather than living with. Check that the belt has consistent tension along its full length; a belt that's tight at one end and loose at the other will produce micro-stutters in video that are far more visible in the final footage than they are by eye during a bench test.

Where to Go From Here

Once the linear-axis slider works reliably, the natural extension is adding a second stepper-driven pan axis at the carriage for coordinated slide-and-pan moves, which is the same multi-axis motion-control problem covered conceptually in our printer kinematics guide — just at a much smaller scale and lower speed. A basic single-axis slider is a solid weekend build and a genuinely useful piece of shop and studio equipment once it's dialed in.

🔧 Related tool: Stepper Driver Vref Calculator