- Cara membuat robot penghindar rintangan menggunakan Sensor Ultrasonik
- Komponen Diperlukan
- Diagram Sirkuit
- Robot Menghindari Rintangan menggunakan Arduino - Code
Robot Menghindari Rintangan adalah perangkat cerdas yang secara otomatis dapat merasakan hambatan di depannya dan menghindarinya dengan memutar dirinya sendiri ke arah lain. Desain ini memungkinkan robot untuk menavigasi di lingkungan yang tidak diketahui dengan menghindari tabrakan, yang merupakan persyaratan utama untuk robot seluler otonom. Penerapan robot Menghindari Rintangan tidak terbatas dan digunakan di sebagian besar organisasi militer sekarang yang membantu melaksanakan banyak pekerjaan berisiko yang tidak dapat dilakukan oleh tentara mana pun.
Kami sebelumnya membuat Robot Menghindari Rintangan menggunakan Raspberry Pi dan menggunakan Mikrokontroler PIC. Kali ini kita akan membangun robot penghindar rintangan menggunakan sensor ultrasonik dan Arduino. Di sini sensor ultrasonik digunakan untuk merasakan rintangan di jalur dengan menghitung jarak antara robot dan rintangan. Jika robot menemukan halangan maka robot akan mengubah arah dan terus bergerak.
Cara membuat robot penghindar rintangan menggunakan Sensor Ultrasonik
Sebelum membangun robot, penting untuk memahami cara kerja sensor ultrasonik karena sensor ini akan berperan penting dalam mendeteksi hambatan. Prinsip dasar di balik kerja sensor ultrasonik adalah mencatat waktu yang dibutuhkan sensor untuk mengirimkan berkas ultrasonik dan menerima berkas ultrasonik setelah mengenai permukaan. Selanjutnya jarak dihitung menggunakan rumus. Dalam proyek ini, Sensor Ultrasonik HC-SR04 yang tersedia secara luas digunakan. Untuk menggunakan sensor ini, pendekatan serupa akan diikuti yang dijelaskan di atas.
Jadi, pin Trigonometri HC-SR04 dibuat tinggi setidaknya untuk 10 kami. Sinar sonik ditransmisikan dengan 8 pulsa masing-masing 40KHz.
Sinyal kemudian menyentuh permukaan dan kembali lagi dan ditangkap oleh pin Echo penerima dari HC-SR04. Pin Echo sudah tinggi pada saat mengirim tinggi.
Waktu yang dibutuhkan oleh balok untuk kembali disimpan dalam variabel dan diubah menjadi jarak menggunakan perhitungan yang sesuai seperti di bawah ini
Jarak = (Waktu x Kecepatan Suara di Udara (343 m / s)) / 2
Kami menggunakan sensor ultrasonik di banyak proyek, untuk mempelajari lebih lanjut tentang sensor ultrasonik, memeriksa proyek lain yang terkait dengan sensor ultrasonik.
Komponen robot penghindar rintangan ini dapat ditemukan dengan mudah. Untuk membuat sasis, sasis mainan apa pun dapat digunakan atau dibuat khusus.
Komponen Diperlukan
- Arduino NANO atau Uno (versi apapun)
- Sensor Ultrasonik HC-SR04
- Modul Driver Motor LM298N
- Motor DC 5V
- Baterai
- Roda
- Casis
- Kabel Jumper
Diagram Sirkuit
Diagram rangkaian lengkap untuk proyek ini diberikan di bawah ini, seperti yang Anda lihat menggunakan Arduino nano. Tapi kita juga bisa membangun robot penghindar rintangan menggunakan Arduino UNO dengan sirkuit yang sama (ikuti pinout yang sama) dan kode.
Setelah sirkuit siap kita harus membangun mobil penghindaran rintangan kita dengan memasang sirkuit di atas sasis robotik seperti yang ditunjukkan di bawah ini.
Robot Menghindari Rintangan menggunakan Arduino - Code
Program lengkap dengan video demonstrasi diberikan di akhir proyek ini. Program ini akan mencakup pengaturan modul HC-SR04 dan mengeluarkan sinyal ke Pin Motor untuk menggerakkan arah motor yang sesuai. Tidak ada perpustakaan yang akan digunakan dalam proyek ini.
Pertama, tentukan pin trig dan echo HC-SR04 dalam program. Dalam proyek ini pin trigonometri dihubungkan ke GPIO9 dan pin echo dihubungkan ke GPIO10 dari Arduino NANO.
int trigPin = 9; // pin trigonometri HC-SR04 int echoPin = 10; // Pin gema HC-SR04
Tentukan pin untuk input Modul Driver Motor LM298N. LM298N memiliki 4 pin input data yang digunakan untuk mengontrol arah motor yang terhubung dengannya.
int revleft4 = 4; // REVerse gerakan motor kiri int fwdleft5 = 5; // Gerakan ForWarD motor Kiri int revright6 = 6; // Gerakan kebalikan motor Kanan int fwdright7 = 7; // Gerakan ForWarD dari motor Kanan
Dalam fungsi setup () , tentukan arah data dari pin GPIO yang digunakan. Keempat pin Motor dan pin Trigonometri ditetapkan sebagai OUTPUT dan Pin Gema ditetapkan sebagai Input.
pinMode (revleft4, OUTPUT); // setel pin Motor sebagai pinMode keluaran (fwdleft5, OUTPUT); pinMode (revright6, OUTPUT); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // setel pin trigonometri sebagai output pinMode (echoPin, INPUT); // setel pin echo sebagai masukan untuk menangkap gelombang pantul
Dalam fungsi loop () , dapatkan jarak dari HC-SR04 dan berdasarkan jarak gerakkan arah motor. Jarak tersebut akan menunjukkan jarak benda yang datang di depan robot. Jarak diambil dengan meledakkan sinar ultrasonik hingga 10 us dan menerimanya setelah 10us. Untuk mempelajari lebih lanjut tentang mengukur jarak menggunakan sensor Ultrasonic dan Arduino, ikuti link berikut.
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); // kirim gelombang untuk 10 us delayMicroseconds (10); durasi = pulseIn (echoPin, HIGH); // menerima gelombang pantulan jarak = durasi / 58.2; // ubah menjadi penundaan jarak (10);
Jika jarak lebih besar dari jarak yang ditentukan berarti tidak ada halangan di jalurnya dan akan bergerak maju.
if (jarak> 19) { digitalWrite (fwdright7, HIGH); // maju digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Jika jarak kurang dari jarak yang ditentukan untuk menghindari rintangan berarti ada beberapa rintangan di depan. Jadi pada situasi ini robot akan berhenti sejenak dan bergerak mundur setelah itu kembali berhenti sebentar dan kemudian berbelok ke arah lain.
if (jarak <18) { digitalWrite (fwdright7, LOW); // Hentikan digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); penundaan (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); penundaan (500); digitalWrite (fwdright7, LOW); // Hentikan digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); penundaan (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); penundaan (500); }
Jadi begitulah cara robot dapat menghindari rintangan di jalurnya tanpa terjebak kemana-mana. Temukan kode dan video lengkapnya di bawah ini.