Building Your First Robot Arm with Arduino
Building a robot arm is one of the most rewarding projects for anyone interested in robotics. It combines mechanical design, electronics, and programming into a single hands-on build. In this tutorial, we'll create a 3-axis servo-controlled arm that you can command via serial input.
- 22 May 2026
- 10 min read
- By Head of Robotics

Introduction
Building a robot arm is one of the most rewarding projects for anyone interested in robotics. It combines mechanical design, electronics, and programming into a single hands-on build. In this tutorial, we'll create a 3-axis servo-controlled arm that you can command via serial input.
Parts You'll Need
| Component | Quantity | Notes |
|---|---|---|
| Arduino Uno | 1 | Any compatible board works |
| MG996R Servo Motor | 3 | High-torque, metal gear |
| 3D-Printed Arm Segments | 1 set | STL files linked below |
| Breadboard + Jumper Wires | — | For prototyping |
| 5V 3A Power Supply | 1 | Servos draw significant current |
Mechanical Assembly
- Print the parts — download the STL files from our GitHub repo
- Mount the base servo — this controls rotation
- Attach the shoulder and elbow segments — use servo horns and M3 screws
- Secure all connections — a wobbly arm won't repeat positions accurately
Wiring
Arduino Pin → Servo Signal
────────────────────────────
D9 → Base servo (rotation)
D10 → Shoulder servo
D11 → Elbow servo
5V Supply → Servo VCC (all)
GND → Servo GND + Arduino GNDImportant: Never power servos directly from the Arduino's 5V pin — the current draw can damage the board.
The Code
#include <Servo.h>
Servo base, shoulder, elbow;
void setup() {
base.attach(9);
shoulder.attach(10);
elbow.attach(11);
Serial.begin(9600);
Serial.println("Robot Arm Ready. Format: B,S,E (0-180)");
}
void loop() {
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
int b = input.substring(0, input.indexOf(',')).toInt();
int s = input.substring(input.indexOf(',') + 1, input.lastIndexOf(',')).toInt();
int e = input.substring(input.lastIndexOf(',') + 1).toInt();
base.write(constrain(b, 0, 180));
shoulder.write(constrain(s, 0, 180));
elbow.write(constrain(e, 0, 180));
Serial.println("Moved!");
}
}Next Steps
- Add inverse kinematics for coordinate-based control
- Attach a gripper for pick-and-place tasks
- Upgrade to stepper motors for higher precision
Happy building!
Written by
Head of Robotics
Head of Robotics & Faculty
Leads the robotics curriculum and the lab, from ROS and kinematics to industrial integration and digital twins. Believes you learn robotics by building robots.
Keep reading
More from the journal
Read it.Now build it.
Every piece here comes out of real work in the lab. Come do that work yourself — book a visit or find your track.


