Well      06/15/2019

Anyone can handle the manipulator with their own hands. Do-it-yourself desktop robotic arm made of plexiglass on servo drives or uArm reverse engineering. Possible schematic representations of the result

MeArm Robot Arm - Pocket Edition industrial manipulator. MeArm is an easy to assemble and control robot, mechanical arm. The manipulator has four degrees of freedom, which makes it easy to grab and move various small objects.

This product is presented as an assembly kit. Includes the following parts:

  • set of clear acrylic parts for assembly mechanical manipulator;
  • 4 servos;
  • a control board containing an Arduino Pro micro microcontroller and a Nokia 5110 graphic display;
  • joystick board containing two two-coordinate analog joysticks;
  • USB power cable.


Before assembling a mechanical manipulator, it is necessary to calibrate the servos. For calibration we will use the Arduino controller. Connecting servos to Arduino board(required external source power supply 5-6V 2A).

Servo middle, left, right, claw ; // create 4 Servo objects

Void setup()
{
Serial.begin(9600);
middle.attach(11); // connects a servo to pin 11 for platform rotation
left.attach(10); // connects a servo to pin 10 on left shoulder
right.attach(9); // connects a servo to pin 11 on the right shoulder
claw.attach(6); // attach servo to pin 6 claw (capture)
}

Void loop()
{
// sets the position of the servo by value (in degrees)
middle.write(90);
left.write(90);
right.write(90);
claw.write(25);
delay(300);
}
Using a marker, draw a line through the servomotor housing and spindle. Connect the plastic rocker from the kit to the servo as shown below using the small screw from the servo mounting kit. We will use them in this position when assembling the mechanical part of the MeArm. Be careful not to move the spindle position.


Now you can assemble the mechanical manipulator.
Take the base and attach the legs to its corners. Then we install four 20 mm bolts and screw nuts on them (half of the total length).

Now we attach the center servo with two 8mm bolts to a small plate, and fix the resulting structure to the base with 20mm bolts.

We assemble the left section of the structure.

We assemble the right section of the structure.

Now you need to connect the left and right sections. First I go to the adapter plate

Then the right one, and we get

Connecting the structure to the platform

And we collect the "claw"

We fasten the "claw"

For assembly, you can use the following manual (in English) or the assembly manual for a similar manipulator (in Russian).

Pinout

Now you can start writing Arduino code. To control the manipulator, along with the ability to control the control using a joystick, it would be nice to direct the manipulator to some specific point of Cartesian coordinates (x, y, z). There is a corresponding library that can be downloaded from github - https://github.com/mimeindustries/MeArm/tree/master/Code/Arduino/BobStonesArduinoCode .
Coordinates are measured in mm from the center of rotation. The home position is at (0, 100, 50), i.e. 100 mm forward from the base and 50 mm from the ground.
An example of using the library to set the manipulator at a specific point in Cartesian coordinates:

#include "meArm.h"
#include

Void setup() (
arm.begin(11, 10, 9, 6);
arm.openGripper();
}

void loop() (
// up and left
arm.gotoPoint(-80,100,140);
// capture
arm.closeGripper();
// down, harm and right
arm.gotoPoint(70,200,10);
// release the grip
arm.openGripper();
// return w starting point
arm.gotoPoint(0,100,50);
}

meArm class methods:

void begin(int pinBase, int pinShoulder, int pinElbow, int pinGripper) - start meArm, connection pins for middle, left, right, claw servos are indicated. Must be called in setup();
void openGripper() - open capture;
void closeGripper() - capture;
void gotoPoint(float x, float y, float z) - move the manipulator to the position of Cartesian coordinates (x, y, z);
float getX() - current X coordinate;
float getY() - current Y coordinate;
float getZ() - current Z coordinate.

