How to Build a Robotic Arm (Arduino)

by mufinn1000 in Circuits > Robots

841 Views, 7 Favorites, 0 Comments

How to Build a Robotic Arm (Arduino)

robotarminstructthumb.JPG
IMG_8806.JPG
IMG_8828.JPG

This is a fully 3D printed robotic arm controlled by Arduino. It is a 6 axis arm controlled by 6 servos, including 2 for rotation. The gripper uses a continuously spinning servo to open and close the jaws.This design can spin around allows for 360 degrees of control and pickup area. It is controlled by a mobile app, sending data via bluetooth or bluetooth low energy (explained later). It uses a 3 jaw claw system, controlled by a worm gear. This design, as opposed to a 2 claw, has a much larger variety of things it can grab. I've modeled, programmed, and wired this robotic arm from scratch.

Supplies

The arm was modeled in the free version of Fusion 360, but you could model in Solidworks or other software, it just needs to be able to 3D print.


Rest of supplies:

  1. 3d printer
  2. all of these designs can fit on an ender 3 printer
  3. this uses around half a kilo of filament, but I print at 1% infill so probably don't do that
  4. screws
  5. i used m2, m2.5, and m3 screws, you can get a multi pack on amazon for like 10 dollars, use hex caps
  6. Arduino uno R3 or Arduino nano rev2 ble
  7. HC-05 bluetooth module if using Arduino r3
  8. resistors
  9. 4.7 kohm
  10. 2.4 kohm
  11. capacitors
  12. 2 ceramic .1 uf capacitors
  13. 4 1000 uf electrolytic capacitors
  14. soldering iron (can just use breadboard instead)
  15. lots of wires
  16. 6v battery with a minimum of 200mAh capacity
  17. I'm using tenergy nimh (Nickel-metal hydride) 6v battery (cheapest option around 10 dollars)
  18. Servos
  19. servos are little spinning motors that rotate in circles or move to a specific angle in the circle
  20. 3 high torque positional servo (I'm using GoBilda, only because its what my school let me borrow from our ftc robotics team)
  21. 1 continuous servo (for the gripper, can get on amazon for like 10 dollars)
  22. 2 smaller positional servos (honestly if you can afford it just use big servos here as well because i had some issues with them not being strong enough, but i fixed my issues with a rubber band)
  23. Big tip:
  24. make sure that the servos you use have mounting screw holes on the output horn

Overall, this is a very affordable project, i've spent less than $50 on it (pro tip: borrow things from your school if you can, my school's robotics team has lots of filament that they don't want to use because its bad quality or something and they let me take it)

Modeling

Screenshot 2026-01-05 at 11.55.00 AM.png
IMG_8833.JPG
Screenshot 2026-01-05 at 12.20.02 PM.png
Screenshot 2026-01-05 at 12.19.50 PM.png
Screenshot 2026-01-05 at 12.30.36 PM.png

Prioritize function over aesthetics when modeling, that's why my gripper is huge compared to the rest of my arm


Stand:

  1. put high torque servo upside down to control the rest of the model which will be resting directly on top of the base (look at the pictures its kind of hard to explain)
  2. make sure it can handle full rotation so that the arm can spin freely

Base:

  1. put another high torque servo in this joint (the weird oval shape thing)

Bottom:

  1. this is the biggest joint, with no servos actually on it, just attaches the next pieces

elbow:

  1. this holds a high torque servo and a small positional servo
  2. on this one remember to add wiring for the little servo out of the backside (images)

rotation:

  1. this is the smallest piece, yet the most annoying one, I've had to redesign it multiple times to make sure it works properly
  2. make sure to pay attention to screw holes
  3. this holds the little positional servo

gripper:

  1. This gripper uses a worm gear driven by a continuous servo.
  2. make sure to actually do the math instead of eyeballing it
  3. the calculations aren't too bad
  4. figure out what torque you need for the grip strength that you want
  5. if you do not calculate the dimensions for the worm gear the gripper wont be strong and you'll basically end up with a claw machine and it will be a arcade game whenever you try and pick something up


Tips:

  1. Remember that each segment is actually controlled by the servo behind it
  2. find the cad files online of the exact servos that your using to get precise models
  3. for the screw holes shrink the diameter (ie. if you are using a m3 screw (3 millimeters thick), make the hole 2.8 or 2.9 to allow for a better connection, for me its much better than actually modeling the screw paths because my printer doesn't have very good tolerances)
  4. for connections to the servos ( the hole that its going to fit in) give it some wiggle room because your printer is going to shrink the holes
  5. prepare wiring holes, especially on the base, this matters more than you think

Biggest modeling tip:

  1. before you print it actually imagine yourself putting it together, I cannot tell you how many times i've printed something only to the realize that the screw holes are physically unreachable, please please double check


these tips were things i had to painfully learn from all of my failed prints

Wiring

IMG_8753.JPG
IMG_8836.JPG
IMG_8835.JPG
IMG_8834.JPG

Arduino uno r3 with bluetooth module:

  1. vcc -> 5v on arduino
  2. gnd -> common ground with 6v that powers servos
  3. add ceramic capacitors on the vcc to the gnd, it makes sure that the signal is clean for the bluetooth connection, if you don't do this the integers that it receives can get jumbled and you wont be able to control the servos
  4. tx -> rx on arduino
  5. rx -> tx on arduino (but you'll need a voltage divider, image and explained below)
  6. solder a 3 way joint with a 4.7 kohm and 2.4 kohm resistor
  7. 2.4 -> tx on arduino
  8. 4.7 -> common gnd
  9. wire attaching to rx on hc-05
  10. create a three way joint with these parts
  11. the 4.7 is the one pointing downwards in the image
  12. this is to maintain a stable voltage so that the module doesn't disconnect
  13. it allows for clean data transfer to the arduino
  14. reminder:
  15. you don't need those exact resistor values, but we are just trying to drop the arduino 5v down to 3.3v that the rx pin requires on the module
  16. if you don't do this it will likely work for a while, but the module will burn out and break after a little bit of use and while it is working it will probably disconnect and the data will be scrambled

Ble:

if you are using ble you dont have to worry about any of that because it is all built into the controller itself


Tips:

Make sure that you are never powering the servos with the arduino 5v, always use an external battery, no matter how low the voltage rating is for your servo it will NEVER work

If you attempt to power servos with the arduino the voltage dips from when the servo moves will cause a brownout

  1. it will likely work temporarily, and you'll think that it will work forever, it wont, i've broken 3 boards doing this, please don't make my mistake

Make sure that you connect all 3 grounds as a common ground (the arduino, hc-05 and external battery)


Add your 1000uf electrolytic capacitors on all of the servos, this is actually to keep the voltage stable for the hc-05,

  1. when you move a heavy servo it will drop the voltage for a split second, which wouldn't be a big issue, but your ground will "bounce" and this causes disruptions for the hc-05, even though the bluetooth is not powered by the same battery


note:

Don't worry about how my wiring is on a breadboard, this was just the testing stage, i don't recommend using a breadboard for this project just because the rails can sometimes mess with the signal of the hc-05

also don't mind my capacitors, this is just because I don't have any big capacitors available to me right now so i had to use a bunch of these little guys, i recommend using at least a 1000 uf


Assembly

IMG_8749.JPG

Work from the bottom up and test as you go, this helps to catch mistakes before they become an issue

Don't just put it all together and plug it in


I recommend checking that all of your servos work with test code before you put them all together


For the gripper I had to use blue Loctite to keep it attached, you can get this at almost any hardware store

also on the tip of the gripper, add some electrical tape to allow for more friction and better grip for when you're picking things up

Mobile App

Screenshot 2026-01-05 at 1.00.43 PM.png
Screenshot 2026-01-05 at 1.01.30 PM.png
Screenshot 2026-01-05 at 1.01.44 PM.png

I created my app in MIT app inventor because it is a really simple way to integrate bluetooth into your projects


The code is in the images to show you how to send integers via bluetooth

while you hold each button it sends a value to the arduino and then you code on the arduino will convert that to motion


note:

the reason that the neck had individual set position control buttons instead of just forwards and backwards like everything else is only because my servo isn't strong enough to move heavy objects and if you tell it specific position to move to it will use more upfront torque and it can move heavier objects

basically i'm bypassing the weakness in my servo, so if you can afford a bigger servo, use one


the backslash n "\n" is the code for a newline character, which i will explain why its necessary in the code step below


Code

The code takes the values given by the MIT app inventor and converts them using a switch statement to move the servos.


the app continuously sends a value while you hold down a button, the code then checks every 50 ms to move the servos according to that value, so basically it checks if there's a "1" and it there is you move servo one rightwards and if theres a "0" you stop moving, a "2" will move servo one leftwards, and so on


the reason for the backslash n "\n" is so that it is easier to find when the value changes in the serial input from the bluetooth


continuously check the value given by the hc-05 bluetooth, and when you see a newline you know that the value has changed, and then the code knows to move the next servo


Future

I am currently working to incorporate AI vision to allow for this to be controlled autonomously,

i am in the process of saving up for a depth perception camera to make this happen, they can be pretty pricey

I'm not sure if you can update Instructables, but if you can i will and will show the new version


have fun making this,

This is such a challenging yet rewarding project to create, its surprisingly strong, and super fun to play around with, its like having a third arm


some things special about this arm:

I haven't seen any other people capture data this way in order to control the arm, it allows for such a smooth motion with no shaking and the arm is virtually silent

I also haven't seen any other people use a 3 jaw gripper design, most people don't use a worm gear and only use 2 jaws in this weird and super complicated design


Another thing is the full circle of motion, my arm can spin, and it can pick up things all around it, including behind it, this really helps it stand out in comparison to other arms that can only pick up things right in front of it, the spinning motion in both the gripper and the base helps this arm to be super functional, and super fun


The three jaws is much simpler and allows for a much greater gripper area, with almost a foot of gripping diameter, allowing for picking up much bigger things, a worm gear allows for such high torque and not slipping on the grippers (basically you can pick up really heavy things). The 3 claw design uses continuous spinning motion from the servo to move the jaws open and closed. I previously had a lot of issues using 2 jaws because items would just slip right out. That's why i designed a 3 jaw gripper instead.