Langsung ke konten utama

Cara Membuat Robot Obstacle Avoiding


Oke sekarang saya akan membahas tentang tutorial membuat obstacle avoidance robot alias robot halang rintang alias robot susur dinding alias wall follower robotApapun namanya, ya begitulah robotnya. hehe

Biar lebih simpel kita sebut saja OBSTABOT.
Nah, lalu komponen apa saja sih yang kita butuhkan untuk membuat sebuah OBSTABOT???

Berikut merupakan komponen-komponen yang kita butuhkan: 
  1. Sistem minimum, oke disini kita gunakan Arduino UNO saja.
  2. Dual Driver Motor
  3. Sensor Ultrasonic, kita pakai yang versi ekonomisnya saja yaitu HCSR04, jumlahnya minimal TIGA untuk sensor depan, kanan, dan sensor kiri.
  4. Body, bisa buat sendiri menggunakan akrilik atau triplek.
  5. Dinamo dan roda, saya pakai dinamo tamiya yang 3 V + gearbox.
  6. Batterai Lipo 7.2 VDC.
  7. Kabel Ties, Mur Baud 3mm, double tape, lem dan asesoris lainnya yang dibutuhkan.

Gambar 1 Komponen- komponen OBSTABOT

Jika semua komponen yang dibutuhkan sudah tersedia, sekarang lanjut ke langkah selanjutnya yaitu mulai merangkai. 

Jangan lupa berdoa...

1. Langkah Pertama (merakit mekanik)
Siapkan 2 buah gearbox yang sudah dilengkapi dengan dinamo. Siapkan juga akrilik atau triplek dengan ukuran 20 x 20 CM atau sesuai selera. Bentuk akrilik/triplek seperti yang terlihat di Gambar 2 (Warna Hijau). Bentuk sesuai selera.
Gambar 2. Desain Mekanik OBSTABOT

Jika semua langkah di atas sudah terpenuhi, mari kita lanjut ke langkah berikutnya yaitu merakit elektrik.

2. Langkah Kedua (merakit elektronik)
Sebelum merakit elektrik, pastikan dahulu langkah pertama (merakit mekanik) sudah dilaksanakan. OK?

Nah dilangkah kedua ini kita akan merakit bagian elektroniknya. Caranya gampang, coba perhatikan Gambar 3 berikut ini, pastikan tidak ada kabel yang lupa terpasang ya?

Gambar 3. Skematik OBSTABOT
Dari gambar 3 di atas, sensor kiri dihubungkan ke D8 (TRIG) dan D9 (ECHO), sensor depan dihubungkan ke D10 (TRIG) dan D11 (ECHO), dan sensor kanan dihubungkan ke D12 (TRIG) dan D13 (ECHO). Sedangkan driver motor dihubungkan ke D4, D5, D6, dan D7. Khusus untuk driver motor tidak perlu lagi menggunakan kabel karena bisa langsung ditempel di arduino UNO (Shield).

Jika semuanya sudah terhubung, kita lanjut ke langkah yang ketiga... Langkah ketiga ini adalah proses pemrogramman OBSTABOT.
3. Langkah Ketiga

Di Langkah ketiga ini kita akan mulai membuat algoritma (program) agar OBSTABOT bisa bergerak menelusuri labirin. Pastikan kedua langkah sebelumnya sudah dilaksanakan dengan benar ya ^^.

Gambar 1. Obstacle Avoidance Robot alias OBSTABOT


Algoritma OBSTABOT terbagi menjadi dua algoritma yaitu SUSUR KANAN dan SUSUR KIRI. Di Artikel ini akan dijelaskan algoritma SUSUR KANAN. Algoritmanya adalah sebagai berikut:
  1. Dari tiga sensor yang terpasang kita hanya akan menggunakan dua sensor aja yaitu sensor DEPAN dan KANAN.
  2. Sensor KANAN bertugas untuk mendeteksi jarak OBSTABOT terhadap dinding bagian kanan.
  3. Kita atur supaya jarak rata-rata OBSTABOT terhadap dinding adalah 7 cm (Selanjutnya disebut sebagai Set Point).
  4. Perbedaan posisi robot yang terbaca oleh sensor KANAN dan Set Point kita nyatakan sebagai error.
  5. Untuk mereduksi nilai error tersebut agar selalu bernilai NOL kita gunakan kontrol Proporsional.
  6. Secara sederhana point 4 dan 5 menjelaskan bahwa ketika posisi OBSTABOT terlalu dekat dengan dinding (kurang dari 7 cm) maka OBSTABOT akan bergerak menjauhi dinding. Begitupun sebaliknya, ketika OBSTABOT berada terlalu jauh dari dinding (lebih dari 7 cm) maka OBSTABOT akan bergerak mendekati dinding.
  7. Sensor DEPAN berfungsi untuk mendeteksi dinding yang berada didepan. Ketika cukup dekat dengan tembok yang berada di depan maka secara otomatis OBSTABOT akan berbelok ke arah kiri.
