Project tutorial
App Controlled Hydraulic Crane

App Controlled Hydraulic Crane © GPL3+

A different view towards hydraulic system. This is a hydraulic system which is punched with electronics.

  • 2,060 views
  • 2 comments
  • 10 respects

Components and supplies

A000066 iso both
Arduino UNO & Genuino UNO
×1
61pby065esl  sx679  tnr8syww5d
HC-05 Bluetooth Module
×1
12002 04
Breadboard (generic)
×1
300 rpm geared dc motor
×8
10 ml syringes
×8
aquarium filter pipe or saline pipe
×1
Thick cardboard
×1
nuts and bolts
×1
6mm ply board
×2
wheels for geared dc motor
×4
wool sewing needle
×2
L298N Dual H bridge
×1

Necessary tools and machines

09507 01
Soldering iron (generic)
drill machine
precision knife
m-seal

Apps and online services

Flheriar 400x400
MIT App Inventor 2
I have provided the .apk file for the app below.

About this project

On the internet only two types of arms are available either hydraulic which is controlled manually or robotic which is controlled using app or some other thing. This project is the combination of both of them.

Before you start make sure you have some arduino coding knowledge.

connect the hc05 with the arduino in this way.

this is the l298 motor driver [ena, in1, in2- motor A], [enb, in3, in4- motor B], ena & enb are for speed control of motor A and motor B.

I have provided a detailed explanation of the code, follow the code and make the circuit. Before switching on the power supply please make sure that you have grounded all the components properly.

Code

hydraulic.inoArduino
// 1st and 2nd motor driver is for the ARM control
// 3rd motor driver is for the LOCOMOTIVE part

//1st Motor driver  [BASE(2,3) AND SHOULDER(4,7)]
int m1IN1 =2;        //in1
int m1IN2 =3;        //in2
int m1IN3 =4;        //in3
int m1IN4 =5;        //in4
int m1ENA =6;        // for speed control, speed control is not used here so kept it HIGH when in motion and make it LOW to stop the motor
int m1ENB =7;        // for speed control, speed control is not used here so kept it HIGH when in motion and make it LOW to stop the motor
//2nd Motor driver  [ELBOW(8,9) AND GRIPPER(12,13)]

int m2IN1 =8;        //in1
int m2IN2 =9;       //in2
int m2IN3 =10;       //in3
int m2IN4 =11;       //in4
int m2ENA =12;       // for speed control, speed control is not used here so kept it HIGH when in motion and make it LOW to stop the motor
int m2ENB =13;       // for speed control, speed control is not used here so kept it HIGH when in motion and make it LOW to stop the motor
//3rd Motor driver  [CAR   (INI,IN2)=RIGHT    (IN3,IN4)=LEFT]

int m3IN1=14;      // in1  14- A0 pin on arduino
int m3IN2=15;      // in2  15-A1
int m3IN3=16;      // in3  16-A2
int m3IN4=17;      // in4  17-A3
int m3ENA=18;      // ena  18-A4  ,here you may use speed control to control the speed of the locomotive part, for that you have to use the analogWrite() instead of digitalWrite()
int m3ENB=19;      // enb  19-A5  ,here you may use speed control to control the speed of the locomotive part, for that you have to use the analogWrite() instead of digitalWrite()
void setup()
{
    pinMode(m1IN1,OUTPUT);
    pinMode(m1IN2,OUTPUT);
    pinMode(m1IN3,OUTPUT);
    pinMode(m1IN4,OUTPUT);
    pinMode(m2IN1,OUTPUT);
    pinMode(m2IN2,OUTPUT);
    pinMode(m2IN3,OUTPUT);
    pinMode(m2IN4,OUTPUT);
    pinMode(m1ENA,OUTPUT);
    pinMode(m1ENB,OUTPUT);
    pinMode(m2ENA,OUTPUT);
    pinMode(m2ENB,OUTPUT);
    pinMode(m3IN1,OUTPUT);
    pinMode(m3IN2,OUTPUT);
    pinMode(m3IN3,OUTPUT);
    pinMode(m3IN4,OUTPUT);
    pinMode(m3ENA,OUTPUT);
    pinMode(m3ENB,OUTPUT);
    Serial.begin(9600);
}

