SimBot: the 3D Printed Arm Robot Project

On this page you find information and downloads for our Open Source 3D Printed Arm Robot Project called SimBot.

You will find links to the STL files to 3D print the robot parts below. From CNCSimulator Pro Version 2.0 this machine is also included as a virtual machine as well.



You can play with it in the simulator and/or build the real machine yourself. This could make for a great student project.


The virtual machine can be programmed and move around just like the real one, but it cannot move parts around. 

To build the project you will need the following items:

  • An Arduino Uno for the robot controller.
  • Four robotic servos for axis X to A (can be found here).
  • One 9 gram servo for the gripper (can be found here).
  • Lots of M2 and M3 screws and nuts.
  • A 3D Printer and ABS filament.
  • A 5-8 volt power supply, 2 amps.


Knowledge needed:

  • You need to know how to do high quality 3D prints.
  • You need to be familiar with the Arduino and its software.
  • You need to have basic soldering skills.

First of all, download the STL files for the robot here.

Print out all the parts using your 3D Printer software of choice. Use 10% infill for all parts except for the top of the base, that needs to have 25% infill to make it a bit sturdier. Print slow enough to get nice quality. 0.2 mm or less layer height is recommended.

The base was too big for our 3D Printer so it was created in two halves. Print them out and glue them together using acetone welding.


Also acetone weld the top of the base to the bottom halves.


Then continue by welding/ -gluing and screwing all of the remaining bits and pieces together. A Dremel tool comes in handy for drilling holes and for adjusting/cleaning up the parts.


Use self-locking nuts for the gripper and do not tighten the screws too much to allow for the gripper to move. Add some grease or oil to the joints. Add two short stiff metal wires between the outer gripper parts and the servo horn like the picture shows.

Run all the wires through the hole in the base and extend them if needed. Tie them together with zip ties, but be careful to allow for full swing of the robot in all axis.


Now, copy and paste the Arduino firmware from the bottom of this page and use the Arduino software to program your board.


The axis of the robot starts with X at the base and ends with B (the gripper).

Screw the Arduino to the base plate (it goes inside the bottom of the robot base) and attach all orange servo leads (signal) as follows:

Axis X Pin 11
Axis Y Pin 10
Axis Z Pin 8
Axis A Pin 9
Axis B Pin 7

Optionally, you can add a micro switch to the gripper to tell the Arduino when to stop closing (this can protect the servo). If you choose to add the gripper switch, add one of its leads to Pin 6 of the Arduino and the other lead to ground. Please note that when the switch is open, the Arduino should see a zero (0) on pin 6. When it is closed (the gripper is holding something) the Arduino should see a one (1) on pin 6.


Solder all negative (brown or black) leads together to form a common ground.

Solder all positive leads from the larger servos together. The small gripper servo should be fed from the regulated 5V of the Arduino.

Run a power cable out the back and feed it ideally with 8V, 1.5-2 amps.




Attach a USB cable between the computer and the Arduino.


A video of the robot arm in action:

The SimBot Robotic Language (SRL) is very simple.

You write GO to move in any axis. More than one axis can be programmed at once. Please note that it is a G followed by the letter O and not G0(zero), as in G-code programming.

If you add the word FAST to the end of the line the robot will move in full speed.


GO X100 Y50 A20 FAST

This line will move servo X, Y and A (see picture above) to position 100,50 and 20.

You can also order the robot to take a pause using the PAUSE command.


PAUSE 500 

The value is in milliseconds so 500 means a half second.

To make an endless loop of the program, add the command LOOP.

That is all there is to it at this stage!


Note that servos X to A are programmed from 0 to 180 degrees and the gripper servo is programmed from 0 to 90 degrees. (0 fully closed, 90 fully open)

The robot can lift small light objects only. We suggest 3D printing out small hollow cylinders in various colors that the robot can sort and move around. Have a look at the video above.

When you have all cables connected and the Arduino is programmed, you can send programs over the serial port.

The program has to start with a % character for it to be loaded to the memory of the Arduino. As the programs are stored in RAM, a maximum of 1000 bytes can be stored where each GO line takes 6 bytes (approximately 160 lines).

In the CNCSimulator, go to the Serial Port settings and select the com port to which you have the Arduino connected. Also, set it to 9600 baud, 8 data bits, 1 stop bit and no parity.

Then open the Serial Terminal (Ver 2.0 and later of CNCSimulator Pro). The Arduino will reset and you should see “SimBot Ver 1.0 ready…” in the window.


Now the SimBot is ready to receive a program. You can use the provided demo program for your first test. Make sure that you load the arm robot with the option to load a demo program checked.

Go to the file menu and select Send Via Serial Port.

You should see “Loading…” and then the size of the loaded data when the transfer ends.


Now, type RUN (upper case letters) in the text box and click the Send button. Make sure that the robot has clear space to move around. Be careful so that it does not hit people or objects.


To stop the robot when it is running an endless loop, you can simply reset the Arduino by reconnecting the com port.


Please note that this is an experimental DIY project and that we only provide you with a start to continue to build upon. We invite you to improve the project by adding, for example, status LEDs, LCD display, SD-card reader, sensors, new commands etc. We ask you to share the Arduino code by sending it to us so that others can benefit from it. Also, if you add commands for specific tasks, and we find them useful, we will add them to the interpreter of the virtual machine as well. And most important of all, remember to have fun!