Build a 4-DOF Robot Arm: PCA9685, Servos, and Kinematics
A desktop robot arm that moves to the poses you command—driven by a PCA9685 and tuned with inverse kinematics you understood in simulation before wiring a single servo.
A robot arm is the first project where a robot stops moving around and starts doing something to the world. A line follower follows; an obstacle-avoider dodges; an arm reaches, positions, and grips. That shift—from driving to manipulation—brings in the one idea every manipulator is built on: kinematics, the geometry that connects the angles you can command to the point in space you actually want.
This build path treats the arm as exactly that: a lesson in kinematics you can hold. You start by understanding how a two-link arm turns joint angles into a tool position and back again, gather the parts a servo arm needs and learn what each one does, then—before spending anything or stripping a gear—explore the reach, the two elbow solutions, and the unreachable poses in the browser simulator. Only then do you wire the real arm, calibrate its servos by hand, and run the inverse kinematics on hardware.
Follow the tech tree below top to bottom. Each node opens once its prerequisites are done, and your progress is saved on this device, so you can build the arm over a weekend without losing your place.
Project roadmap
The build path
Follow the tech tree from parts to a robot that follows a taped line. Each node unlocks when its prerequisites are done, and your progress saves on this device.
0 / 13 done
Components
- ControllerArduino UnoThe forgiving 8-bit board most people meet robotics through.
- DriverPCA9685 Servo DriverDrive 16 servos over two I²C pins—the board behind most robot arms and hexapods.
- ActuatorSG90 Servo MotorThe nine-gram servo behind most robot arms, grippers, and steering.
- Chassis4-DOF Robot Arm KitThe acrylic or metal frame that turns four servos into a base-shoulder-elbow-gripper manipulator.
- PowerRobot Battery & Power PackThe difference between a robot that runs and one that keeps resetting.
Tutorials in this path
- Advanced · 22 min readInverse Kinematics of a Two-Link Robot ArmWhy a two-link arm has two solutions, where it can and cannot reach, and what a singularity really is.
- Intermediate · 18 min readDrive Servos with the PCA9685 (I²C PWM Driver)Set the frequency, turn angles into pulse widths, and move sixteen servos from two I²C pins — safely powered and calibrated.
Practise before you wire
Tune it in the live simulator
The build path routes through a browser lab. Find gains that follow the track cleanly here, then transfer them to the real robot.
Frequently asked questions
How do you make a robot arm with Arduino?
Mount four servos in a 4-DOF frame—base, shoulder, elbow, and gripper—and drive them with a PCA9685 over I²C so the Arduino doesn't run out of PWM pins. Calibrate each servo's angle-to-pulse range, then feed target points to a two-link inverse-kinematics solver that returns the shoulder and elbow angles. This build path walks that whole chain, and you tune the geometry in a simulator before wiring anything.
How many servos does a 4-DOF robot arm need?
Four—one per degree of freedom: a rotating base, a shoulder, an elbow, and a gripper. Each servo needs its own PWM channel, which is exactly why a multi-joint arm uses a PCA9685 driver instead of the Arduino's handful of hardware PWM pins.
Do I need a PCA9685 for a robot arm?
It is the right tool, though not strictly required. Four servos will run from an Arduino if you power them separately, but the PCA9685 frees the microcontroller's timers, drives every joint from two I²C pins, and routes the servo current through its own V+ supply—which keeps the high current away from your logic and the board from browning out.
Do I have to buy parts before I start this project?
No. The kinematics and the pose-solving run in the browser simulator, so you can understand and explore the arm's reach, its two solutions, and its unreachable poses before buying anything. Only the final steps—wiring, calibration, and running the IK—need the physical Arduino, PCA9685, servos, arm frame, and power supply.
How is inverse kinematics used in a robot arm?
Forward kinematics tells you where the tool ends up given the joint angles; inverse kinematics does the useful inverse—given a target point, it returns the joint angles that reach it. For this arm the shoulder and elbow form a two-link planar solver, the base aims that plane, and the gripper does the picking. The simulator lets you see the solver work, including where a target is out of reach.