• Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
Minggu, Juni 29, 2025
mikroavr.com
No Result
View All Result
  • Login
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
No Result
View All Result
mikroavr
No Result
View All Result
Home Project

Membuat Robot Sederhana dengan Arduino dan Ultrasonik, Lengkap dengan Pengujian dan Coding nya

Jimmi Sitepu by Jimmi Sitepu
Oktober 11, 2018
0 0
2
Membuat Robot Sederhana dengan Arduino dan Ultrasonik, Lengkap dengan Pengujian dan Coding nya
62
SHARES
13.1k
VIEWS
Share on FacebookShare on Twitter

Robot Sederhana

Latar Belakang

Membuat robot sederhana dengan sensor ultrasonik, dua buah motor DC dengan driver L293 dan 3 buah sensor Ultrasonik ini adalah permintaan dari teman visitor mikroavr.com, alih alih ternyata orang medan juga, sama dengan saya.

Semua sudah ada, termasuk robot nya, saya hanya di minta buat program nya saja. Cara kerja nya cukup mudah, memiliki rule atau aturan yang sudah di tetapkan. Intinya adalah menghindari halangan.

READ ALSO

Sensor Tekanan Air Dan Udara Dengan Arduino

Data Logger Arduino, Simpan Data ke MikroSD atau SD Card

membuat robot sederhana

Sensor jarak berfungsi untuk deteksi apakah halangan ada jarak sekian di sebelah kiri? kanan? atau depan.? jarak ini lah yang akan menentukan Robot Sederhana ini berputar atau berbelok ke arah mana.

Rule Robot

Setiap robot yang di rancang, apalagi robot sederhana,memiliki rule, bagaimana robot akan bekerja. Untuk itu kami membuat rule nya dulu. Rule ini lah yang akan di jadikan sebagai logaritma Pemrograman.

Untuk rule nya terbagi menjadi dua, pertama dari sisi jarak, kemudian dari kondisi hasil cacah sensor ultrasonik.

Rule pertama adalah jika jarak lebih lebih besar atau sama dengan 0 dan lebih kecil dari 15cm maka di anggap logika 1, sebalik nya, jika jarak lebih besar dari 15cm maka di anggap logika 0. Kondisi ini akan kita cacah, sehingga kondisi 3 sensor hanya menjadi dua kondisi, logika 0 atau logika satu.

Rule ke dua Ketika setelah di cacah, maka jadi lah tabel di bawah ini.

KIRITENGAHKANANAKSI
000MAJU
001MAJU
010PUTAR KANAN
011PUTAR KIRI
100MAJU
101MAJU
110PUTAR KANAN
111PUTAR KANAN

Setelah kita dapat logaritma di atas, sekarang adalah pengujian sensor

Pengujian Hardware

Sebelum kita menguji sensor nya, perhatikan program di bawah ini,

const byte IN1 = 2; //kontrol motor kiri ke port 2
const byte IN2 = 3; //kontrol motor kiri ke port 3
const byte IN3 = 4; //kontorl motor kanan ke port 4
const byte IN4 = 5; //kontorl motor kanan ke port 5

const byte Echo_kiri = 12;
const byte Trig_kiri = 13;

const byte Echo_kanan = A0;
const byte Trig_kanan = A1;

const byte Echo_depan = 8;
const byte Trig_depan = 9;

Program di atas adalah konfigurasi antara motor DC dengan driver L293. Begitu juga dengan 3 sensor ultrasonik. Perhatikan pin nya terhubung ke mana. Untuk rangkain l293 bisa di lihat pada gambar rangkaian di bawah ini.

 

rangkaian L293 Arduino

Perhatikan pin 2 dan pin 7 IC L293, begitu juga pin 15 dan 10, itu adalah pin control untuk kendali motor DC, yang terhubung ke Arduino nanti nya. Untuk configurasi nya bisa dilihat di cuplikan program di atas.

Uji Motor DC

Agar nanti program final Robot Sederhana kita berjalan dengan baik, Kita uji dulu Motor DC nya, apakah sudah berputar seperti yang kita program? Program uji nya bisa dilihat pada program di bawah ini.