Assembly manual

  • DIY or DIY,
  • Electronics for beginners
  • Hey Geektimes!

    The uArm project from uFactory raised funds on kickstarter more than two years ago. They said from the start that it would be open project, but immediately after the end of the company, they were in no hurry to upload the source code. I just wanted to cut the plexiglass according to their drawings and that's it, but since there were no source codes and it was not foreseen in the foreseeable future, I began to repeat the design from photographs.

    Now my robo arm looks like this:

    Working slowly in two years, I managed to make four versions and got a lot of experience. Description, project history and all project files you can find under the cut.

    trial and error

    When I started working on the blueprints, I wanted to not just repeat the uArm, but improve it. It seemed to me that in my conditions it is quite possible to do without bearings. I also did not like the fact that the electronics rotated with the entire arm and wanted to simplify the design of the lower part of the hinge. Plus I started to draw him immediately a little less.

    With such input parameters I drew the first version. Unfortunately, I did not have any photos of that version of the manipulator (which was made in yellow). The mistakes in it were just epic. First, it was almost impossible to assemble. As a rule, the mechanics that I drew before the manipulator were quite simple, and I did not have to think about the assembly process. But still, I collected it and tried to run it, And the hand hardly moved! All the parts revolved around the screws and if I tightened them so that there was less play, she could not move. If I loosened it so that it could move, incredible backlash appeared. As a result, the concept did not live even three days. And I started working on the second version of the manipulator.

    Red was already quite fit for work. He normally assembled and could move with lubrication. I was able to test the software on it, but still the lack of bearings and large losses on different rods made it very weak.

    Then I abandoned the project for a while, but soon decided to bring it to mind. I decided to use more powerful and popular servos, increase the size and add bearings. And I decided that I would not try to make everything perfect at once. I sketched out the drawings in a hurry, without drawing beautiful mates, and ordered cutting from transparent plexiglass. On the resulting manipulator, I was able to debug the assembly process, identified places that needed additional reinforcement, and learned how to use bearings.

    After playing around with the transparent manipulator to my heart's content, I sat down to draw the final white version. So, now all the mechanics are fully debugged, suits me and is ready to declare that I don’t want to change anything else in this design:

    It depresses me that I could not bring anything fundamentally new to the uArm project. By the time I started drawing the final version, they had already rolled out 3D models on GrabCad. In the end, I just simplified the claw a little, prepared the files in a convenient format and used very simple and standard components.

    Features of the manipulator

    Before the advent of uArm, desktop manipulators of this class looked rather dull. They either had no electronics at all, or they had some kind of control with resistors, or they had their own proprietary software. Secondly, they usually did not have a system of parallel hinges and the grip itself changed its position during operation. If we collect all the advantages of my manipulator, we get a rather long list:
    1. A system of rods that allows you to place powerful and heavy engines in the base of the manipulator, as well as holding the gripper parallel or perpendicular to the base
    2. A simple set of components that are easy to buy or cut from plexiglass
    3. Bearings in almost all nodes of the manipulator
    4. Easy assembly. This turned out to be a really difficult task. It was especially difficult to think over the process of assembling the base
    5. The grip position can be changed by 90 degrees
    6. Open source and documentation. Everything is prepared in accessible formats. I will give download links for 3D models, cutting files, material list, electronics and software
    7. Arduino compatible. There are many opponents of Arduino, but I believe that this is an opportunity to expand the audience. Professionals can write their own software in C - it's just a regular controller from Atmel!

    Mechanics

    For assembly, it is necessary to cut parts from 5mm plexiglass:

    They charged me about $10 for cutting all these parts.

    The base is mounted on a large bearing:

    It was especially difficult to think of the base from the point of view of the assembly process, but I was peeping at the engineers from uArm. Rocking chairs sit on a pin with a diameter of 6mm. It should be noted that the thrust of my elbow rests on a U-shaped holder, and for uFactory on an L-shaped one. It's hard to explain what the difference is, but I think I did better.

    Capture is collected separately. It can rotate around its own axis. The claw itself sits directly on the motor shaft:

    At the end of the article, I will give a link to super-detailed assembly instructions in photos. In a couple of hours, you can confidently twist it all, if everything you need is at hand. I also prepared a 3D model in free sketchup program. You can download it, twist it and see what and how it is assembled.

    Electronics

    To make the arm work, all you need to do is connect five servos to the Arduino and power them from a good source. uArm used some motors with feedback. I supplied three regular MG995 motors and two small metal gear motors to control the grip.

    Here my story is closely intertwined with previous projects. For some time now, I have started and even prepared my Arduino-compatible board for this purpose. On the other hand, once I got the opportunity to make boards cheaply (which I also talk about). In the end, it all ended with the fact that I used my own Arduino-compatible board and a specialized shield to control the manipulator.

    This shield is actually very simple. It has four variable resistors, two buttons, five servo connectors, and a power connector. This is very convenient from a debugging point of view. You can upload a test sketch and record some kind of macro to control or something like that. I will also give a link for downloading the board file at the end of the article, but it is prepared for manufacturing with hole plating, so it is not very suitable for home production.

    Programming

    The most interesting thing is the control of the manipulator from the computer. uArm has a handy application for controlling the manipulator and a protocol for working with it. The computer sends 11 bytes to the COM port. The first one is always 0xFF, the second one is 0xAA and some of the rest are servo signals. Further, these data are normalized and given to the engines for testing. I have servos connected to digital I/O 9-12, but this can easily be changed.

    The terminal program from uArm allows you to change five parameters when controlling the mouse. When moving the mouse over the surface, the position of the manipulator in the XY plane changes. Rotate the wheel - change the height. LMB / RMB - squeeze / unclench the claw. RMB + wheel - grip rotation. Actually very convenient. If you wish, you can write any terminal software that will communicate with the manipulator using the same protocol.

    I will not give sketches here - you can download them at the end of the article.

    Video of work

    And, finally, the video of the operation of the manipulator itself. It shows the control of the mouse, resistors and according to a pre-recorded program.

    Links

    Plexiglas cutting files, 3D models, shopping list, board drawings and software can be downloaded at the end of my

    We create a robotic arm using a rangefinder, implement a backlight.

    We will cut the base from acrylic. We use servos as motors.

    General description of the project of the robotic arm

    The project used 6 servomotors. For the mechanical part, 2 mm thick acrylic was used. As a tripod, the base from the disco ball came in handy (one of the engines is mounted inside). An ultrasonic distance sensor and a 10 mm LED were also used.

    The Arduino board is used to control the robot. The power supply itself is the computer's power supply.

    The project provides comprehensive explanations for the development of a robotic arm. The nutritional issues of the developed design are considered separately.

    Basic nodes for the project of the manipulator

    Let's start development. You will need:

    • 6 servos (I used 2 mg946, 2 mg995 , 2 futuba s3003 (mg995/mg946 are better than futuba s3003 but much cheaper)
    • acrylic 2 mm thick (and a small piece 4 mm thick);
    • ultrasonic distance sensor hc-sr04 ;
    • LEDs 10 mm (color - at your discretion);
    • tripod (used as a base);
    • aluminum tong (costs about 10-15 dollars).

    For driving:

    • Arduino Uno board (the project used homemade board, which is completely similar to Arduino);
    • power board (you will have to make it yourself, we will return to this issue later, it requires special attention);
    • power supply (in this case, a computer power supply is used);
    • computer for programming your manipulator (if you use for Arduino programming means Arduino IDE)

    Of course you will need cables and some basic tools like screwdrivers etc. Now we can move on to construction.

    Assembly of the mechanical part

    Before starting the development of the mechanical part of the manipulator, it is worth noting that I have no drawings. All knots were made "on the knee". But the principle is very simple. You have two acrylic links, between which you need to install servomotors. And the other two links. Also for engine installation. Well, the grip itself. It is easiest to buy such a grip on the Internet. Almost everything is installed with screws.

    The length of the first part is about 19 cm; the second - about 17.5; the length of the front link is about 5.5 cm. Select the remaining dimensions in accordance with the dimensions of your project. In principle, the sizes of other nodes are not so important.

    The mechanical arm must provide 180 degrees of rotation at the base. So we have to install the servomotor from below. In this case, it is installed in the same disco ball. In your case, it can be any suitable box. The robot is mounted on this servomotor. It is possible, as shown in the figure, to install an additional metal ring-flange. You can do without it.

    To install the ultrasonic sensor, 2 mm thick acrylic is used. Here you can also install an LED from below.

    It is difficult to explain in detail how to design such a manipulator. Much depends on the components and parts that you have in stock or you are purchasing. For example, if the dimensions of your servos are different, the acrylic links will also change. If the dimensions change, the calibration of the manipulator will also be different.

    You will definitely need to lengthen the servomotor cables after the mechanical part of the manipulator is completed. For these purposes, wires from an Internet cable were used in this project. In order for all this to look like, do not be lazy and install adapters on the free ends of the elongated cables - mother or father, depending on the outputs of your Arduino board, shield or power supply.

    After assembling the mechanical part, we can move on to the "brains" of our manipulator.

    Manipulator grip

    You will need a servo motor and some screws to install the gripper.

    So what exactly needs to be done.

    Take the rocking chair from the servo and shorten it until it fits your grip. After that, tighten the two small screws.

    After installing the servo, turn it to the extreme left position and squeeze the jaws of the grip.

    Now you can install the servo on 4 bolts. At the same time, make sure that the engine is still in the extreme left position, and the jaws of the gripper are closed.

    You can connect the servo to the Arduino board and check the operation of the gripper.

    Please note that there may be problems with gripper operation if the bolts/screws are overtightened.

    Adding illumination to the manipulator

    You can make your project brighter by adding highlights to it. For this, LEDs were used. It is easy to do, and in the dark it looks very impressive.

    Places for installing LEDs depend on your creativity and imagination.

    wiring diagram

    You can use a 100 kΩ potentiometer instead of resistor R1 to manually adjust the brightness. 118 ohm resistors were used as resistance R2.

    List of main nodes that were used:

    • R1 - 100 kΩ resistor
    • R2 - 118 ohm resistor
    • transistor bc547
    • photoresistor
    • 7 LEDs
    • Switch
    • Connecting to the Arduino Board

    An Arduino board was used as a microcontroller. The power supply from a personal computer was used as a power supply. By connecting a multimeter to the red and black cables, you will see 5 volts (which are used for servo motors and an ultrasonic distance sensor). Yellow and black will give you 12 volts (for Arduino). We make 5 connectors for servos, in parallel we connect positive to 5 V, and negative to ground. Same with the distance sensor.

    After that, connect the remaining connectors (one from each servo and two from the rangefinder) to the board we soldered and the Arduino. At the same time, do not forget to correctly indicate the pins that you used in the program in the future.

    In addition, a power LED was installed on the power board. It is easy to implement. Additionally, a 100 ohm resistor was used between 5 V and ground.

    The 10mm LED on the robot is also connected to the Arduino. A 100 ohm resistor goes from pin 13 to the positive leg of the LED. Negative - to the ground. You can turn it off in the program.

    For 6 servomotors, 6 connectors are used because the 2 servomotors on the bottom use the same control signal. The corresponding conductors are connected and connected to one pin.

    I repeat that the power supply from a personal computer is used as a power supply. Or, of course, you can purchase a separate power supply. But given that we have 6 drives, each of which can consume about 2 A, such a powerful power supply will be expensive.

    Please note that the connectors from the servo are connected to the PWM outputs of the Arduino. Near each such pin on the board there is symbol~. An ultrasonic distance sensor can be connected to pins 6, 7. An LED can be connected to pin 13 and ground. These are all the pins we need.

    Now we can move on to Arduino programming.

    Before connecting the board via usb to the computer, make sure you turn off the power. When you test the program, also turn off the power to your robotic arm. If the power is not turned off, the Arduino will receive 5 volts from usb and 12 volts from the power supply. Accordingly, the power from usb will be transferred to the power source and it will "sag" a little.

    The wiring diagram shows that potentiometers have been added to control the servos. Potentiometers are optional, but the code above will not work without them. Potentiometers can be connected to pins 0,1,2,3 and 4.

    Programming and first start

    5 potentiometers were used for control (it is quite possible to replace this with 1 potentiometer and two joysticks). The connection diagram with potentiometers is shown in the previous part. The Arduino sketch is here.

    Below are some videos of the robotic arm in action. I hope you will enjoy.

    The video above shows the latest arma modifications. I had to slightly change the design and replace a few parts. It turned out that futuba s3003 servos are rather weak. They turned out to be used only for grasping or turning the hand. So instead of them, mg995 was installed. Well, mg946 will generally be an excellent option.

    Control program and explanations for it

    // drives are controlled by variable resistors - potentiometers.

    int potpin = 0; // analog pin for connecting a potentiometer

    int value; // variable for reading data from the analog pin

    myservo1.attach(3);

    myservo2.attach(5);

    myservo3.attach(9);

    myservo4.attach(10);

    myservo5.attach(11);

    pinMode(led, OUTPUT);

    ( //servo 1 analog pin 0

    val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)

    // scales the received value for use with servos (we get a value in the range from 0 to 180)

    myservo1.write(val); // brings the servo into position according to the calculated value

    delay(15); // waits for the servomotor to reach the given position

    val = analogRead(potpin1); // servo 2 on analog pin 1

    val = map(val, 0, 1023, 0, 179);

    myservo2.write(val);

    val = analogRead(potpin2); // servo 3 on analog pin 2

    val = map(val, 0, 1023, 0, 179);

    myservo3.write(val);

    val = analogRead(potpin3); // servo 4 on analog pin 3

    val = map(val, 0, 1023, 0, 179);

    myservo4.write(val);

    val = analogRead(potpin4); //server 5 on analog pin 4

    val = map(val, 0, 1023, 0, 179);

    myservo5.write(val);

    Sketch using ultrasonic distance sensor

    This is probably one of the most spectacular parts of the project. A distance sensor is installed on the manipulator, which reacts to obstacles around.

    The main explanations for the code are given below.

    #define trigPin 7

    The next piece of code:

    We assigned names to all 5 signals (for 6 drives) (can be any)

    Following:

    Serial.begin(9600);

    pinMode(trigPin, OUTPUT);

    pinMode(echoPin, INPUT);

    pinMode(led, OUTPUT);

    myservo1.attach(3);

    myservo2.attach(5);

    myservo3.attach(9);

    myservo4.attach(10);

    myservo5.attach(11);

    We tell the Arduino board which pins the LEDs, servos, and distance sensor are connected to. There is nothing to change here.

    void position1()(

    digitalWrite(led, HIGH);

    myservo2.writeMicroseconds(1300);

    myservo4.writeMicroseconds(800);

    myservo5.writeMicroseconds(1000);

    There are some things that can be changed here. I set a position and named it position1. It will be used in the next program. If you want to provide a different movement, change the values ​​in brackets between 0 and 3000.

    After that:

    void position2()(

    digitalWrite(led,LOW);

    myservo2.writeMicroseconds(1200);

    myservo3.writeMicroseconds(1300);

    myservo4.writeMicroseconds(1400);

    myservo5.writeMicroseconds(2200);

    Similar to the previous piece, only in this case it is position2. By the same principle, you can add new positions to move.

    long duration, distance;

    digitalWrite(trigPin, LOW);

    delayMicroseconds(2);

    digitalWrite(trigPin, HIGH);

    delayMicroseconds(10);

    digitalWrite(trigPin, LOW);

    duration = pulseIn(echoPin, HIGH);

    distance = (duration/2) / 29.1;

    Now it starts to work out the main code of the program. You shouldn't change it. The main task of the lines above is to set up a distance sensor.

    After that:

    if (distance<= 30) {

    if (distance< 10) {

    myservo5.writeMicroseconds(2200); // open grip

    myservo5.writeMicroseconds(1000); // close grip

    Now you can add new movements depending on the distance measured by the ultrasonic sensor.

    if(distance<=30){ // данная строка обеспечивает переход в position1, если расстояние меньше 30 см.

    position1(); // in fact, the arm will work out everything that you specify between the brackets ( )

    else( // if the distance is greater than 30 cm, go to position2

    position()2 // same as previous line

    You can change the distance in the code and do whatever you want.

    Last lines of code

    if (distance > 30 || distance<= 0){

    Serial.println("out of range"); //output in the serial monitor of the message that we have gone beyond the specified range

    Serial print(distance);

    Serial.println("cm"); //distance in centimeters

    delay(500); //delay in 0.5 seconds

    Of course, you can convert everything here to millimeters, meters, change the displayed message, etc. You can play with the delay a bit.

    That's all. Enjoy, upgrade your own manipulators, share ideas and results!

    We have developed a robot arm that anyone can assemble on their own. In this article, we will talk about how to assemble the mechanical parts of our manipulator.

    Note! This is an old article! You can read it if you are interested in the history of the project. Current version.

    Site manipulator

    Here is a video of her work:

    Design description

    As a basis, we took the manipulator presented on the Kickstarter website, which was called uArm. The authors of this project promised that after the completion of the company they would lay out all the source codes, but this did not happen. Their project is an excellent combination of well-made hardware and software. Inspired by their experience, we decided to make a similar manipulator on our own.
    Most of the existing manipulators assume the location of the engines directly in the joints. This is structurally simpler, but it turns out that the engines must lift not only the payload, but also other engines. The Kickstarter project does not have this disadvantage, since the forces are transmitted through the rods and all the engines are located at the base.
    The second advantage of the design is that the platform for placing the tool (grip, suction cup, etc.) is always parallel to the working surface.

    As a result, the manipulator has three servos (three degrees of freedom), which allow it to move the tool along all three axes.

    Servo drives

    For our manipulator we used Hitec HS-485 servos. These are rather expensive digital servos, but for their money they provide an honest force of 4.8 kg / cm, accurate positioning and acceptable speed.
    They can be replaced with others with the same dimensions.

    Manipulator development

    To begin with, we made a model in SketchUp. We checked the design for assembly and mobility.

    We had to simplify the design a bit. The original project used bearings that are difficult to obtain. We also decided at the initial stage not to capture. To begin with, we plan to make a controlled lamp out of the manipulator.
    We decided to make the manipulator from plexiglass. It is quite cheap, looks good and is easy to cut with a laser. For cutting, it is enough to draw the required details in any vector editor. We did it in NanoCad:

    Plexiglas cutting

    We order cutting of Plexiglas from a company located near Yekaterinburg. They do quickly, efficiently and do not refuse small orders. Cutting such parts will cost about 800 rubles. As a result, you will get cut out parts on both sides of which there is a plastic film. This film is needed to protect the material from the formation of scale.

    This film must be removed from both sides.

    We also ordered engraving on the surface of some parts. For engraving, simply draw the image on a separate layer and indicate this when ordering. Places of engraving must be cleaned with a toothbrush and rubbed with dust. It turned out very well:

    As a result, after removing the film and grout, we got this:

    Assembly of the manipulator

    First you need to collect five parts:






    In the base it is necessary to use screws with cooking in pot. You will have to drill holes a little so that the arm can turn.


    After these parts are assembled, it remains only to screw them to the servo arms and throw on the rods to position the tool. It is quite difficult to screw exactly two drives at the base:

    First you need to install a 40mm long hairpin (shown by the yellow line in the photo), and then screw the rocking chairs.
    For the hinges, we used regular M3 screws and nylon insert nuts to prevent self-loosening. These nuts are clearly visible at the end of the manipulator:

    So far, this is just a flat area on which we plan to attach a light bulb to begin with.

    Assembled manipulator

    Results

    We are currently working on electronics and software and will tell you soon about the continuation of the project, so we do not have the opportunity to demonstrate its work yet.
    In the future, we plan to equip the manipulator with a gripper and add bearings.
    If you have a desire to make your own manipulator, you can download the file for cutting .
    List of fasteners you will need:

    1. M4x10 socket head screw, 12pcs
    2. M3x60 screw, 1pc
    3. M3x40 hairpin, 1 pc (you may have to shorten it a little with a file)
    4. M3x16 head screw under h/w, 4pcs
    5. M3x16 countersunk screw, 8pcs
    6. M3x12 head screw under h/w, 6 pcs
    7. M3x10 head screw under h/w, 22pcs
    8. M3x10 countersunk screw, 8pcs
    9. M2x6 screw with head. under h/w, 12pcs
    10. M3x40 brass female-female stand, 8 pcs
    11. М3х27 rack brass female-female, 5 pcs
    12. M4 nut, 12pcs
    13. M3 nut, 33pcs
    14. M3 nut with nylon lock, 11pcs
    15. M2 nut, 12pcs
    16. washers

    UPD1

    A lot of time has passed since the publication of this article. Her first formation was yellow and she was extremely terrible. The red arm was no longer embarrassing to show on the site, but without bearings it still did not work well enough, and it was also difficult to assemble.
    We made a transparent version with bearings that worked much better and the assembly process was better thought out. This version of the manipulator even managed to visit several exhibitions.

    - a simple desktop manipulator made of plexiglass on servo drives.

    The uArm project from uFactory raised funds on kickstarter more than two years ago. They said from the very beginning that it would be an open project, but immediately after the end of the company, they were in no hurry to upload the source code. I just wanted to cut the plexiglass according to their drawings and that's it, but since there were no source codes and it was not foreseen in the foreseeable future, I began to repeat the design from photographs.

    Now my robo arm looks like this:

    Working slowly in two years, I managed to make four versions and got a lot of experience. Description, project history and all project files you can find under the cut.

    trial and error

    When I started working on the blueprints, I wanted to not just repeat the uArm, but improve it. It seemed to me that in my conditions it is quite possible to do without bearings. I also did not like the fact that the electronics rotated with the entire arm and wanted to simplify the design of the lower part of the hinge. Plus I started to draw him immediately a little less.

    With these inputs, I drew the first version. Unfortunately, I did not have any photos of that version of the manipulator (which was made in yellow). The mistakes in it were just epic. First, it was almost impossible to assemble. As a rule, the mechanics that I drew before the manipulator were quite simple, and I did not have to think about the assembly process. But still, I collected it and tried to run it, And the hand hardly moved! All the parts revolved around the screws and if I tightened them so that there was less play, she could not move. If I loosened it so that it could move, incredible backlash appeared. As a result, the concept did not live even three days. And I started working on the second version of the manipulator.


    Red was already quite fit for work. He normally assembled and could move with lubrication. I was able to test the software on it, but still the lack of bearings and large losses on different rods made it very weak.

    Then I abandoned the project for a while, but soon decided to bring it to mind. I decided to use more powerful and popular servos, increase the size and add bearings. And I decided that I would not try to make everything perfect at once. I sketched out the drawings in a hurry, without drawing beautiful mates, and ordered cutting from transparent plexiglass. On the resulting manipulator, I was able to debug the assembly process, identified places that needed additional reinforcement, and learned how to use bearings.


    After playing around with the transparent manipulator to my heart's content, I sat down to draw the final white version. So, now all the mechanics are fully debugged, suits me and is ready to declare that I don’t want to change anything else in this design:


    It depresses me that I could not bring anything fundamentally new to the uArm project. By the time I started drawing the final version, they had already rolled out 3D models on GrabCad. In the end, I just simplified the claw a little, prepared the files in a convenient format and used very simple and standard components.

    Features of the manipulator

    Before the advent of uArm, desktop manipulators of this class looked rather dull. They either had no electronics at all, or they had some kind of control with resistors, or they had their own proprietary software. Secondly, they usually did not have a system of parallel hinges and the grip itself changed its position during operation. If we collect all the advantages of my manipulator, we get a rather long list:

    1. A system of rods that allows you to place powerful and heavy engines in the base of the manipulator, as well as holding the gripper parallel or perpendicular to the base
    2. A simple set of components that are easy to buy or cut from plexiglass
    3. Bearings in almost all nodes of the manipulator
    4. Easy assembly. This turned out to be a really difficult task. It was especially difficult to think over the process of assembling the base
    5. The grip position can be changed by 90 degrees
    6. Open source and documentation. Everything is prepared in accessible formats. I will give download links for 3D models, cutting files, material list, electronics and software
    7. Arduino compatible. There are many opponents of Arduino, but I believe that this is an opportunity to expand the audience. Professionals can write their own software in C - it's just a regular controller from Atmel!

    Mechanics

    For assembly, it is necessary to cut parts from 5mm plexiglass:



    They charged me about $10 for cutting all these parts.

    The base is mounted on a large bearing:


    It was especially difficult to think of the base from the point of view of the assembly process, but I was peeping at the engineers from uArm. Rocking chairs sit on a pin with a diameter of 6mm. It should be noted that the thrust of my elbow rests on a U-shaped holder, and for uFactory on an L-shaped one. It's hard to explain what the difference is, but I think I did better.


    Capture is collected separately. It can rotate around its own axis. The claw itself sits directly on the motor shaft:


    At the end of the article, I will give a link to super-detailed assembly instructions in photos. In a couple of hours, you can confidently twist it all, if everything you need is at hand. I also prepared a 3D model in free program sketch up. You can download it, twist it and see what and how it is assembled.



    Electronics

    To make the arm work, all you need to do is connect five servos to the Arduino and power them from a good source. uArm has some kind of feedback motors. I supplied three regular MG995 motors and two small metal gear motors to control the grip.

    Here my story is closely intertwined with previous projects. For some time now, I have started teaching Arduino programming and even prepared my own Arduino-compatible board for this purpose. On the other hand, once I got the opportunity to make boards cheaply (which I also wrote about). In the end, it all ended with the fact that I used my own Arduino-compatible board and a specialized shield to control the manipulator.


    This shield is actually very simple. It has four variable resistors, two buttons, five servo connectors, and a power connector. This is very convenient from a debugging point of view. You can upload a test sketch and record some kind of macro to control or something like that. I will also give a link for downloading the board file at the end of the article, but it is prepared for manufacturing with hole plating, so it is not very suitable for home production.


    Programming

    The most interesting thing is the control of the manipulator from the computer. uArm has a handy application for controlling the manipulator and a protocol for working with it. The computer sends 11 bytes to the COM port. The first one is always 0xFF, the second one is 0xAA and some of the rest are servo signals. Further, these data are normalized and given to the engines for testing. I have servos connected to digital I/O 9-12, but this can easily be changed.

    The terminal program from uArm allows you to change five parameters when controlling the mouse. When moving the mouse over the surface, the position of the manipulator in the XY plane changes. Rotate the wheel - change the height. LMB / RMB - squeeze / unclench the claw. RMB + wheel - grip rotation. Actually very convenient. If you wish, you can write any terminal software that will communicate with the manipulator using the same protocol.

    I will give sketches here - you can download them at the end of the article.

    Video of work

    And, finally, the video of the operation of the manipulator itself. It shows the control of the mouse, resistors and according to a pre-recorded program.

    Links

    Plexiglas cutting files, 3D models, shopping list, board drawings and software can be downloaded at the end of my main article.
    (be careful, traffic).