Table of Contents
- 1 Introduction
- 2 DFRobot 5 DOF Robotic Arm Kit
- 3 5 Degrees of Freedom
- 4 Robot Arm Sections
- 5 Robot Arm Assembly
- 6 Assemble Gripper
- 7 Assemble Base Motor mount
- 8 Assemble Double U-Bracket
- 9 Assemble Elbow Motor Mount with Brackets
- 10 Assemble Wrist Motor Mount with Gripper mount
- 11 Install Base Motor
- 12 Join Base to Double U-Bracket
- 13 Install Elbow Motor
- 14 Join Double U-Bracket to Elbow Mount with Brackets
- 15 Install Wrist Motor
- 16 Join Elbow Mount with Brackets to Wrist Motor Mount
- 17 Install Gripper
- 18 Arduino Controller
- 19 Testing the Robot Arm
- 20 Expanding the Robot Arm
Introduction
Robot arms are pretty familiar sights in the 21st century. For decades these mechanical appendages have been put to use on assembly lines manufacturing everything from automobiles to electronic circuit boards.
Robot arms are also very popular robotics experimenters projects, in fact we discussed another robot arm when I built the MeArm a while back.
Today we will be constructing another robot arm, one with more power and capabilities than the MeArm. The arm we will be working on today is the DF Robot 5 DOF Robotic Arm kit.
Once we get the arm built we will also put together a simple Arduino controller so that we can control the movement of the arm and its gripper.
Let’s begin by looking at what it is we will be building.
DFRobot 5 DOF Robotic Arm Kit
The DFRobot 5 DOF Robotic Arm Kit consists of all of the servo motors, brackets, fasteners and other hardware that you will need to construct a small but powerful robotic arm complete with a gripper mechanism.
The brackets and supports for the arm are constructed from black anodized aluminum which makes for a strong support.
The arm is powered by 5 servo motors, all standard sized:
- Two 15Kg/cm servos for the base and elbow
- One 5.5 Kg/cm servo for the wrist
- Two 4 Kg/cm servos for the gripper mechanism
The servos, brackets and hardware come packages in individual plastic bags with identifying labels. The gripper mechanism comes assembled except for the servo motors.
A complete parts list for the DFRobot 5 DOF Robotic Arm Kit is shown here:
QTY | PART NUMBER | DESCRIPTION |
2 | SER0001 | Hitec HS311 Standard Servo 3.5Kg 180° |
2 | SER0019 | DSS-M15 DF Metal Geared Standard Servo 15Kg 180° |
1 | SER0020 | DF05BB Standard Servo 5Kg |
1 | FIT0014 | LG-NS Robot Gripper |
4 | FIT0038 | Aluminum Multi-purpose Servo Bracket |
3 | FIT0040 | Long U-Bracket |
3 | FIT0041 | Persons Bearing Kit |
1 | FIT0042 | L-Bracket |
1 | Wire Covering 1 Metre | |
15 | Small Self Tapping Screws | |
23 | M3 Screws and Nuts |
The only tools required to assemble the arm are a phillips screwdriver (a #1 works well) and a set of pliers.
5 Degrees of Freedom
As with most robot arms the DFRobot kit is advertised as a “5 DOF” or 5 degrees of freedom robot arm. What exactly does the term “degrees of freedom” mean?
Turns out it can mean different things depending upon what field you are in.
If you are an aeronautical engineer then to you degrees of freedom will be likely be represented by the classic three dimensions and directions an object can move in:
- Forwards & Backwards
- Up & Down
- Left & Right
- Roll
- Pitch
- Yaw
In robotics however “degrees of freedom” or DOF is usually considered to represent the number of movable joints that a mechanism has. For a robot arm this usually means the number of motors that the arm has.
Our robot arm has 5 motors and thus is advertised as a “5 DOF” robot arm.
Robot Arm Sections
The servo motors each power a different section of the arm and going forward will be referred to by the name of the section that they power.
I have named the arm sections to loosely correspond with the equivalent sections on a human arm, which is a point of reference that most of us should be familiar with. In some cases (around the gripper) there is no corresponding section on a human arm so I names those sections as descriptively as I could.
The sections are as follows:
- Base – The base of the robot arm, corresponds to a human shoulder. The base is fixed in place, at least for now.
- Elbow – The first section on the arm. Like a human elbow it allows the harm to bend.
- Wrist – The second section on the arm. It permits better positioning of the gripper assembly.
- Grip Pivot – Thss allows the gripper to be rotates 90 degrees in either direction. The human hand and arm don’t have such a joint, rotating a hand is done with several different muscles in the arm instead.
- Jaws – The gripper mechanism itself, operating much like a bench vice or pliers.
In operation the base of the arm will need to be fastened down securely to a solid surface. The arm is capable of a lot of torque and momentum so it needs to be safely secured.
Robot Arm Assembly
The DFRobot 5 DOF robot arm kit is typical of many 5 DOF robot arms so you may have a kit similar to it. You can also piece together this arm or a custom version of it using the parts DFRobot has on their website.
Assembly of the robot arm will be done in the following sequence:
- Assemble Gripper
- Assemble Base Motor mount
- Assemble Double U-Bracket
- Assemble Elbow Motor Mount with Brackets
- Assemble Wrist Motor Mount with Gripper mount
- Install Base Motor
- Join Base to Double U-Bracket
- Install Elbow Motor
- Join Double U-Bracket to Elbow Mount with Brackets
- Install Wrist Motor
- Join Elbow Mount with Brackets to Wrist Motor Mount
- Install Gripper
- Wire & test!
Here are the details of each of the steps:
Assemble Gripper
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
1 | LG-NS Robot Gripper Assembly | FIT0014 |
2 | Hitec HS-311 Servo Motor | SER0001 |
2 | Horn mounting screws from servo attachments |
Assembly Instructions
- Set both servos to 0 degree position (full ccw)
- Take gripper and position 90 degrees to one of the motors
- Insert shaft of servo into back of gripper assembly, mesh with gear.
- Test to see if alignment is correct
- Insert and tighten horn mounting screw to secure gripper back to motor shaft
- Manually manipulate gripper jaws until they are at the full open position. Take care not to go beyond that.
- Insert servo motor in position under jaw, mesh with gear.
- Test to see if alignment is correct
- Insert and tighten horn mounting screw to secure gripper jaw mechanism to motor shaft.
- Test both servo motors to verify proper operation of the gripper.
Assemble Base Motor mount
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
1 | Multi-Purpose Servo Bracket | FIT0038 |
1 | Persons Bearing Kit | FIT0041 |
Assembly Instructions
- Place servo mounting bracket so that servo would be mounted forward and flat plate with two holes is at back.
- Insert screw from Persons Bearing Kit into hole on back left side of servo bracket with screw head on side facing servo motor.
- Insert bearing from Persons Bearing Kit over screw on outer side of servo bracket. Ensure that the beveled part of the bearing is flush with the servo bracket.
- Insert lockwasher on top of bearing.
- Thread cap nut onto screw.
- Tighten screw and cap nut securely.
- Verify that bearing can still spin freely after screw is tightened.
Assemble Double U-Bracket
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
2 | Long U-Bracket | FIT0040 |
4 | Screws and Nuts from bag |
Assembly Instructions
- Align the two U-Brackets with the short sections pressed against each other and the mounting holes aligned. If you have pre-drilled mounting holes like I have you’ll want to ensure that they are lined up the same way, otherwise the orientation is irrelevant.
- Use 4 of the screws and nuts from the bag to fasten the brackets together. Make sure to fasten them securely.
Assemble Elbow Motor Mount with Brackets
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
1 | Multi-Purpose Servo Bracket | FIT0038 |
1 | Persons Bearing Kit | FIT0041 |
1 | Long U-Bracket | FIT0040 |
1 | L-Bracket | FIT0042 |
4 | Screws and Nuts from bag |
Assembly Instructions
- Place servo mounting bracket so that servo would be mounted forward and flat plate with two holes is at back.
- Insert screw from Persons Bearing Kit into hole on back left side of servo bracket with screw head on side facing servo motor.
- Insert bearing from Persons Bearing Kit over screw on outer side of servo bracket. Ensure that the beveled part of the bearing is flush with the servo bracket.
- Insert lockwasher on top of bearing.
- Thread cap nut onto screw.
- Tighten screw and cap nut securely.
- Verify that bearing can still spin freely after screw is tightened.
- Align the mounting holes on the short side of the L-Bracket to the mounting holes on the short flat bottom of the U-Bracket. The L-Bracket should be at a right angle to the U-Bracket, see the illustration for details.
- Fasten the L-Bracket to the U-Bracket using the screws provided with the L-Bracket. The screw heads should be on the L-Bracket side.
- Align the mounting holes on the long side of the L-Bracket with the mounting holes on the bottom right side of the servo mounting bracket.
- Fasten the L-Bracket to the servo mounting bracket using 4 of the screws and nuts from the bag. The screw heads should be on the L-Bracket side.
Assemble Wrist Motor Mount with Gripper mount
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
2 | Multi-Purpose Servo Bracket | FIT0038 |
1 | Persons Bearing Kit | FIT0041 |
4 | Screws and Nuts from bag |
Assembly Instructions
- Place one servo mounting bracket so that servo would be mounted forward and flat plate with two holes is at back.
- Insert screw from Persons Bearing Kit into hole on back right side of servo bracket with screw head on side facing servo motor (note that this is the opposite side as used in the previous motor mount assembly instructions).
- Insert bearing from Persons Bearing Kit over screw on outer side of servo bracket. Ensure that the beveled part of the bearing is flush with the servo bracket.
- Insert lockwasher on top of bearing.
- Thread cap nut onto screw.
- Tighten screw and cap nut securely.
- Verify that bearing can still spin freely after screw is tightened.
- Align the second servo mounting bracket underneath the first one at a right angle so that the second servo would have its shaft on the right side of the assembly. Align the mounting holes, see the illustration for more details.
- Fasten the two servo mounting brackets with 4 of the screws and nuts from the bag. The screw heads should face the bottom servo mount. Tighten securely.
Install Base Motor
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
1 | DF metal Geared 15kg Standard Servo | SER0019 |
1 | Metal horn from 15kg Standard Servo accessories | |
4 | Screws and Nuts from Multi-Purpose Servo Bracket |
Assembly Instructions
- Rotate motor to 0 degree position (full ccw).
- Mount motor with shaft aligned with bearing at back, use 4 screws and nuts supplied with the servo bracket to fasten the motor securely.
- Place horn on motor shaft, leave in place for the moment.
Join Base to Double U-Bracket
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
4 | Screws from bag | |
1 | Set screw from 15kg Standard Servo accessories |
Assembly Instructions
- Take one end of U-Bracket assembly and slip the large hole over the bearing on the base motor mounting bracket.
- The other side of the U-Bracket needs to go on top of the servo motor horn, with the holes lined up with the 4 threaded holes on the horn. The U-Bracket should be aligned so that it is flat(at the same angle) with the base, i.e extended all the way down. See the illustrations for details.
- Once the U-Bracket is positioned correctly over the servo motor horn fasten it using 4 of the screws from the bag. The servo motor does not come with screws for the horn in its accessory bag.
- Test the motor sweeping it 180 degrees and observe the arm (U-Bracket Assembly) for correct movement. Be careful as the motor has a lot of torque and the movement when the power is first applied could injure you.
- If the arm is aligned with the horn correctly then use the set screw supplied with the servo motor to fasten the horn to the servo motor shaft.
Install Elbow Motor
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
1 | DF metal Geared 15kg Standard Servo | SER0019 |
1 | Metal horn from 15kg Standard Servo accessories | |
4 | Screws and Nuts from Multi-Purpose Servo Bracket |
Assembly Instructions
- Rotate motor to 0 degree position (full ccw).
- Mount motor with shaft aligned with bearing at back, use 4 screws and nuts supplied with the servo bracket to fasten the motor securely.
- Place horn on motor shaft, leave in place for the moment.
Join Double U-Bracket to Elbow Mount with Brackets
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
4 | Screws from bag | |
1 | Set screw from 15kg Standard Servo accessories |
Assembly Instructions
- Take the remaining open end of U-Bracket assembly and slip the large hole over the bearing on the elbow motor mounting bracket.
- The other side of the U-Bracket needs to go on top of the servo motor horn, with the holes lined up with the 4 threaded holes on the horn. The U-Bracket should be aligned so that the elbow mount with brackets is facing down towards the U-Bracket but not touching it. See the illustrations for details. You may need to take some “trial and error” to get this correct.
- Once the U-Bracket is positioned correctly over the servo motor horn fasten it using 4 of the screws from the bag. You may need to move the horn to align the mounting holes on the U-Bracket with the threaded holes on the servo horn.
- Test the motor sweeping it 180 degrees and observe the upper arm (Elbow Mount with Bracket Assembly) for correct movement. Be careful as the motor has a lot of torque and the movement when the power is first applied could injure you. Be sure that the motor does not collide with the U-Bracket assembly at one end of travel.
- If the arm is aligned with the horn correctly then use the set screw supplied with the servo motor to fasten the horn to the servo motor shaft.
Install Wrist Motor
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
1 | DF05BB Standard Servo 5Kg | SER0020 |
1 | Servo Horn from DF05BB Standard Servo accessory bag | |
4 | Screws and Nuts from Multi-Purpose Servo Bracket |
Assembly Instructions
- Rotate motor to 0 degree position (full ccw).
- Mount motor onto the upper servo mounting bracket (the one with the bearing). Align the servo shaft with the bearing at back, use 4 screws and nuts supplied with the servo bracket to fasten the motor securely.
- Place horn on motor shaft, leave in place for the moment.
Join Elbow Mount with Brackets to Wrist Motor Mount
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
1 | Set screw from DF05BB Standard Servo accessory bag | |
4 | Screws from self-tapping screw bag |
Assembly Instructions
- Take the open end of U-Bracket or the Elbow Mount with Bracket assembly and slip the large hole over the bearing on the wrist motor mounting bracket.
- The other side of the U-Bracket needs to go on top of the servo motor horn, with the holes lined up with the the holes on the horn. The wrist motor mount should be aligned so that it is facing down towards the Elbow Mount with Bracket assembly but not touching it. See the illustrations for details. You may need to take some “trial and error” to get this correct.
- Once the U-Bracket is positioned correctly over the servo motor horn fasten it using 4 of the small self-tapping screws from the bag. You may need to move the horn to align the mounting holes on the U-Bracket with the holes on the servo horn.
- Test the motor sweeping it 180 degrees and observe the wrist motor mount for correct movement. Be careful as the motor has a lot of torque and the movement when the power is first applied could injure you. Be sure that the motor does not collide with the Elbow Mount with Bracket assembly at one end of travel.
- If the arm is aligned with the horn correctly then use the set screw supplied with the servo motor to fasten the horn to the servo motor shaft.
Install Gripper
Parts Required
QTY | PART DESCRIPTION | PART NUMBER |
4 | Screws and Nuts from Multi-Purpose Servo Bracket |
Assembly Instructions
- Mount the Gripper wrist servo motor onto the Wrist Motor Mount, aligned so that the motor shaft is on the left side of the motor mount. This will place the motor shaft in the approximate center of the arm assembly.
- Use 4 screws and nuts supplied with the servo bracket to fasten the motor securely.
You’ve now completed the mechanical assembly of the arm.
It would be a good idea to reset and exercise all of the servo motors to be sure everything is working properly and aligned correctly. If necessary adjust the position of the junctions by removing the 4 screws securing the servo horn to the frame and reposition as required.
Now let’s put together a simple controller and put the arm through its paces!
Arduino Controller
I mounted a PCA9685 16-channel PWM controller directly onto my robot arm so that I could control all of the motors using the I2C bus.
If you need information on the PCA9685 or on servo motors in general I recently published an article and video all about servo motors, check them out to bring yourself up to speed with servos.
While I have great plans for the robot arm right now I just need a simple controller that can adjust the position of all five servo motors. So I have built one designed around an Arduino Nano.
Arduino Nano
I usually base my Arduino projects around the Arduino Uno, its a popular and inexpensive microcontroller board that has lots of inputs and outputs. But sometimes it won’t fit the bill.
This is one of those cases.
I wanted to build a controller that had 5 potentiometer, one to control each motor. It would then send information over the I2C bus to the PCA9685 to control the servos. I’d also like it to be easy to upgrade to using 6 potentiometers for a 6 DOF arm (which is essentially my 5 DOF arm with a turntable at the base).
An Arduino Uno has 6 analog inputs so at a glance it seems perfect for the job. But there is a catch. Two of the analog inputs can’t be used in this design.
Analog inputs A4 and A5 on the Arduino Uno do double duty as the SDA (Data) and SCL (Clock) lines on the I2C bus. Even if your Uno has separate SDA and SCL pins they are just internally connected to A4 and A5.
So if you use I2C (which I’m doing) then you can’t use analog pins A4 and A5, they are spoken for.
It turns out that the Arduino Nano has eight analog inputs, two more than the Uno. So even though the Nano uses the same “double duty I2C” arrangement for pins A4 and A5 it still has enough analog inputs leftover to do the job.
Even if I eventually add a sixth potentiometer!
The Nano is just as easy to work with in most respects as the hUno, especially if you mount it onto a solderless breadboard or use an adapter socket. Remember to change the board type in your Arduino IDE to “Arduino Nano” or you’ll get an error when compiling your code.
Wiring up the Controller
The wiring for our simple robot arm controller is pretty simple, especially as we are using the PCA9685 to do the servo connections.
To cut down on any confusion I’m showing the wiring on two diagrams. This matches up with my arrangement of mounting the PCA9685 directly on the arm. You can if you wish mount the PCA9685 on the same board or breadboard that you are using for the Arduino Nano, it’s up to you.
I like the PCA9685 directly on the arm as I think it cuts down on the wiring and avoids having to extend any of the servo motor cables. And I also intend to mount other I2C devices on my arm so it just makes sense to have one I2C connection for all of them.
The “Arduino section” of our wiring diagram has the Nano and the 5 potentiometers. The controls are wired with one side to ground and the other side to 5 volts, obtained from the Arduino Nano.
The wipers of each potentiometer are connected to the analog inputs on the Arduino Nano as follows:
- Base – A0
- Elbow – A1
- Wrist – A2
- Grip Pivot – A3
- Grip Jaws – A6
Note that A4 and A5 are used for the I2C connections, which run to the other diagram.
Keep in mind that you’ll need a USB cable with a mini USB (not micro USB) connector to connect the Arduino Nano to your computer. Mini USB connectors are not that common these days.
Now let’s move over to the PCA9685 side of the hookup.
The I2C connections are made to one of the connectors on the end of the PCA9685, either connector will work.
You’ll then need to connect your 5 (or 6) servo motors to the module. Make sure you get the connectors in the right way round.
Finally you will need a power supply that has enough current to drive the five servo motors. A 6-volt 2 amp supply would be ideal. The power supply is connected directly to the connector on the PCA9685 module.
Once you have it all wired up it’s time for some code!
Arduino Code
The code for the simple robot arm controller is presented here. Remember, you’ll find a link in the Resources section to a ZIP file that has this code already written for you.
The sketch make use of the Adafruit PWM Library which you will need to install into your Arduino IDE. Just search the Library Manager for “Adafruit PWM”, it should be the first result.
If you need help installing the library or want to learn more about this library and the PCA9685 check out my article about using servo motors.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
/* Basic Robot Arm Controller robot-arm-control-basic.ino Controls 5 DOF Robot Arm, uses Arduino Nano and PCA9685 PWM Controller Uses Adafruit PWM library Uses 5 potentiometers for input (can be modified for 6) DroneBot Workshop 2018 https://dronebotworkshop.com */ // Include Wire Library for I2C Communications #include <Wire.h> // Include Adafruit PWM Library #include <Adafruit_PWMServoDriver.h> #define MIN_PULSE_WIDTH 650 #define MAX_PULSE_WIDTH 2350 #define FREQUENCY 50 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // Define Potentiometer Inputs int controlBase = A0; int controlElbow = A1; int controlWrist = A2; int controlPivot = A3; int controlJaws = A6; // Define Motor Outputs on PCA9685 board int motorBase = 0; int motorElbow = 1; int motorWrist = 2; int motorPivot = 3; int motorJaws = 4; // Define Motor position variables int mtrDegreeBase; int mtrDegreeElbow; int mtrDegreeWrist; int mtrDegreePivot; int mtrDegreeJaws; void setup() { // Setup PWM Controller object pwm.begin(); pwm.setPWMFreq(FREQUENCY); } // Function to move motor to specific position void moveMotorDeg(int moveDegree, int motorOut) { int pulse_wide, pulse_width; // Convert to pulse width pulse_wide = map(moveDegree, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH); pulse_width = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096); //Control Motor pwm.setPWM(motorOut, 0, pulse_width); } // Function to convert potentiometer position into servo angle int getDegree(int controlIn) { int potVal,srvDegree; // Read values from potentiometer potVal = analogRead(controlIn); // Calculate angle in degrees srvDegree = map(potVal, 0, 1023, 0, 180); // Return angle in degrees return srvDegree; } void loop() { //Control Base Motor // Get desired position mtrDegreeBase = getDegree(controlBase); // Move motor moveMotorDeg(mtrDegreeBase,motorBase); //Control Elbow Motor // Get desired position mtrDegreeElbow = getDegree(controlElbow); // Move motor moveMotorDeg(mtrDegreeElbow,motorElbow); //Control Wrist Motor // Get desired position mtrDegreeWrist = getDegree(controlWrist); // Move motor moveMotorDeg(mtrDegreeWrist,motorWrist); //Control Pivot Motor // Get desired position mtrDegreePivot = getDegree(controlPivot); // Move motor moveMotorDeg(mtrDegreePivot,motorPivot); //Control Jaws Motor // Get desired position mtrDegreeJaws = getDegree(controlJaws); // Move motor moveMotorDeg(mtrDegreeJaws,motorJaws); // Add short delay delay(20); } |
The sketch includes both the Adafruit PWM library and the Wire library which is essential for communicating via the I2C bus.
A few constants are defined for the PWM controller, the pulse width minimum and maximum for the PWM signal and the frequency of et hsignal. The values in the sketch will work correctly for the motors included with the DF Robot 5 DOF Robot Arm kit.
A number of variables get defined next:
- A “control” variable that represents the analog port the potentiometer is connected to.
- A “motor” variable that represents the PWM output connector on the PCA9685 board.
- A “mtrDegree” variable that represents the angle (from 0 to 180) that you want the motor shaft positioned to.
In the setup we just initialize the PWM object and set the frequency of the PWM oscillator to 50 Hz, which is standard for analog servo motors.
We then define two functions:
- moveMotorDeg – This function takes the motor name and position in degrees as inputs. It then moves the requested motor to that position.
- getDegree – This function takes the potentiometer name as an input and outputs the position in degrees.
The loop is pretty simple, thanks to the two functions we defined. It really is the same routine repeated five times, once per motor.
The potentiometer position is determined using the getDegree function. Then this information is passed to the moveMotorDeg function to move the corresponding motor to the desired position.
After doing this routine for each motor a short delay is induced, then the loop starts all over again. The result is that the servo motors move in response to the potentiometer positions.
Testing the Robot Arm
Hook everything up and provide a suitable power supply and get ready to test your arm.
Make sure you fasten the arm down securely to a base that has enough mass to support it. And keep your hands and digits out of the way when you first power up the arm, the servos will immediately move into position and they won’t stop for your fingers!
The arm is solid and is capable of lifting a reasonable amount of weight. If you’ve worked with a small experimenters arm like the MeArm before you will find this one to be a notable improvement.
The gripper is especially useful, its actually capable of picking up small items in a repeatable fashion.
Plan on spending a few hours “playing” with your new arm, it’s addictive!
Expanding the Robot Arm
This finishes the construction of the arm but by no means does it finish with the harm. This is actually just the beginning of the DFRobot 5 DOF robot arm project, at least for me.
I have already mounted one sensor onto the harm for my next batch of experiments. It’s an MPU5060 gyroscope and altimeter device that I mounted up on the arm wrist to measure position. This beauty works on I2C so it will be simple to interface.
Cameras, distance sensors, limit sensors, force sensitive resistors – the sky’s the limit as to what you can attach to a solid robot arm like this one.
So I can guarantee that you’ll be seeing more of this arm in the workshop. Consider this article and video to be part one of a series.
I hope this article inspires you to build a robot arm like this one. The DFRobot kit is inexpensive and contains some high quality parts that will last for a long time.
I’d love to hear about your robot arm designs. Please let me know about your creations and any problems you might experience building the arm in the comments below.
Parts List
Here are some components that you might need to complete the experiments in this article. Please note that some of these links may be affiliate links, and the DroneBot Workshop may receive a commission on your purchases. This does not increase the cost to you and is a method of supporting this ad-free website.
COMING SOON!
Resources
DFRobot – DFRobot website, for robot arms and much much more.
5 DOF Robot Arm – The DFRobot 5 DOF Robot Arm kit.
Get the Code! – The Arduino controller sketch in an easy-to-use ZIP file.
i want to control my robotic arm with arduino uno r3 can u help me plz and this is not compiling on my arduino r3
Been looking at these kits. The video provides a good description. Now all I need is spare time.
I’m still playing with robot car mods right now. No harm adding an arm to the list.
My aim is to communicate with a mobile wi-fi 8266 module, added to an arduino controller.
Maybe throw in a mobile wifi ipcam? Just to see what it can do?
Does anyone know how to smooth out the servo movements and or control the speed at which the servos travel so they are not so jerky?
I was the same problem so I changed the Frequency from 50Hz to 60 Hz. Also DECREASED the MAX movement from 180 Degrees to 140 degrees
Looking forward to the next installment with this arm. Automation would be interesting.
I’m working on that now Bobby, it will be done soon!
Have you done integrating the MPU6050 with the arm sir?
Awesome description. Great article. Thanks.
I enjoyed watching and reading about this project and I’m very interested in the follow up projects on this robot. Specifically being able to reading position of the tool head and being able to record and replay action. It’s been some time since the original video/project, any estimate on when the next installment will be? I’m also wondering if you’ve considered a similar project using stepper motors. Since you’ve done experiments/projects with stepper motors already, this may be a good marriage of two projects. Your thoughts?
Hi Richard.
Two updates will be done for this. First I’m going to be presenting a robot arm controller that can work with this arm as well as the MeArm (or any servo motor based arm). It will be able to record and playback arm motions. If all goes to plan you should be seeing that in mid-April.
Secondly I’m going to build another robot arm (probably a pair of them) to add to the “Real Robot” project, however, this will happen much later in the project. This arm will use stepper motors.
Stay tuned!
That’s great on both fronts, thank you for the update. I’m looking forward to April. I’ll build an open source 3D printable MeArm (EEZYbotARM MK2 ) in the meantime.
I’ll be replicating your stepper motor experiments in preparation for your “Real Robot” project. I’m really look forward to it.
I’ve been researching a couple open source 6-DOF robotic arms that use stepper motors that are 3D printable. If possible, will you consider a 3D printable arm for your project?
Thanks again.
I am ACADMAN on Youtube- I find your project fascinating and exceptionally helpful. I have been able to translate your very accurate and quality instruction to my other Arduino projects. I am keenly interested in your servo motor based robotic arm system- although, I think right now, with the education I have received from your most excellent tutorial videos, I could build one from scratch. I have bought just about everything you demonstrate so I can emulate your experiments as accurately as possible. Your sponsors should be interested in that remark -☺. Be that as it may, thank you so… Read more »
Am looking to design a hand motion robotic arm finding it difficult to build and interface the RF receiver and transmitter with the microcontroller
I have skipped over this project video until you presented servo control and SD card r/w functions. The possibility of driving all servos simultaneously to given positions will be almost artistic. Simultaneously with multiplexing? Looking forward to your next installment on writing presets to a file.
Hi very interesting but where are you with: “I have already mounted one sensor onto the harm for my next batch of experiments. It’s an MPU5060 gyroscope and altimeter device that I mounted up on the arm wrist to measure position. This beauty works on I2C so it will be simple to interface.”?
BR, jlb
Thanks for this detail and step by step guidance, very clear and very useful for me as a beginner .
Bonjour
I have assembled the kit with the PCA 9685 controller. I have now replaced all the servos with 995R analog servos modified with feedback from the internal pots. Is it possible to use the extra outlets of the PCA 9685 as inputs to allow the training of the arm? If so, hoe do I address them from the Nano sketch? A0, A1 …?
Thanks for all your explicit and interesting tutorials.
Jacques from Montreal.
Just finished assembling the robot arm, I am going to buy the hex base for it now.
Every project I’ve done off of this site that used i2c has failed and so far I have not been able to get i2c to work even when I straight copy and paste the code
Instead of the gripper can i use a 750g inMoov robotic 3Dprinted forearm
I’m using this arm for a school project in a mechatronics degree program. This video was so much more helpful than an unboxing, and definitely made me feel more comfortable purchasing this arm. The project is going well so far, and I’ve recommended this kit to some classmates as a great learning tool. I appreciate the the step by step assembly and attention to detail. The pictogram showing the control circuit was very helpful. I’ll definitely be checking out more of the videos on motor control. Thanks, I look forward to having more time to follow more of the workshops… Read more »
I love this Newsletters, I hope to hear more about quadcopters too.
I have a couple of Radio Shack “Armatron” robot arms stashed away, still trying to figure the best way to interface its workings, which are analog electro-mechanical, to digital control. In my mind I’m leaning towards using stepper motors…
Hello i printed a 6DOF arm and put it all together. Trying to control it with joy sticks instead of regular pots. It is very violent and jerky. I am adding the PCA9685 still till have issues how can i control how fast the servos move the input is fast Beckie’s of the joy sticks i think that is the issue but i am sure there is a way i just don’t know how please help or point me in the right direction. Thanks in advance for any help you can provide
Gustavo A Pasquel
When will the next installment of this robot arm arrive. Realy looking forward to seeing it. Just got started with arduino and assembled a 6 dof robot arm. Love your content! Very informative and knowledgeable as well as easy to follow along with. Keep up the good work eh!