Introduction: Moslty 3D-printed Robotic Arm That Mimics Puppet Controller

About: I am a mechanical engineering student and i like to make creative technical stuff!

I am a mechanical Engineering student from india and this is My Undergrad degree project.

This project is focused at developing a low cost robotic arm which is mostly 3d printed
and has 5 DOFs with a 2 fingered gripper. The robotic arm is controlled with a puppet controller which is a desktop model of the robotic arm with the same degrees of freedom whose joints are equipped with sensors. Manipulating the controller by hand causes the robotic arm to mimic the movement in master-slave fashion.. The system uses ESP8266 WiFi module as a data transmission medium. The master-slave operator interface provides an easy-to-learn method for robotic arm manipulation. Nodemcu(Esp8266) is used as a microcontroller.

Aim behind this project was the development of low cost robot that can be used for educational purpose.Unfortunately, accessibility of such robotic technology which is revolutionizing modern world is limited to certain institutions only. We aim at developing and making this project open source so that individuals can make, modify & explore it on their own. Being a low cost and fully open source, this may inspire fellow students to learn and explore this field.

My project mates:

  • Shubham likhar
  • Nikhil Kore
  • Palash lonare

Special thanks to:

  • Akash Narkhede
  • Ram bokade
  • Ankit korde

for their help in this project.

Disclaimer:I never planned to write a blog or instructable about this project due to which i dont have sufficient data for documenting it now.This effort is made long after starting of the project.Still i tried very hard to Bring as many details as possible to make it more may find it incomlete at some points...hope you understand :)
i will include a youtube video showing its working and other test stuff soon

Step 1: So,How Does It Work?

This is the most exciting thing for me about this project.

(I do not claim this to be efficient or Right method to use it for comercial purpose Its for educational purpose only)

you may have seen cheap Robots with servo motors which are just for demontration.On the other hand there are coslty stepper motor robots with planetary gearbox etc.But this robot is a balance between them.

so,how is it differernt?


Instead of using lower power and high cost stepper motor i used Dc motors but as we know Dc motors dont have feedback control system and cannot be used directly for position control i coverted them into servo motors by adding a potentiometer as a feedback/position sensor.

Now for simplisity of work what i did was,I disembled cheap 9g servos strip out its circuitry and replaced its Dc motor with high torque dc motor and its small pot with what i had for the robot.Doing this enabled me to use default library in arduino you cant believe that simplified coding alot!

For driving 12V Dc motor with 5V servo chip i used L298N motor driver module which can drive 2 motors simultaneously.The module has 4 input pins IN1 to IN4 which decides the direction of motor rotation.Where IN1 and IN2 corresponds to 1st motor and IN3,IN4 to 2nd motor.Hence output terminals (2) of servo chip(originally to small dc motor) are connected to IN1 and IN2 of L298N module output of which is connected to 12V Dc motor.


By this way when motor shaft is not on target position potentiometer send angle value to servo chip which commands L298N module to drive either Cw or CCW in turn 12V Dc motor turns according to command received from microcontroller.

Schematic is shown in figure(only for 1 motor)


At each joint a potentiometer is conneted to the joint shaft via belt pully mechansim.When joint rotates the potentiometer rotates acoordingly and gives feedback about current position of joint angle(Shown in pictures above)

Step 2: Components Used:

As i said i am still working and improving it day by day hence,these components may differ in some futur updations.

my goal was to make it as economical as possible hence i used very selective components.This is the list of major components used in the Arm til date(I will keep updating it in future)

  1. Esp8266 (2x)
  2. Dc motors(of varying specifications Torque and speeds, 5x)
  3. L298N motor Driver module (2x)
  4. Potentiometer (8x)
  5. Aluminium channel (30x30 , 1 meter)
  6. miscellaneous Hardware

Step 3: Calculations and Arm Design

For designing the arm i used catia v5 software.Before starting the design process first thing was to calculate the link lengths and torque that each joint has to sustain.

first I started with some assumptions which include:

  1. Max payload for the robot will be 500 gm(1.1 lb)
  2. total reach of robot will be 500 mm
  3. Robot weight wont exceed 3 kg.
  • Link length calculations

continuing with this I calculated link length with reference to the research paper "Design of a Robotic Arm By I.M.H. van Haaren"

I.M.H. van Haaren gave an excellent example of how he determined link lengths by using a biological reference in which lengths of the major body segments are expressed as a fraction of the total height. It’s shown in fig.

after calculations link lengths came out to be

L1=274 mm



