Robotik adalah bidang yang terus berkembang dan menjadi semakin relevan di berbagai sektor industri, termasuk otomasi, kesehatan, dan pendidikan. Salah satu aspek penting dari robotika adalah kemampuan robot untuk berinteraksi dengan lingkungan sekitar, termasuk menghindari halangan. Artikel ini akan membahas contoh program AI yang dapat digunakan untuk menghindari halangan pada robotik dengan menggunakan mikrokontroler STM32.
Apa itu STM32?
STM32 adalah keluarga mikrokontroler berbasis ARM Cortex-M yang diproduksi oleh STMicroelectronics. Mikrokontroler ini terkenal karena efisiensinya dalam hal konsumsi daya, kemampuan pemrosesan yang tinggi, dan fleksibilitas dalam berbagai aplikasi. STM32 sering digunakan dalam proyek robotik karena kemampuannya untuk mengendalikan motor, membaca sensor, dan menjalankan algoritma pemrosesan sinyal.
Komponen yang Diperlukan
Sebelum kita melanjutkan ke contoh program, berikut adalah komponen yang diperlukan untuk membuat robot yang dapat menghindari halangan:
- Mikrokontroler STM32: Sebagai otak dari robot.
- Sensor Ultrasonik (misalnya HC-SR04): Untuk mendeteksi jarak ke halangan.
- Motor Driver (misalnya L298N): Untuk mengendalikan motor penggerak.
- Motor DC atau Servo Motor: Sebagai penggerak robot.
- Robot Chassis: Untuk tempat semua komponen.
- Baterai: Sebagai sumber tenaga.
Schematic Diagram
Sebelum membuat program, pastikan Anda telah menyusun semua komponen dengan benar. Schematic diagram berikut adalah panduan dasar:
- Hubungkan sensor ultrasonik ke pin digital di STM32 untuk membaca jarak.
- Hubungkan motor driver ke motor dan STM32 untuk mengendalikan arah dan kecepatan motor.
- Pastikan semua ground terhubung agar sistem dapat berfungsi dengan baik.
Algoritma Dasar untuk Menghindari Halangan
Sebelum memprogram, kita perlu menentukan algoritma dasar untuk penghindaran halangan. Berikut adalah langkah-langkahnya:
- Membaca jarak dari sensor ultrasonik.
- Jika jarak lebih besar dari ambang batas, robot melanjutkan pergerakan.
- Jika jarak kurang dari ambang batas, robot berhenti dan berputar untuk mencari jalur baru.
Contoh Program
Berikut adalah contoh kode menggunakan bahasa pemrograman C untuk mengimplementasikan algoritma di atas menggunakan STM32:
#include "stm32f4xx.h"
#define TRIG_PIN GPIO_PIN_0
#define ECHO_PIN GPIO_PIN_1
void setup() {
// Inisialisasi pin GPIO untuk sensor dan motor
HAL_GPIO_WritePin(GPIOA, TRIG_PIN, GPIO_PIN_RESET);
HAL_Delay(100);
// Konfigurasi pin motor
// ... (Inisialisasi pin motor driver di sini)
}
float readDistance() {
float distance;
// Menghasilkan pulsa high pada TRIG_PIN
HAL_GPIO_WritePin(GPIOA, TRIG_PIN, GPIO_PIN_SET);
HAL_Delay(0.01); // 10 microsecond
HAL_GPIO_WritePin(GPIOA, TRIG_PIN, GPIO_PIN_RESET);
// Menghitung waktu Echo_pin HIGH
uint32_t timeout = 0;
while(HAL_GPIO_ReadPin(GPIOA, ECHO_PIN) == GPIO_PIN_RESET && timeout < 10000) {
timeout++;
}
uint32_t start = HAL_GetTick();
timeout = 0;
while(HAL_GPIO_ReadPin(GPIOA, ECHO_PIN) == GPIO_PIN_SET && timeout < 10000) {
timeout++;
}
uint32_t end = HAL_GetTick();
float timeElapsed = end - start;
// Menghitung jarak (Suara bergerak dengan kecepatan 34300 cm/s)
distance = (timeElapsed / 2) * 0.0343; // Dalam cm
return distance;
}
void moveForward() {
// Kode untuk menggerakkan robot maju
// ... (Implementasi pergerakan motor di sini)
}
void turnLeft() {
// Kode untuk memutar robot ke kiri
// ... (Implementasi pergerakan motor di sini)
}
void turnRight() {
// Kode untuk memutar robot ke kanan
// ... (Implementasi pergerakan motor di sini)
}
int main() {
HAL_Init();
setup();
while (1) {
float distance = readDistance();
if (distance > 10) { // Ambang batas 10 cm
moveForward();
} else {
turnLeft(); // atau turnRight() tergantung logika yang diinginkan
}
HAL_Delay(100); // Delay untuk menghindari pembacaan yang terlalu cepat
}
}
Penjelasan Kode
- Inisialisasi: Pin GPIO diinisialisasi untuk TRIG dan ECHO dari sensor ultrasonik serta untuk motor.
- Fungsi
readDistance
: Mengukur jarak dengan mengirimkan pulsa dari sensor ultrasonik dan mengukur waktu yang dibutuhkan untuk menerima echo. - Fungsi
moveForward
,turnLeft
, danturnRight
: Mengendalikan penggerak robot, fungsi ini perlu diimplementasikan sesuai dengan skema motor yang digunakan. - Loop Utama: Dalam loop utama, robot terus menerus membaca jarak. Jika halangan terdeteksi dalam jarak kurang dari 10 cm, robot akan mengubah arahnya.
Kesimpulan
Dengan penggunaan STM32 dan algoritma sederhana, kita dapat membangun robot yang mampu menghindari halangan. Proyek ini adalah langkah awal yang baik untuk memahami interaksi antara perangkat keras dan perangkat lunak dalam robotika. Dengan beberapa penyesuaian, Anda dapat mengembangkan lebih lanjut program ini untuk menciptakan robot yang lebih canggih dengan fitur tambahan seperti navigasi otomatis, pengenalan objek, dan banyak lagi. Selamat mencoba!