const byte IN1 = 2; //kontrol motor kiri ke port 2
const byte IN2 = 3; //kontrol motor kiri ke port 3

const byte IN3 = 4; //kontorl motor kanan ke port 4
const byte IN4 = 5; //kontorl motor kanan ke port 5

void setup()
{
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop()
{
  maju();
  delay(3000);
  mundur();
  delay(3000);
  putarkiri();
  delay(3000);
  putarkanan();
  delay(3000);
  berhenti();
  delay(3000);

}
void maju()
{
  // menggerakkan motor kiri maju
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);

  // menggerakkan motor kanan maju
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);

}
void mundur()
{
  // menggerakkan motor kiri mundur
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  // menggerakkan motor kanan mundur
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

void putarkiri() // motor kanan maju, kiri mundur
{
  // menggerakkan motor kiri mundur
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  // menggerakkan motor kanan maju
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);

}

void putarkanan() // motor KIRI maju, kanan mundur
{
  // menggerakkan motor kiri maju
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);

  // menggerakkan motor kanan mundur
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}
void berhenti()
{
  // now turn off motors
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

Coba di upload ke arduino uno nya, lihat putaran motor DC, apakah sesuai dengan yang di program? Maju, Mundur, Kiri, Kanan, dan berhenti? jika sudah siap. Silahkan simpan program nya kemudian, kita lanjutkan program uji sensor ultrasonik nya.

Program uji motor DC sudah kami lakukan dan berhasil

Uji Sensor Ultrasonik

Tahapan selanjut nya adalah uji sensor jarak. Disini kita menggunakan 3 jenis sensor jarak ultrasonik. ketiga sensor ini harus berhasil deteksi jarak. Jika tidak maka program final akan menjadi fail, error, program akan tidak bekerja dengan normal. Pembahasan sensor jarak ini bisa di pelajari langsung di link di bawah ini. Cukup tekan tombol merah di bawah

Sensor Jarak

Program pengujian nya sebagai berikut,

 

const byte Echo_kiri = 12;
const byte Trig_kiri = 13;

const byte Echo_kanan = A0;
const byte Trig_kanan = A1;

const byte Echo_depan = 8;
const byte Trig_depan = 9;

long duration;
int distance;

int dis_kiri;
int dis_kanan;
int dis_depan;
bool dt_kiri, dt_kanan, dt_depan;
byte bit_control;

String data_sensor;

void setup() {
   pinMode(Echo_kiri, INPUT);
   pinMode(Echo_kanan, INPUT);
   pinMode(Echo_depan, INPUT);
   
   pinMode(Trig_kiri, OUTPUT);
   pinMode(Trig_kanan, OUTPUT);
   pinMode(Trig_depan, OUTPUT);
   
   Serial.begin(9600);
   Serial.println(F("Mulai Baca sensor"));
   delay(2000);
}

void loop() {
   print_data();
   delay(1000);

}
void baca_sensor(int trigPin, int echoPin){
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.034/2; 
}
void get_data(){
  baca_sensor(Trig_kiri,Echo_kiri);
  dis_kiri = distance;
  baca_sensor(Trig_kanan,Echo_kanan);
  dis_kanan = distance;
  baca_sensor(Trig_depan,Echo_depan);
  dis_depan = distance;
}
void print_data(){
  get_data();
  data_sensor = String("kiri: ")+ dis_kiri + ("depan: ") + dis_depan + ("kanan: ") + dis_kanan;
  Serial.println(data_sensor);
}

Setelah program di atas teman-teman ketik di Arduino IDE nya, baru upload ke arduino uno nya. Buka serial monitor, kemudian check data-data jarak nya, apakah jalan? apakah tiap sensor nya membaca jarak. Jika tidak perhatikan pin pin configurasi sensor ultrasonik dengan arduino nya. Pengujian yang kami lakukan berhasil.

Program Final Robot Sederhana

Setelah semua langkah di atas terpenuhi, bagaimana kah program final nya? nah ingat acuan kita adalah rule yang sudah kita tetapkan di atas. Rule yang akan kita jadi kan program utama. Silahkan teman-teman scroll lagi ke atas untuk melihat logaritma nya.

Program final nya sebagai berikut.

const byte IN1 = 2; //kontrol motor kiri ke port 2
const byte IN2 = 3; //kontrol motor kiri ke port 3
const byte IN3 = 4; //kontorl motor kanan ke port 4
const byte IN4 = 5; //kontorl motor kanan ke port 5

const byte Echo_kiri = 12;
const byte Trig_kiri = 13;

const byte Echo_kanan = A0;
const byte Trig_kanan = A1;

const byte Echo_depan = 8;
const byte Trig_depan = 9;
const byte limit_jarak = 15;

long duration;
int distance;

int dis_kiri;
int dis_kanan;
int dis_depan;
bool dt_kiri, dt_kanan, dt_depan;
byte bit_control;

String data_sensor;

void setup() {
   pinMode(IN1, OUTPUT);
   pinMode(IN2, OUTPUT);
   pinMode(IN3, OUTPUT);
   pinMode(IN4, OUTPUT);
  
   pinMode(Echo_kiri, INPUT);
   pinMode(Echo_kanan, INPUT);
   pinMode(Echo_depan, INPUT);
   
   pinMode(Trig_kiri, OUTPUT);
   pinMode(Trig_kanan, OUTPUT);
   pinMode(Trig_depan, OUTPUT);
   
   Serial.begin(9600);
   Serial.println(F("Arduino Restart"));
   delay(3000);
}

void loop() {
   run_motor();
   delay(40);
}
void baca_sensor(int trigPin, int echoPin){
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.034/2; 
}
void get_data(){
  baca_sensor(Trig_kiri,Echo_kiri);
  dis_kiri = distance;
  baca_sensor(Trig_kanan,Echo_kanan);
  dis_kanan = distance;
  baca_sensor(Trig_depan,Echo_depan);
  dis_depan = distance;
}

void cacah(){
  if ( dis_kiri >= 0 && dis_kiri <= limit_jarak ){ dt_kiri = 1; } if ( dis_kiri > limit_jarak ){
    dt_kiri = 0;
  }
//------------------------------------------
if ( dis_kanan >= 0 && dis_kanan <= limit_jarak ){ dt_kanan = 1; } if ( dis_kanan > limit_jarak ){
    dt_kanan = 0;
  }
//------------------------------------------
if ( dis_depan >= 0 && dis_depan <= limit_jarak ){ dt_depan = 1; } if ( dis_depan > limit_jarak ){
    dt_depan = 0;
  }
}
void control(){
  if ( dt_kiri == 0 && dt_depan == 0 && dt_kanan == 0){
    bit_control = 1;
  }
  if ( dt_kiri == 0 && dt_depan == 0 && dt_kanan == 1){
    bit_control = 2;
  }
  if ( dt_kiri == 0 && dt_depan == 1 && dt_kanan == 0){
    bit_control = 3;
  }
  if ( dt_kiri == 0 && dt_depan == 1 && dt_kanan == 1){
    bit_control = 4;
  }
  if ( dt_kiri == 1 && dt_depan == 0 && dt_kanan == 0){
    bit_control = 5;
  }
  if ( dt_kiri == 1 && dt_depan == 0 && dt_kanan == 1){
    bit_control = 6;
  }
  if ( dt_kiri == 1 && dt_depan == 1 && dt_kanan == 0){
    bit_control = 7;
  }
  if ( dt_kiri == 1 && dt_depan == 1 && dt_kanan == 1){
    bit_control = 8;
  }
  data_sensor = String("Kr: ") + dis_kiri +(" /")+ ("T: ") + dis_depan +(" /") + ("Kn: ") + dis_kanan;
  Serial.println(data_sensor);
  data_sensor = String("DT_Kr: ") + dt_kiri +(" /")+ ("DT_T: ") + dt_depan +(" /") + ("DT_Kn: ") + dt_kanan;
  Serial.println(data_sensor);
  data_sensor = String("bit: ") + bit_control;
  Serial.println(data_sensor);
}

void run_motor(){
  get_data();
  cacah();
  control();
  switch(bit_control){
  case 1:
    maju();
  break;
  case 2:
    maju();
  break;
  case 3:
    putarkanan();
  break;
  case 4:
    putarkiri();
  break;
  case 5:
    maju();
  break;
  case 6:
    maju();
  break;
  case 7:
    putarkanan();
  break;
  case 8:
    putarkanan();
  break;
  }
}

void maju()
{
  // menggerakkan motor kiri maju
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);

  // menggerakkan motor kanan maju
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);

}
void mundur()
{
  // menggerakkan motor kiri mundur
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  // menggerakkan motor kanan mundur
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

void putarkiri() // motor kanan maju, kiri mundur
{
  // menggerakkan motor kiri mundur
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  // menggerakkan motor kanan maju
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);

}

