Cheap Programmable Arduino Robotic Arm





Introduction: Cheap Programmable Arduino Robotic Arm

This is meant to be a beginner's guide to how to build an Arduino robotic arm. Its concept is to be cheap and easy to build. This is only a prototype to optimize my code, but it's perfect to get started with Arduino robotics. It is controlled by a hacked joypad, and can be programmed to repeat a sequence you set. If you aren't experienced in programming, you can make it as a hardware project, you can put in my code and use it to learn from. I repeat, it is very easy to build.

Here's a demo of my robot:

Step 1: Bill of Materials

Ok, bill of materials, what do we need?

1. Arduino board, I used UNO, but really any will do the job. Don't hesitate on buying Arduino copies. They work really well!

2. Servo motors, four of the cheapest ones you can get. Here's what I bought.

3. Something to cut out the body from. It can be wood, plastic, metal, name it. Mine is made out of an old notebook, so everything will do the job.

4. Unless you are planning on making your own custom PCB, you will need a breadboard. A small one will do the job, but you can get them for really cheap, so i suggest getting a large one. Here's one like mine. It comes with plenty of jumper cables and a power supply, yay!

5. Something for the base. I used and old Nescafe tin. Not the best solution, but the only one I had lying around, as I live in a new apartment. I miss my old junk.

6. Some thin thread, for the arm mechanism, and a needle to make a hole.

7. Glue and tape, to put it all together. There is no problem that can't be fixed with duct tape and hot glue!

7. Three 10k resistors. If you don't have any lying around, there is a workaround, there are instructions in the code, but it would be ideal with the resistors and I strongly recommend them.

And that's it!

Step 2: How Does It Work?

The drawing shows the principle. Let me explain how the arm works. Both sides of the arm are attached to a thin thread. The middle of the thread is then connected to the servo of the arm. When the servo pulls the rope, the arm squeezes. Easy! I also added a small spring from a ball pen, but if you have another, more flexible material, you can use that.

Step 3: Hacking the Joypad

Assuming that you have finished your mechanical build, now we can move on.

For this project I used an old joypad, but you can also use any other buttons. The analogs (mushrooms) of the joypad are used for controlling the servos, as they are really potentiometers. If you don't have a joypad, you can use these, or simply 3 linear potentiometers. You can also use any other buttons instead the ones on the joypad.

But, if you have one, this is what I did.

I traced the potentiometer lines on the PCB. The pots have 3 pins. You connect one of the end pins to GND, the other to +5V of the Arduino, and the middle one to a input we will define later. We won't use the Y axis of the left pot, so we only need the pot above the joystick.

As for the switches. You connect +5V to one end of the switch, and the wire that will go to another Arduino input at the other end. My joypad had a common for all the switches +5V line. I connected only 2 buttons, but ended up adding another external button, as I needed it.

It's also important that you cut the lines that go to the chip (the black circle).

When you finish all of that, you are ready to do the wiring.

Step 4: Wiring

Here's the wiring diagram. The pots represent the joysticks. Elbow is right Y-axis, Base is right X-axis and Shoulder is left X-axis. If you'd like the change the direction of movement of the servo, just flip the +5V and GND wires on the corresponding potentiometer.

Step 5: Uploading the Code.

Now you have to download the code that i posted and upload it to your arduino. Here's how!

Note: if you have already uploaded codes before and you know how to do this, you can skip this and continue below. Nothing fancy in here.

1. Open the Arduino IDE and paste the code

2. From Tools/Board select your board

3. In Tools/Serial Port select the port your board is connected to. Yo will probably have just one choice.

4. Click on the upload button.

You can modify the ranges of your servos, i left notes on how to do it. You probably won't need to change anything else except for the arm servo. It depends on how you set up the string, so I recommend fine tuning this.

If you aren't using the resistors, you will also have to edit the code in places i have written notes to do so.

Step 6: Running

You control the robot by moving the joysticks, the arm is squeezed and released with the Arm button. The demo below shows the movements:

Here's how to program it:

1. Open the Serial Monitor in Arudino IDE, it will make the monitoring easier.

2. Save the starting position by clicking save

3. Move only one servo at a time, for example just the elbow up, and press save.

4. Also, activate the arm on it's own step. Activate and then save. When you deactivate do it also on a sepparate step and save it again.

5. When you finish your sequence, press the play button, the robot will move to the first position and then start moving.

6. When you want to stop it, unplug the cable or press the reset button on the Arduino board.

If you've done everything right, it should work like this!

I hope the lesson was somewhat useful to you. If there are any grammar mistakes, excuse me, I am from Serbia.

If you have any questions post them in the comment section below, I will try to answer them all.

2 People Made This Project!


  • Epilog Challenge 9

    Epilog Challenge 9
  • Sew Warm Contest 2018

    Sew Warm Contest 2018
  • Gluten Free Challenge

    Gluten Free Challenge

We have a be nice policy.
Please be positive and constructive.




Can u build one with teach-in function

What exactly do you mean with teach in? It has a form of it, you memorize the positions and then recall them.

Ya with some micro servos and push buttons,it can perform pick and place work such as in industries

Could the gripper be wired to the 4 axis of the potentiometers rather than a button?

It sure could, with minimal code editing.

Can u build one with teach-in function

Can u build one with teach-in function

Can u build one with teach-in function

Can u build one with teach-in function

Can u build one with teach-in function