Nah dari algoritma di atas dikonversikan ke dalam kode arduino akan menjadi seperti di bawah ini:

#include <NewPing.h>

#define TRIGGER_PIN1    9     // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN1       8     // Arduino pin tied to echo pin on the ultrasonic sensor.
#define TRIGGER_PIN2    11    // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN2       10    // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE    200   // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
int dir1  = 4;                // inisiai pin direct (arah putaran) untuk motor kiri
int pwm1  = 5;                // inisiai pin pwm (kecepatan putar) untuk motor kiri
int pwm2  = 6;                // inisiai pin direct (arah putaran) untuk motor kanan
int dir2  = 7;                // inisiai pin pwm (kecepatan putar) untuk motor kanan

int pwm;

int Upper =100;               // Pwm maksimal yang diizinkan
int Lower =45;                // Pwm minimal yang diizinkan

NewPing sonar1(TRIGGER_PIN1, ECHO_PIN1, MAX_DISTANCE);  // NewPing setup of pins and maximum distance.
NewPing sonar2(TRIGGER_PIN2, ECHO_PIN2, MAX_DISTANCE);  // NewPing setup of pins and maximum distance.

void setup() 
{
  Serial.begin(115200);       // Open serial monitor at 115200 baud to see ping results.
  pinMode(dir1, OUTPUT);      // Set pin untuk motor sebagai OUTPUT
  pinMode(pwm1, OUTPUT);
  pinMode(dir2, OUTPUT);
  pinMode(pwm2, OUTPUT);
}

void loop() 
{
  //Kodingan di bawah ini untuk mengambil nilai yang terbaca oleh sensor ultrasonic (dalam satuan CM)
  delay(50);
  unsigned int us = sonar1.ping();     // Send ping, get ping time in microseconds (uS).
  int kanan = us / US_ROUNDTRIP_CM;
  unsigned int us2 = sonar2.ping();    // Send ping, get ping time in microseconds (uS).
  int depan = us2 / US_ROUNDTRIP_CM;

  if (kanan>20) {kanan=20;}            // Pembacaan maksimal sensor kanan adalah 20, di atas 20 tetap terbaca 20.
  else {kanan=kanan;}
  //---akhir kodingan membaca nilai sensor

  // Kodingan di bawah ini adalah untuk melakukan aksi ketika kondisi Robot menabrak dinding di depan
  if (depan<=3)                        // ketika sensor depan mendeteksi dinding kurang dari 3 cm robot harus belok kiri
  {
  digitalWrite(dir1, HIGH);            // kode untuk membuat robot berbelok ke kiri
  digitalWrite(dir2, LOW);
  analogWrite(pwm1, 255 - 100);
  analogWrite(pwm2, 100);
  }
  //---akhir kodingan kondisi menabrak dinding depan


  // Kodingan di bawah ini adalah kondisi kebalikan dari kondisi di atas yaitu ketika sensor depan tidak menabrak dinding
  // Kodingan menggunakkan pendekatan metode PID (Kontrol Proporsional).
  else
  {
  int sp = 7;                          // sp = set point, posisi robot harus senantiasa di jarak 7 cm
  int error = sp - kanan;              // mendefinisikan nilai error, selisih antara setpoint dan pembacaan sensor kanan
    
  digitalWrite(dir1, HIGH);            // OBSTABOT bergerak Maju
  digitalWrite(dir2, HIGH);
  
  int pid = 9*error;                   // Pembobotan nilai PID, Angka 9 adalah konstanta proporsional (Kp)
    
  pwm=sp*10-pid;                       // Pembobotan OUTPUT/pwm hasil perhitungan PID, saya masih belum yakin ini sesuai dengan teori PID
  if(pwm>Upper){pwm=Upper;}            // Angka 10 adalah konstanta yang membuat pwm berada dikisaran angka ratusan/motor bisa berputar
  if(pwm<Lower){pwm=Lower;}
  int ki=pwm;
  
  pwm=sp*10+pid;
  if(pwm>Upper){pwm=Upper;}
  if(pwm<Lower){pwm=Lower;}
  int ka=pwm;
      
  analogWrite(pwm1, 255 - ka);
  analogWrite(pwm2, 255 - ki);
  }
}


