Why buy a robot arm, if you can have great fun 3D printing if yourself? Here at TechPeople we’ve done it, and it is easier than you think. In this article I’m presenting 5 different robot arms including the one I ended up building. Read all about it!


The more I play around with 3D printers, the more complex things I want to build. Most people start out printing objects from Thingiverse. But there is a limit to how long that can keep you fascinated. So, like many other people who have worked with 3D printers, I want to take it to the next level and try more complex builds.

This is where the Robot Arm comes in. Printing and assembling your own robotic arm has become popular. One of the reasons is, that you can choose different levels. At the super simple level the 3D printed parts form the essential structure of the robot as well as a way to mount the cheap hobby servos. From there you can go all the way to the 6-axis stepper motor driven arm, that are able to repeatedly move from one position to another with 0.1 mm  precision.

But why 3D print a robot arm? Well, there are many good reasons. It can be the experience of designing it yourself, or building a more complex mechanical model that someone else designed, or getting an advanced experimental platform for playing around with automation, computer vision and inverse kinematics.

It is impressive, how advanced some of these projects are. The rise of 3D printing has made it much more accessible and cheaper to play around with machines and other things that were previously limited to universities or people with a rather large wallet. This has spawned many new communities, many of whom use other open and accessible projects like the Raspberry Pi or Arduino as the brains for controlling the machines.

I have investigated some of the robot arms that are out there and chosen 5 to present here. I hope this gives you a bit of an insight into where to start.

The Micro Robot Arm

This one is the simplest. It uses five 9g micro servos, with direct connections and no extra gearing, besides what’s inside the servo. The Micro Robot Arm is designed by Ben-Tommy Eriksen, and is easy and fast to build. You can do quite a lot of complex movements with its 4 axes, but it doesn’t have much strength, and its movements are rather jerky because of the lack of extra gearing. It takes one day to build, and there are only few extra parts to add, besides the ones you print yourself.

Instructions on how to make it, including all the printing files can be found here:

The finished 3D printed and assembled EEZYbotARM MK2.


This is the one I ended up building. The EEZYbotARM MK2 is designed by Carlo Franciscone and modeled after an ABB IRB460 industrial robotic arm. It is a lot stronger and moves much smoother than the Micro Robot Arm, although it has only 3 axes of movement. It uses bigger and stronger SG90 servos and has extra mechanical leverage for increased strength and stability. It has a larger working area than the Micro Robot Arm, and you can order many extra parts. But it takes a lot longer to print the parts and build it. However, this is still a cheap and simple robot arm to build, but you need to make some preparations and it takes a couple of days. You can control it in several ways, depending on what you want to do with it. The designer of the arm shows both how to use a Pololu Mini Maestro card, and how to control it using an android device.

I have an iPhone and wanted to try and see if there was something a bit simpler out there. I ended up making a simple control using an ESP8266 and running something called Blynk on the phone, to get a simple slider-based interface to control the arm.

The only other electrical component added was a beefy capacitor to handle the power-hungry servo motors.

Used a protoshield to solder the capacitor to, as well as 4 sets of pin headers for being able to simply connect the servo motors.

The bottom side of the shield showing how little soldering was needed to build this.

The Blynk app generates an authentication token for you, to insert into a simple example sketch as seen below.

