7 Okt 2019

20 - Kunci Pengaman Ultrasonik

Kunci Pengaman Ultrasonik

Kamu hampir menyelesaikan semua latihan pada modul aplikasi ini, sekarang waktunya mengerjakan latihan terakhir membuat Arduino sebagai kunci pengaman Tidak seperti kunci pengaman pada umumnya yang sering kamu lihat seperti menggunakan sidik jari untuk membuka brankas, atau menggunakan sebuah kartu RFID untuk membuka pintu. Kali ini kamu menggunakan sensor yang cukup murah harganya menggunakan komponen yang ada pada kit ini sensor jarak ultrasonik HC-SR04, prinsip kerjanya adalah sensor mendeteksi kombinasi pengukuran jarak yang dimasukan pengguna dengan menggerak-gerakan tangan didepan sensor kemudian apabila sesuai akan mengaktifkan sebuah relay untuk menyalakan peralatan kunci elektronik sehingga pintu terbuka.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x LCD 1602
— 1 x HC-SR04 Ultrasonik
— 1 x Potensiometer
— 1 x Modul Relay
— 1 x Resistor 330Ω
— 23 x Kabel Jumper

Perakitan:

Rangkaian:

Upload Sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  20 - Kunci Pengaman Ultrasonik

  Menggunakan sensor jarak ultrasonik untuk mendeteksi kombinasi pengukuran jarak,
  kemudian dapat mengaktifkan sebuah relay untuk menyalakan peralatan kunci.
  LCD digunakan sebagai antarmuka memasukan kombinasi pengukuran jarak
*/


#include        //librarry liquid crystal kumpulan perintah untuk menampilakan karakter pada layar LCD

int pin[] = {20, 15, 20, 25};    //ini adalah kombinasi "PIN" (jarak dalam cm) yang digunakan untuk membuka kunci
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   //memberitahu Arduino pin mana saja yang dihubungkan dengan LCD

int trigPin = 6;           //hubungkan dengan pin trigger pada sensor jarak      
int echoPin = 7;           //hubungkan dengan pin echo pada sensor jarak     

void setup() {
  Serial.begin(115200);       //memulai komunikasi serial
  lcd.begin(16, 2);           //memberitahu libarry LCD bahwa kita menggunakan layar LCD berukuran lebar 16 karakter dan tinggi 2 karakter
  lcd.clear();                //membersihkan layar

  pinMode(trigPin, OUTPUT);   //pin trigger mengeluarkan pulsa listrik
  pinMode(echoPin, INPUT);    //pin echo akan mengukur durasi pulsa balik yang dikeluarkan dari sensor
}

void loop() {
  if (getDistance()<10 10cm="" 1="" accept="0;" ada="" adel="" antara="" apakah="" attempt="" berada="" checkpin="" dapat="" delay="" detik="" dibawah="" digunakan="" et="" hasil="" int="" jeda="" jika="" kombinasi="" lamanya="" lcd.clear="" lcd.print="" lcd.setcursor="" maka="" masukan="" memasukan="" memeriksa="" mencoba="" mengetahui="" menyimpan="" mulai="" nilai="" one="" penghalang="" pengukuran="" pin="" position="" ready...="" ready="" setiap="" t="4;" tiap="" toleransi="" untuk="" user="" void="" ya="">>>>____");
  attempt[0]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print(" Position Two ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>____");
  attempt[1]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print("Position Three ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>>>>>__");
  attempt[2]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print(" Position Four ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>>>>>>>>>");
  attempt[3]=getDistance();
  delay(adel);
  lcd.clear();
  lcd.print("Checking ... "); //menampilkan tulisan sebagai efek visual 
  delay(2000);
  lcd.clear();
 
  //menampilkan kombinasi masukan user pada monitor serial untuk debugging
  for (int z=0; z<4 attempt="" bandingkan="" dalam="" delay="" dengan="" ditetapkan="" if="" integer="" memberikan="" nilai="" sekarang="" serial.println="" sudah="" t="" toleransi="" yang="" z="">=(pin[0]-t) && attempt[0]<=(pin[0]+t)) { accept++; }
  if (attempt[1]>=(pin[0]-t) && attempt[1]<=(pin[0]+t)) { accept++; }
  if (attempt[2]>=(pin[0]-t) && attempt[2]<=(pin[0]+t)) { accept++; }
  if (attempt[3]>=(pin[0]-t) && attempt[3]<=(pin[0]+t)) { accept++; }
  if (accept==4) {
    //kombinasi masukan PIN benar
    lcd.setCursor(0,0);
    lcd.print(" * Accepted * ");
    //here you would enter code to run when the switch was successfully activated
    delay(2000);
  }
  else if (accept!=4) {
    //kombinasi masukan PIN salah
    lcd.setCursor(0,0);
    lcd.print(" * DENIED * ");
    //here you would enter code to run when the switch was unsuccessfully activated
    delay(2000);
  }
}


//Menghasilkan nilai jarak yang terukur oleh sensor jarak HC-SR04
int getDistance() {
  int echoTime;                   //variabel untuk menyimpan waktu yang diperlukan sebuah ping memantul dari sebuah objek
  int calcualtedDistance;         //variabel untuk menyimpan kalkulasi jarak dari echo time
  
  //mengirim pulsa ultrasonic pulse yang lamanya 10ms
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);

  echoTime = pulseIn(echoPin, HIGH);      //menggunakan perintah pulsein untuk melihat seberapa lama waktu yang dibutuhkan
                                          //pulsa ubtuk memantul kembali ke sensor

  calcualtedDistance = echoTime/58;  //menghitung jarak dari objek yang telah memantulkan pulsa (setengah waktu pantul dikalikan dengan kecepatan suara)
  
  return calcualtedDistance;              //kirim hasil nilai jarak yang telah dihitung
}

Cara menggunakan:

Ketika pertama kali dinyalakan tampil tulisan "Ready" pada layar LCD, untuk mencoba memasukkan kombinasi jarak, kamu dapat mendekatkan tangan dengan sensor hingga jaraknya kurang dari 10cm sampai tampil tulisan "Get Ready". Kemudian akan muncul "Position One" dan kamu harus menempatkan tangan sesuai jarak/posisi pertama. Setelah itu tulisan akan berubah "Position Two" dan kamu merubah posisi/jarak tangan sesuai dengan posisi yang kedua, dan begitu selanjutnya sampai ke empat. Terakhir akan muncul tulisan "Checking...." untuk memeriksa apakah kombinasi kunci yang kamu masukan benar atau salah, akan tampil tulisan "Denied" jika salah dan "Accepted" kalau benar dan relay akan active untuk membuka kunci.


0 comments:

Posting Komentar