void loop()
{ 
    char ip='0';
    while(Serial.available()>0)   // check whether the serial port is receiving any value from the hc05 or not
    {
        ip=Serial.read();    // reads the data from the serial port
        delay(10);
    }
    switch(ip)
    {
          case '6' : //  SHOULDER UP
              digitalWrite(m1IN3,HIGH);
              digitalWrite(m1IN4,LOW);
              digitalWrite(m1ENA,HIGH);
              digitalWrite(m1ENB,HIGH);
              break;
          case '5' ://  SHOULDER DOWN
              digitalWrite(m1IN3,LOW);
              digitalWrite(m1IN4,HIGH);
              digitalWrite(m1ENA,HIGH);
              digitalWrite(m1ENB,HIGH);
              break;
          case '1' ://  ELBOW UP
              digitalWrite(m2IN3,HIGH);
              digitalWrite(m2IN4,LOW);
              digitalWrite(m2ENA,HIGH);
              digitalWrite(m2ENB,HIGH);
              break;
          case '2' ://  ELBOW DOWN
              digitalWrite(m2IN3,LOW);
              digitalWrite(m2IN4,HIGH);
              digitalWrite(m2ENA,HIGH);
              digitalWrite(m2ENB,HIGH);
              break;
          case '8' ://  GRIP CONTRACT
              digitalWrite(m2IN1,HIGH);
              digitalWrite(m2IN2,LOW);
              digitalWrite(m2ENA,HIGH);
              digitalWrite(m2ENB,HIGH);
              break;
          case '7' ://  GRIP EXPAND
              digitalWrite(m2IN1,LOW);
              digitalWrite(m2IN2,HIGH);
              digitalWrite(m2ENA,HIGH);
              digitalWrite(m2ENB,HIGH);
              break;
          case '3' ://  BASE CLOCK
              digitalWrite(m1IN1,HIGH);
              digitalWrite(m1IN2,LOW);
              digitalWrite(m1ENA,HIGH);
              digitalWrite(m1ENB,HIGH);
              break;
          case '4' ://  BASE ANTICLOCK
              digitalWrite(m1IN1,LOW);
              digitalWrite(m1IN2,HIGH);
              digitalWrite(m1ENA,HIGH);
              digitalWrite(m1ENB,HIGH);
              break;
          case '9' :// OFF
              digitalWrite(m1IN1,LOW);
              digitalWrite(m1IN2,LOW);
              digitalWrite(m1IN3,LOW);
              digitalWrite(m1IN4,LOW);
              digitalWrite(m1ENA,LOW);
              digitalWrite(m1ENB,LOW);
              digitalWrite(m2IN1,LOW);
              digitalWrite(m2IN2,LOW);
              digitalWrite(m2IN3,LOW);
              digitalWrite(m2IN4,LOW);
              digitalWrite(m2ENA,LOW);
              digitalWrite(m2ENB,LOW);
              digitalWrite(m3IN1,LOW);
              digitalWrite(m3IN2,LOW);
              digitalWrite(m3IN3,LOW);
              digitalWrite(m3IN4,LOW);
              digitalWrite(m3ENA,LOW);
              digitalWrite(m3ENB,LOW);
              break;
          case 'A' ://     FORWARD
              digitalWrite(m3IN1,HIGH);
              digitalWrite(m3IN2,LOW);
              digitalWrite(m3IN3,HIGH);
              digitalWrite(m3IN4,LOW);
              digitalWrite(m3ENA,HIGH);
              digitalWrite(m3ENB,HIGH); 
              break;
          case 'D' ://     BACKWARD
              digitalWrite(m3IN1,LOW);
              digitalWrite(m3IN2,HIGH);
              digitalWrite(m3IN3,LOW);
              digitalWrite(m3IN4,HIGH);
              digitalWrite(m3ENA,HIGH);
              digitalWrite(m3ENB,HIGH); 
              break;
          case 'B' ://     RIGHT
              digitalWrite(m3IN1,LOW);
              digitalWrite(m3IN2,HIGH);
              digitalWrite(m3IN3,HIGH);
              digitalWrite(m3IN4,LOW);
              digitalWrite(m3ENA,HIGH);
              digitalWrite(m3ENB,HIGH); 
              break;
           case 'C' ://     LEFT
              digitalWrite(m3IN1,HIGH);
              digitalWrite(m3IN2,LOW);
              digitalWrite(m3IN3,LOW);
              digitalWrite(m3IN4,HIGH);
              digitalWrite(m3ENA,HIGH);
              digitalWrite(m3ENB,HIGH); 
              break;
    }
}
    

Custom parts and enclosures

Hydraulic Crane .apk file (Created in Mit app inventor)
hydraulic_crane_J6NH7RouoB.apk
Preparing the motors
use m-seal to fit the nuts with the motor.
20170120 111115 qvattj7str
20170120_111122_i5kSkFeaQI.jpg
20170120 111122 i5kskfeaqi
Preparing the Syringes
fix the nut on the piston of the syringe using m-seal.
20190323 155157 hedpfojilf
final setup
fix the syringe and motor in these way
20190323 155346 v4ugnsgpqo
20190323_155400_x3O8gbAlj8.jpg
when the motor rotates clockwise it pushes the piston and when it rotates anticlockwise it pulls the piston
20190323 155400 x3o8gbalj8
open the link and watch the video to design the arm
https://www.youtube.com/watch?v=lhOF6cViZ4Q
20190323 155445 5dyoding2c

Comments

Similar projects you might like

Make an Enhanced R2-D2 to Be Controlled by an Android App

Project tutorial by Kutluhan Aktar

  • 1,279 views
  • 0 comments
  • 2 respects

Create a People Counter Controlled by an Android App

Project tutorial by Kutluhan Aktar

  • 3,993 views
  • 2 comments
  • 7 respects

Walabot and Mobile App Controlled 3D-Printed Cars

Project tutorial by Jonathan Mendenhall

  • 6,243 views
  • 2 comments
  • 47 respects

Bluetooth Controlled Car

Project tutorial by JANAK13

  • 8,733 views
  • 17 comments
  • 36 respects
Add projectSign up / Login