Build a 6-DOF Arduino Robotic Arm (3D Printed + Web Control)
by ElectroScope Archive in Circuits > Arduino
18 Views, 0 Favorites, 0 Comments
Build a 6-DOF Arduino Robotic Arm (3D Printed + Web Control)
This is a walkthrough of how I built a 6 DOF robotic arm using an Arduino Uno, six servo motors, and 3D printed parts. Nothing fancy here. Just what worked, what didn’t, and how you can build the same thing without guessing.
If you can wire servos, upload Arduino code, and tighten screws without stripping them, you’ll be fine.
Supplies
Electronics
- Arduino Uno
- 3 × MG995 servo motors (high torque joints)
- 3 × MG90S or micro servos (lighter joints and gripper)
- Breadboard
- Jumper wires
- External 5V power supply, minimum 2A (more is better)
Mechanical
- Full set of 3D printed arm parts
- Servo horns (come with servos)
- Screws, nuts, bolts
- Screwdriver set
Software
- Arduino IDE
- Any Chromium-based browser (Chrome works best for Web Serial)
What You’re Building
This arm has:
- Base rotation
- Shoulder
- Elbow
- Wrist pitch
- Wrist rotation
- Gripper
All joints are driven by standard hobby servos. Control is done over USB using a simple web dashboard with sliders. No Bluetooth, no WiFi, no apps to install.
3D Printed Parts
All structural parts are 3D printed. I printed moving parts in one color and the base in another, but that’s optional.
I used an open-source design from Instructables for the arm geometry and mounting. If you want the original STL files and reference assembly, they’re here:
https://www.instructables.com/3D-Printed-Arduino-Based-Robotic-Arm/
Before assembly, do this:
- Clean up stringing and burrs
- Dry-fit servos into each slot
- Make sure screws go in cleanly without forcing
If a servo doesn’t sit flat, fix it now. Don’t “tighten it harder” later.
Servo Prep (Do This First)
This step matters more than people think.
Before mounting any servo:
- Upload a simple Arduino sketch that sets the servo to 90 degrees
- Plug in one servo at a time
- Let it center
- Mount the servo horn straight
If you skip this, joints will slam into limits later.
Mechanical Assembly
Base and Shoulder
- Mount one MG995 servo into the base
- Secure it with screws, don’t overtighten
- Attach the base plate
The shoulder servo mounts vertically above the base.
Make sure:
- Servo cable exits cleanly
- No cable gets pinched between printed parts
Elbow Joint
- Mount another MG995 servo into the elbow housing
- Attach the upper arm link
- Check full range by hand before tightening
If it binds even slightly, loosen and realign.
Wrist and Gripper
These use the smaller MG90S servos.
Order matters here:
- Wrist rotation
- Wrist pitch
- Gripper
The gripper should open and close smoothly with no scraping. If it sticks, sand the printed edges lightly.
Full Assembly Reference
Before wiring anything, move every joint by hand. Nothing should grind or flex.
Wiring the Electronics
Important Power Rule
Do not power servos from the Arduino 5V pin.
You will get:
- Random movement
- Jitter
- Arduino resets
Use an external 5V supply.
Common Wiring Setup
- All servo red wires → breadboard +5V rail
- All servo brown/black wires → breadboard GND rail
- Arduino GND → same GND rail
Signal Pins
I wired the servos like this:
- Base servo → D3
- Shoulder servo → D5
- Elbow servo → D6
- Wrist rotation → D10
- Wrist pitch → D11
- Gripper → D9
Keep signal wires short and neat. Messy wiring causes noise.
Uploading the Arduino Code
This sketch listens for serial commands and moves servos smoothly.
Servo Setup
Setup Function
This centers everything on boot. If the arm jerks hard at startup, stop and recheck servo alignment.
Smooth Motion Function
This prevents sudden jumps and reduces current spikes.
Web Control Dashboard
Instead of knobs or joysticks, I used a browser-based control panel.
You just:
- Save the HTML file
- Open it in Chrome
- Click Connect
- Move sliders
The dashboard sends serial commands directly to the Arduino.
Each slider controls one joint. Angles are sent as simple commands like B90 or E45.
No drivers. No installs.
First Power-Up Test
Do this in order:
- Power the external 5V supply
- Plug in the Arduino USB
- Upload the code
- Watch the arm move to neutral
If anything slams or vibrates:
- Cut power immediately
- Fix alignment
After that:
- Open the dashboard
- Connect to the correct COM port
- Move one joint at a time
Start slow.
Recording and Playback
The dashboard also lets you:
- Record movements
- Save them as JSON
- Reload and replay
Workflow:
- Click Record
- Move sliders
- Click Stop
- Save file
- Load file
- Click Play
The arm will repeat the motion exactly.
This is useful for pick-and-place demos.
Common Problems and Fixes
Arm jitters or moves randomly
- Power supply is too weak
- Grounds not shared
- Loose jumper wires
Fix the power first.
Nothing moves
- Servos not powered
- Wrong signal pin
- Serial port not connected
Check voltage at the breadboard.
Joint moves backward
- Servo horn mounted wrong
- Flip direction in code or remount horn
Do not force it.
Arduino resets when moving
- Servos pulling too much current
- Use higher current supply
Final Notes
This Arduino robotic arm isn’t industrial-grade, but it’s solid for learning, demos, and repeatable motion experiments. The key things that make it work smoothly are:
- Proper servo centering
- External power
- Smooth motion code
- Clean mechanical alignment
If you take your time on those, the rest is easy.
That’s it. Build it slow, test often, and don’t power servos from the Arduino.