Komentar

Postingan populer dari blog ini

Cara Mudah Program Sensor Berat Load Cell HX711 dengan Arduino (Satuan Gram)

Kita akan mencoba menggunakan Sensor Berat LoadCell dengan HX711. Yang mana satuannya adalah Gram. Kebanyakan di luar sana Tutorialnya menggunakan Float dengan satuan Kilo Gram. Nah bagi yang mau berbeda boleh di coba nih. 1. Desain Pemasangan Load Cell HX711 Untuk pemasangan silahkan kamu bisa melihat referensi gambar dibawah ini: 2. Rangkaian Arduino Loadcell HX711 Untuk rangkaian silahkan gunakan gambar dibawah ini: Arduino HX711 5V 5V GND GND A0 DT A1 SCK 3. Add Library HX711 ke Arduino IDE Kita akan menggunakan library HX711_Master.zip, yang bisa kamu Download di bawah ini: Download Library HX711_Master.zip (DROPBOX) Jika sudah di Download silahkan di Add ke Arduino IDE. Bagi yang belum tau, bagaimana cara ADD Library ke Arduino. Silahkan gunakan tutorial dibawah ini: Bagaimana Cara Memasukan Library Ke Aplikasi Arduino IDE? 4. Kalibrasi Load Cell HX711 Langkah selanjutnya adalah harus kalibrasi. Tujuan kalibrasi disini untuk menentukan ukura...

Cara Membuat Program Kasir Menggunakan Python

Source code program kasir dengan python selamat datang kembali gan, kali ini saya akan berbagi source code program kasir dengan bahasa pemrograman python atau sebagian orang juga menyebutnya dengan nama pyton (anekdot) ok di bawah ini ada source code dimana program kasir tersebut menggunakan metode yang biasa di kenal if then else, tetapi di python dikenal dengan " elif " maka dari itu bari kita cobakan print("Source Code Kasir Dengan Python")   x=str(input("Nama Barang :  ")) y=int(input("Harga       :  ")) z=int(input("Jumlah Jual :  ")) v=0 w=0 if (z in range (0,5)):     v = 0     print("Tidak ada diskon") elif (z in range (5,11)):     v = 5/100     print("Discount 5%") elif (z in range ( 11,21)):     v = 10/100     print("Discount 10%") elif (z in range ( 21,31)):     v = 15/100     print("Discount 15%") else:     v = 20/100     print("Di...

Tutorial Sniffing dan Spoofing Menggunakan Kali Linux

Konsep dasar alat sniffing sesederhana penyadapan dan Kali Linux memiliki beberapa alat yang populer untuk tujuan ini.  Dalam bab ini, kita akan belajar tentang alat sniffing dan spoofing yang tersedia di Kali. Burpsuite Burpsuite dapat digunakan sebagai alat mengendus antara browser Anda dan webservers untuk menemukan parameter yang digunakan aplikasi web. Untuk membuka Burpsuite, buka Aplikasi → Analisis Aplikasi Web → burpsuite. Untuk membuat pengaturan sniffing, kami mengkonfigurasi burpsuite untuk berperilaku sebagai proxy.  Untuk melakukan ini, buka  Opsi  seperti yang ditunjukkan pada tangkapan layar berikut.  Centang kotak seperti yang ditunjukkan. Dalam hal ini, IP proxy akan menjadi 127.0.0.1 dengan port 8080. Kemudian konfigurasikan proxy browser yang merupakan IP mesin burpsuite dan porta. Untuk memulai intersepsi, buka Proxy → Intercept → klik “Intercept is on”. Lanjutkan menavigasi pada halaman web yang Anda ingin menemukan para...