void putarkanan() // motor KIRI maju, kanan mundur
{
  // menggerakkan motor kiri maju
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);

  // menggerakkan motor kanan mundur
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}
void berhenti()
{
  // now turn off motors
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

Nah program di atas sudah kami uji, dan berhasil. Memang ada satu kelemahan, yaitu control speed yang belum di gabung di dalam. Maksud nya adalah, ketika motor berputar, speed nya tidak melambat. Semua ini karena estimasi waktu yang harus segera di selesaikan.

Silahkan teman-teman kembangkan robot di atas. Seperti robot pengikut garis dan lain lain.

Thanks, semoga bermanfaat

Learning and sharing

Tags: robot
Share62Tweet
Previous Post

4 Contoh Kasus Kontrol Lampu Otomatis Menggunakan Arduino

Next Post

Pendeteksi Banjir Berbasis Arduino dan GSM

Jimmi Sitepu

Jimmi Sitepu

Hobbyist Embedded System, Robotic, IOT and write all about them. So we have nice quote "Learning and Sharing"

Related Posts

Arduino

Sensor Tekanan Air Dan Udara Dengan Arduino

Desember 20, 2020
Data Logger Arduino, Simpan Data ke MikroSD atau SD Card
Arduino

Data Logger Arduino, Simpan Data ke MikroSD atau SD Card

Juli 19, 2019
monitoring listrik
Arduino

Monitoring Arus Listrik dengan Internet

Oktober 4, 2020
Pendeteksi Banjir Berbasis Arduino dan GSM
Arduino

Pendeteksi Banjir Berbasis Arduino dan GSM

April 24, 2019
Cara Mudah Program HT1621 LCD Pertamini, dengan Library HT1621 Arduino
Arduino

Cara Mudah Program HT1621 LCD Pertamini, dengan Library HT1621 Arduino

Februari 26, 2022
stoptwatch Arduino seven segment
Arduino

Cara membuat Stopwatch Arduino 7 Segment dengan Fungsi Millis

Februari 25, 2022
Next Post
Pendeteksi Banjir Berbasis Arduino dan GSM

Pendeteksi Banjir Berbasis Arduino dan GSM

Protect Arduino Sketch dengan unique code DS18b20

Protect Arduino Sketch dengan unique code DS18b20

Please login to join discussion

Tulisan Terbaru

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Mendapatkan Waktu Akurat dengan NTP GPS

Mendapatkan Waktu Akurat dengan NTP GPS

Mei 8, 2022
Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

April 14, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
ethernet arduino

Arduino Ethernet Tutorial, Project dengan Arduino Uno dan Mega

Februari 24, 2022

Browse by Category

  • Arduino
  • Ebook
  • ESP32
  • IOT
  • jasa
  • Komponen
  • PCB
  • Produk
  • program Arduino
  • Project
  • Rangkaian
  • Sensor
  • Tips
  • Uncategorized

Recent News

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.

Welcome Back!

Sign In with Google
OR

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

No Result
View All Result
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.