Gripper length=150mm

  • Torque calculations:

Forcalculating torque i used basic concepts of turque and moments applied in engineering.

without going into dynamic calculations i rested on only static torque calculations due to some contraints.

there are 2 major players i torque as T=FxR i.e in our case load(mass) and link length.As link lengths are already determined next thing is to find out weight of components.At this stage iwas not sure how i can find the weights of each component without actually measuring it.

so,I did these calculations in iterations.

  1. I assumed aluminium channel as an uniform material throughout its length and divided weigth of total 1 meter peice with length of peices i was going to use.
  2. As for the joints,I assumed certain values for each joint(motor weight + weight of 3D printed part + other) based on total robot weight assumption.
  3. previous 2 steps gave me 1st iteration joint torque values.For these values I found out suitable motors on internet along with other specs and weights.
  4. In 2nd iteration i used original weights of motors(which i found out in 3rd step) and again calculated the static torques for each joint.
  5. If the final torque values in step 4 were suitable for motors selected in step 3 i finalised that motor otherwise repeat step 3 & 4 till formulated values meet actual motor specs.
  • Arm design:

This was the most tidious task of this whole project and almost took a month to design it.By the way I have attached photos of CAD model.I will leave a link to download these CAD files somewhere here:

    Step 4: 3D Printing the Parts

    All the parts moslty are the joints are 3D printed on a 99$ printer with 100x100x100 mm print area(yes that's true!!)

    printer : Easy threed X1

    I have included Major parts photos out of slicer and I will link to all the parts CAD file catfile as well as stl so that you can download and edit as you want.

    Step 5: Shoulder Joint Assembly (joint J1 & J2)

    The base pully was printed on a different printer as it was 160 mm in diameter.I designed the bshoulder joint such that it can be driven (Rotation about z -axis) with either belt pully or gear pinion mechanism which you can see in pictures included above.the bottom part is where bearings fit which then is mounted on a central shaft on to a platform that is made to move the arm(tank,more of that in future).

    the Bigger gear(yellow in picture) is mounted on aluminium channel with nut bolts through which 8mm steel shaft pases about which joint 2 moves.Gear ratio at 1st joint is 4:1 and that of 2nd joint is 3.4:1

    Step 6: Elbow and Joint (joint J3)


    Elbow joint is one following after the shoulder joint.It is a 2 piece joint, one connected to link one and another to link 2.

    piece 1 has a Dc motor with driving pinion and piece 2 has bigger gear attached to it and pair of bearing to support the shaft.Gear ratio is same as that of J2 i.e 3.4:1 but the motor is 12.5 KG-CM 60 RPM.

    Joint J3 has 160 degree range of movement.

    Step 7: Wrist Joint (joint J4 & J5)


    After the Elbow joint is the Wrist joint.This again consists of 2 pieces one at previous link (i.e link 2) and one consisting of J5 motot which rotates wrist assembly.Gear Ratio is 1.5:1 and Dc motor used is 10 RPM 8 KG-CM.

    This joint J4 has 90 degree range of rotation and J5 has 360 degree.

    Step 8: Gripper

    This was one of the toughest task to design.It was designed such that it can pick most of the objects as well as can grip to most of the stuff around us like door latches,handles,bars etc.

    As shown in picture a helical gear attached to motor drives to gears clockwise or counter clockwise which are connected to fingers to open and close them.

    All the parts of gripper are shown in the image attached.

    Step 9: Making Puppet Controller for Robotic Arm

    Puppet controller is the exact 10 times scaled down version of Actual robotic arm.It has 4 potentiometers mounted at 4 joints namely J1,J2,J3,J4 and Joint J5 will be operated with a push button for continuous rotation(Rotation of gripper for any operation)

    potentiometers sense the Angle of rotation of joints and send this value between 1-1023 to Nodemcu which is converted back to 1-360 and sent to another Nodemcu over wifi.As ESP8266 has only one analog input i used a 4051 multiplexer.

    tutorial for using 4051 multiplexer with esp8266 -

    schematic diagram:

    I will add a schematic diagram as soon as i finish it(if anyone needs it urgently contact me till then)

    Code:(also included here)

    Step 10: Electronics

    I am attaching pictures of Current work.Full Electronics and schematic diagram are not complete yet.I will post updates soon till then stay connected :)

    (Note:This project is not complete yet.I will be following up any updates in future)

    Step 11: Codes and Schematic at One Place!

    I will Full robot schematics and final code as soon as i finish it!

    3D Printed Contest

    Participated in the
    3D Printed Contest