Kode Program AI untuk Deteksi Halangan pada Robot Menggunakan STM32

3 min read 23-08-2024
Kode Program AI untuk Deteksi Halangan pada Robot Menggunakan STM32

Pendahuluan

Teknologi robotika semakin berkembang pesat, dan salah satu aspek penting dalam pengembangan robot adalah kemampuan untuk mendeteksi halangan di sekitarnya. Dalam proyek ini, kita akan membahas cara membuat kode program berbasis AI untuk mendeteksi halangan menggunakan mikrokontroler STM32. STM32 dikenal karena kemampuannya yang handal dalam pengolahan data dan interfacing dengan berbagai sensor.

Mengapa Menggunakan STM32?

STM32 adalah keluarga mikrokontroler berbasis ARM Cortex-M yang menawarkan performa tinggi dengan konsumsi daya yang rendah. Keunggulan ini sangat cocok untuk aplikasi robotika yang membutuhkan pengolahan data secara cepat. Beberapa alasan menggunakan STM32 antara lain:

  1. Kemampuan Pemrosesan: STM32 menawarkan berbagai model dengan kecepatan clock yang tinggi, memungkinkan pengolahan data yang cepat.
  2. Fleksibilitas: Dukungan untuk berbagai protokol komunikasi seperti UART, I2C, dan SPI membuat interfacing dengan sensor menjadi lebih mudah.
  3. Komunitas dan Sumber Daya: Tersedia banyak sumber daya dan komunitas dukungan yang dapat membantu dalam pengembangan.

Komponen yang Diperlukan

Berikut adalah komponen yang akan digunakan dalam proyek ini:

  • Mikrokontroler STM32 (contoh: STM32F103C8T6)
  • Sensor Ultrasonik (contoh: HC-SR04)
  • Motor Driver (contoh: L298N)
  • Sensor Jarak Inframerah (optional untuk deteksi lebih jauh)
  • Baterai sebagai sumber daya
  • Breadboard dan jumper wires

Struktur Kode Program

Kode program ini akan ditulis dalam bahasa C menggunakan STM32 HAL (Hardware Abstraction Layer). Kami akan menggunakan sensor ultrasonik untuk mendeteksi jarak ke halangan dan menentukan apakah robot harus bergerak maju, mundur, atau berbelok.

1. Inisialisasi

Langkah pertama adalah inisialisasi mikrokontroler dan perangkat keras yang kita gunakan. Berikut adalah skema inisialisasi:

#include "stm32f1xx_hal.h"

// Fungsi untuk menginisialisasi sensor dan motor driver
void Init_Peripherals(void) {
    HAL_Init();
    // Inisialisasi GPIO, Timer, UART, dan sensor di sini
}

// Fungsi untuk mengatur motor
void Move_Forward() {
    // Kode untuk menggerakkan motor ke depan
}

void Move_Backward() {
    // Kode untuk menggerakkan motor mundur
}

void Turn_Left() {
    // Kode untuk memutar robot ke kiri
}

void Turn_Right() {
    // Kode untuk memutar robot ke kanan
}

2. Pembacaan Sensor Ultrasonik

Sensor ultrasonik HC-SR04 mengukur jarak dengan memancarkan gelombang suara dan menghitung waktu yang diperlukan untuk gelombang tersebut kembali setelah memantul dari objek terdekat. Berikut adalah cara untuk membaca jarak dari sensor ultrasonik:

#define TRIG_PIN GPIO_PIN_0 // Pin untuk trigger
#define ECHO_PIN GPIO_PIN_1 // Pin untuk echo

float Read_Ultrasonic(void) {
    float distance = 0;

    // Aktifkan trigger
    HAL_GPIO_WritePin(GPIOA, TRIG_PIN, GPIO_PIN_SET);
    HAL_Delay(10);
    HAL_GPIO_WritePin(GPIOA, TRIG_PIN, GPIO_PIN_RESET);

    // Tunggu echo
    while(HAL_GPIO_ReadPin(GPIOA, ECHO_PIN) == GPIO_PIN_RESET);
    uint32_t start_time = HAL_GetTick();

    while(HAL_GPIO_ReadPin(GPIOA, ECHO_PIN) == GPIO_PIN_SET);
    uint32_t travel_time = HAL_GetTick() - start_time;

    // Hitung jarak (cm)
    distance = travel_time * 0.034 / 2; // Menggunakan kecepatan suara 344 m/s
    return distance;
}

3. Logika Deteksi Halangan

Setelah mendapatkan jarak dari sensor, kita dapat menggunakan logika sederhana untuk menentukan tindakan robot.

void Task_Deteksi_Halangan(void) {
    float distance = Read_Ultrasonic();

    if (distance < 10) { // Jika jarak kurang dari 10 cm
        Move_Backward();
        HAL_Delay(500);
        Turn_Right();
    } else {
        Move_Forward();
    }
}

4. Fungsi Utama

Selanjutnya, kita dapat mengintegrasikan semua fungsi di atas ke dalam fungsi main().

int main(void) {
    Init_Peripherals();
    
    while (1) {
        Task_Deteksi_Halangan();
        HAL_Delay(100); // Delay untuk stabilitas
    }
}

Menguji Robot

  1. Perakitan: Hubungkan semua komponen sesuai dengan skema rangkaian yang telah disiapkan.
  2. Upload Kode: Gunakan perangkat lunak IDE seperti STM32CubeIDE untuk mengedit dan meng-upload kode ke STM32.
  3. Pengujian: Setelah kode di-upload, uji robot dalam environment dengan beberapa rintangan untuk memverifikasi fungsionalitas deteksi halangan.

Kesimpulan

Implementasi AI sederhana untuk deteksi halangan pada robot menggunakan STM32 dan sensor ultrasonik menunjukkan bagaimana teknologi ini dapat digunakan untuk meningkatkan kemampuan navigasi robot. Kini, robot dapat melakukan manuver dasar seperti bergerak maju, mundur, dan berbelok ketika mendeteksi halangan. Proyek ini dapat dikembangkan lebih lanjut dengan menambahkan lebih banyak sensor dan kompleksitas dalam algoritma AI untuk mengoptimalkan kinerja robot.

Dengan pemahaman dasar ini, Anda dapat mulai menjelajahi aplikasi robotika yang lebih kompleks dan mengintegrasikan berbagai teknologi untuk meningkatkan fungsi robot. Selamat berinovasi!