Translate

Membuat Tempat Sampah Otomatis Buka - Tutup dan Alarm Penuh ( SMART TRASH BIN )

Membuat Tempat Sampah Otomatis Buka - Tutup dan Alarm Penuh ( SMART TRASH BIN )


      Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat berfungsi sebagai tempat sampah pintar yang mana jika ada orang yang ingin membuang sampah maka pada jarak tertentu, tutup tempat sampah akan membuka dengan sendirinya, kemudian jika orang tersebut telah menjauh maka akan menutup dengan sendirinya, terdapat 2 buah indikator yang menandakan tempat sampah kondisi penuh atau kosong, jika sudah penuh maka akan ada alarm yang berbunyi dan led merah akan menyala, namun jika kondisi tempat sampah kosong atau belum penuh maka led hijau akan menyala. untuk sensor yang digunakan adalah HY-SRF05 sebanyak 4 buah, yaitu untuk bagian kanan, kiri, depan dan bagian atas. untuk deteksi orang yang mendekat digunakan sensor jarak yang berada di kanan, kiri dan depan sedangkan untuk sensor volumenya menggunakan sensor yang terdapat diatas. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Arduino Uno






b. Sensor Jarak HY-SRF05





c. Motor Servo





d. LCD 16 x 2 + I2C Converter





e. UBEC 3A





f. Led dan Buzzer






g. Program Arduino IDE

#include <Wire.h>  // i2C Conection Library
#include <LiquidCrystal_I2C.h>  //i2C LCD Library
#include <Servo.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

Servo myservo; 

const int TRIG_PIN1 = 2;
const int ECHO_PIN1 = 3;
const int TRIG_PIN2 = 4;
const int ECHO_PIN2 = 5;
const int TRIG_PIN3 = 6;
const int ECHO_PIN3 = 7;
const int TRIG_PIN4 = A1;
const int ECHO_PIN4 = A0;

int ledm = 11;
int ledh = 10;
int buzzer = 8;

long duration1, distanceCm1;
long duration2, distanceCm2;
long duration3, distanceCm3;
long duration4, distanceCm4;

void setup() {
  myservo.attach(9);

  lcd.begin();
  lcd.noCursor();
  lcd.clear();
 
  pinMode(TRIG_PIN1,OUTPUT);
  pinMode(ECHO_PIN1,INPUT);
  pinMode(TRIG_PIN2,OUTPUT);
  pinMode(ECHO_PIN2,INPUT);
  pinMode(TRIG_PIN3,OUTPUT);
  pinMode(ECHO_PIN3,INPUT);
  pinMode(TRIG_PIN4,OUTPUT);
  pinMode(ECHO_PIN4,INPUT);
  pinMode(ledm,OUTPUT);
  pinMode(ledh,OUTPUT);
  pinMode(buzzer,OUTPUT);
  digitalWrite(buzzer,HIGH);
  
   myservo.write(100);

}


void loop()
{

  digitalWrite(TRIG_PIN1, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN1, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN1, LOW);
  duration1 = pulseIn(ECHO_PIN1,HIGH);

  // convert the time into a distance
  distanceCm1 = duration1 / 29.1 / 2 ;

  digitalWrite(TRIG_PIN2, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN2, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN2, LOW);
  duration2 = pulseIn(ECHO_PIN2,HIGH);

  // convert the time into a distance
  distanceCm2 = duration2 / 29.1 / 2 ;


  digitalWrite(TRIG_PIN3, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN3, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN3, LOW);
  duration3 = pulseIn(ECHO_PIN3,HIGH);

  // convert the time into a distance
  distanceCm3 = duration3 / 29.1 / 2 ;


  digitalWrite(TRIG_PIN4, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN4, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN4, LOW);
  duration4 = pulseIn(ECHO_PIN4,HIGH);

  // convert the time into a distance
  distanceCm4 = duration4 / 29.1 / 2 ;


 lcd.setCursor(0,0);
 lcd.print(distanceCm1);

 lcd.setCursor(0,1);
 lcd.print(distanceCm2);

 lcd.setCursor(8,0);
 lcd.print(distanceCm3);

 lcd.setCursor(8,1);
 lcd.print(distanceCm4);


  if(distanceCm4 <= 10 ){
  digitalWrite(ledm,HIGH); 
  digitalWrite(ledh,LOW); 
  }

  if(distanceCm4 > 5 ){
  digitalWrite(ledh,HIGH);
  digitalWrite(ledm,LOW);
  digitalWrite(buzzer,HIGH);
  
  }
 
  if((distanceCm4 <= 5 )&&(distanceCm1 < 50)&&(distanceCm2 > 50)&&(distanceCm3 > 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 > 50)&&(distanceCm2 < 50)&&(distanceCm3 > 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 > 50)&&(distanceCm2 > 50)&&(distanceCm3 < 50)){
  digitalWrite(buzzer,LOW); 
  }
 
  if((distanceCm4 <= 5 )&&(distanceCm1 < 50)&&(distanceCm2 < 50)&&(distanceCm3 > 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 < 50)&&(distanceCm2 > 50)&&(distanceCm3 < 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 > 50)&&(distanceCm2 < 50)&&(distanceCm3 < 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 < 50)&&(distanceCm2 < 50)&&(distanceCm3 < 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 > 50)&&(distanceCm2 > 50)&&(distanceCm3 > 50)){
  digitalWrite(buzzer,HIGH); 
  }
 
  //=============================================================================================
  if((distanceCm4 > 5 )&&(distanceCm1 < 50)&&(distanceCm2 > 50)&&(distanceCm3 > 50)){
    myservo.write(150);
  }
  if((distanceCm4 > 5 )&&(distanceCm1 > 50)&&(distanceCm2 < 50)&&(distanceCm3 > 50)){
    myservo.write(150); 
  }
  if((distanceCm4 > 5 )&&(distanceCm1 > 50)&&(distanceCm2 > 50)&&(distanceCm3 < 50)){
    myservo.write(150); 
  }
 
  if((distanceCm4 > 5 )&&(distanceCm1 < 50)&&(distanceCm2 < 50)&&(distanceCm3 > 50)){
    myservo.write(150); 
  }
  if((distanceCm4 > 5 )&&(distanceCm1 < 50)&&(distanceCm2 > 50)&&(distanceCm3 < 50)){
    myservo.write(150);
  }
  if((distanceCm4 > 5 )&&(distanceCm1 > 50)&&(distanceCm2 < 50)&&(distanceCm3 < 50)){
    myservo.write(150); 
  }
  if((distanceCm4 > 5 )&&(distanceCm1 < 50)&&(distanceCm2 < 50)&&(distanceCm3 < 50)){
    myservo.write(150);
  }
  if((distanceCm4 > 5 )&&(distanceCm1 > 50)&&(distanceCm2 > 50)&&(distanceCm3 > 50)){
    myservo.write(100); 
  }
 

  delay(1000);
  lcd.clear();

}







h. VIDEO HASILNYA











  

No comments:

Post a Comment