#define BLYNK_PRINT Serial<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->#include <ESP8266WiFi.h><!-- [et_pb_line_break_holder] -->#include <BlynkSimpleEsp8266.h><!-- [et_pb_line_break_holder] -->#include <Servo.h><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->// You should get Auth Token in the Blynk App.<!-- [et_pb_line_break_holder] -->// Go to the Project Settings (nut icon).<!-- [et_pb_line_break_holder] -->char auth[] = "TOKEN";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->Servo servoOne;<!-- [et_pb_line_break_holder] -->Servo servoTwo;<!-- [et_pb_line_break_holder] -->Servo servoThree;<!-- [et_pb_line_break_holder] -->Servo servoFour;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->// Your WiFi credentials.<!-- [et_pb_line_break_holder] -->// Set password to "" for open networks.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->char ssid[] = "SSID";<!-- [et_pb_line_break_holder] -->char pass[] = "PASSWORD";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->void setup()<!-- [et_pb_line_break_holder] -->{<!-- [et_pb_line_break_holder] -->  // Debug console<!-- [et_pb_line_break_holder] -->  Serial.begin(9600);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  Blynk.begin(auth, ssid, pass);<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  servoOne.attach(D7);<!-- [et_pb_line_break_holder] -->  servoTwo.attach(D6);<!-- [et_pb_line_break_holder] -->  servoThree.attach(D5);<!-- [et_pb_line_break_holder] -->  servoFour.attach(D4);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->BLYNK_WRITE(V1)<!-- [et_pb_line_break_holder] -->{<!-- [et_pb_line_break_holder] -->  servoOne.writeMicroseconds(param.asInt());<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->BLYNK_WRITE(V2)<!-- [et_pb_line_break_holder] -->{<!-- [et_pb_line_break_holder] -->  servoTwo.writeMicroseconds(param.asInt());<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->BLYNK_WRITE(V3)<!-- [et_pb_line_break_holder] -->{<!-- [et_pb_line_break_holder] -->  servoThree.writeMicroseconds(param.asInt());<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->BLYNK_WRITE(V4)<!-- [et_pb_line_break_holder] -->{<!-- [et_pb_line_break_holder] -->  servoFour.writeMicroseconds(param.asInt());<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->void loop()<!-- [et_pb_line_break_holder] -->{<!-- [et_pb_line_break_holder] -->;<!-- [et_pb_line_break_holder] -->}

The only extra code is for attaching the four servomotors. The rest is done in the app, where you choose the type of input method you want. I used sliders. Define what pins the different servos are connected to, and what ranges the inputs for them should have. And that’s it.

A screenshot of the simple slider interface I made using the Blynk app.

Just a note: make sure your WiFi is stable. I spent much time on debugging, and by chance found out that the WiFi network I was using wasn’t stable enough.
A video of the arm in action can be seen below.

All the parts for the arm are quite easy to find, and easy to assemble. There is also a newer revision of the arm that mostly uses stepper motors instead of servos. There are some benefits to that, but controlling them is a bit more complicated.
All the files needed to print it can be found here:

Newer version of the base:

Assembly instruction:

The BCN3D Moveo robot arm.
Photo by BCN3D.

The BCN3D Moveo

Now we are getting to the more advanced and capable robot arms. The BCN3D Moveo, designed by the Spanish company BCN3D, is a 5-axis fully open source robot arm. The design is a few years old, but the project is very well documented with a full bill of materials, files to print and software to control it. It uses steppers together with belts and pulleys to create extra mechanical strength and to increase the resolution of its movement. I am just a bit surprised that the end effector doesn’t rotate. That would have made it a lot more versatile in my opinion. But since it is open source you could always make that change yourself. Besides that, it is a really well made project, and if you want to read more or build one, you can find more info here:

The WE-R2.4

The is a work in progress, but I still find it worth mentioning. The WE-R2.4 Six-Axis Robot Arm designed by Jeff Kerr, is heavily inspired by the Universal Robots UR3 arm, and as the name hints, it has six axes of movement. This arm uses stepper motors and some nicely designed and 3D printed planetary gearboxes to drive the arm. It makes for a rather sleek arm just like the ones from Universal Robots.

I wouldn’t recommend starting out with this one, unless you just can’t hold yourself back. If you can’t, you can find all the files and documentation here:

The SmallRobotArm

The last of the five is the SmallRobotArm by Skyentific. It has six degrees of freedom and is by far the most precise of all the robot arms featured in this article, with a repeatable position change of around 0.1mm. The main drawback here is the range of the arm. It is rather small. But if it’s enough for what you want to do and play around with, this project is exceptionally well documented, both in writing on Github, and on YouTube

 I hope this walk-through has given you a bit of an overview of what kind of robot arms you can build using 3D printed parts. I hope it will inspire you to try and make your own, or maybe some other mechanical contraption using a 3D printer. Have fun!

We use cookies to give you the best online experience. By agreeing you accept the use of cookies in accordance with our cookie policy.

Privacy Settings saved!
Privacy Settings

When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. Control your personal Cookie Services here.

These cookies are necessary for the website to function and cannot be switched off in our systems.

In order to use this website we use the following technically required cookies
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • ct_checked_emails
  • ct_checkjs
  • ct_fkp_timestamp
  • ct_has_scrolled
  • ct_pointer_data
  • ct_ps_timestamp
  • ct_screen_info
  • ct_timezone

Decline all Services
Accept all Services