Contoh Coding AI untuk Kendali Robotik dengan Deteksi Halangan pada STM32

3 min read 23-08-2024
Contoh Coding AI untuk Kendali Robotik dengan Deteksi Halangan pada STM32

Pemanfaatan teknologi kecerdasan buatan (AI) dalam bidang robotika semakin meningkat. Salah satu aplikasi yang menarik untuk dieksplorasi adalah pengendalian robot dengan deteksi halangan menggunakan mikrokontroler STM32. Dalam artikel ini, kita akan membahas cara mendesain dan mengimplementasikan contoh coding AI untuk kendali robotik dengan deteksi halangan.

Pendahuluan

Teknologi robotik kini banyak digunakan dalam berbagai industri, mulai dari produksi hingga penelitian. Penerapan AI memungkinkan robot tidak hanya bergerak mengikuti instruksi, tetapi juga dapat beradaptasi dengan lingkungan secara real-time. Pada proyek ini, kita akan mengembangkan sebuah robot yang dapat mendeteksi halangan dengan menggunakan sensor dan memproses data tersebut untuk mengubah arah.

Alat dan Bahan yang Diperlukan

Sebelum memulai, ada beberapa alat dan bahan yang harus disiapkan:

  1. Mikrokontroler STM32 - Sebagai otak dari robot.
  2. Sensor Ultrasonik - Untuk mendeteksi halangan.
  3. Motor Driver - Untuk mengendalikan motor.
  4. Roda dan Chassis Robot - Untuk merakit robot.
  5. Baterai - Sebagai sumber daya.
  6. Kabel Jumper - Untuk menghubungkan semua komponen.
  7. Software IDE STM32CubeIDE - Untuk pemrograman.

Desain Sistem

Skema Blok

Sebelum kita mulai coding, penting untuk merancang skema blok sistem:

  1. Mikrokontroler STM32 - Menerima data dari sensor dan mengontrol motor.
  2. Sensor Ultrasonik - Mengukur jarak ke objek di depan robot.
  3. Motor Driver - Menggerakkan motor berdasarkan instruksi dari mikrokontroler.

Diagram Koneksi

Berikut adalah diagram koneksi sederhana:

      STM32          Sensor Ultrasonik
       +----+       +------------------+
       | GPIO|------| Trig            |
       |     |------| Echo            |
       +----+       +------------------+
           |
           |
           |
        +--+--+
        | Motor|
        | Driver|
        +-------+
           |
           |
    +------+------+
    |     Motor   |
    +--------------+

Pengkodean

Setelah kita memiliki desain yang jelas, kita akan mulai menulis kode. Berikut adalah contoh kode sederhana untuk mengendalikan robot dengan deteksi halangan menggunakan STM32 dan sensor ultrasonik.

Langkah 1: Inisialisasi

Pertama, kita perlu menginisialisasi GPIO untuk motor dan sensor.

#include "stm32f4xx_hal.h"

// Definisi Pin
#define TRIG_PIN GPIO_PIN_0 // Sesuaikan dengan pin yang digunakan
#define ECHO_PIN GPIO_PIN_1 // Sesuaikan dengan pin yang digunakan
#define MOTOR_LEFT PWM_LEFT // Konfigurasi PWM untuk motor kiri
#define MOTOR_RIGHT PWM_RIGHT // Konfigurasi PWM untuk motor kanan

// Variabel
float distance;

void SystemClock_Config(void);
void MX_GPIO_Init(void);
void MX_TIM_Init(void);

Langkah 2: Fungsi Deteksi Jarak

Kita perlu menulis fungsi untuk mengukur jarak menggunakan sensor ultrasonik.

float measure_distance(void) {
    HAL_GPIO_WritePin(GPIOA, TRIG_PIN, GPIO_PIN_SET);
    HAL_Delay(10);
    HAL_GPIO_WritePin(GPIOA, TRIG_PIN, GPIO_PIN_RESET);

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

    // Tunggu hingga ECHO_PIN low
    while(HAL_GPIO_ReadPin(GPIOA, ECHO_PIN) == GPIO_PIN_SET);
    uint32_t travel_time = HAL_GetTick() - start_time;

    // Hitung jarak
    return (travel_time * 0.034) / 2;
}

Langkah 3: Kontrol Motor

Setelah mengukur jarak, kita perlu menulis logika untuk mengontrol motor berdasarkan jarak yang terdeteksi.

void control_motor(void) {
    distance = measure_distance();

    if (distance < 20.0) { // Jika jarak kurang dari 20 cm
        // Mundur atau putar
        HAL_GPIO_WritePin(GPIOA, MOTOR_LEFT, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(GPIOA, MOTOR_RIGHT, GPIO_PIN_RESET);
        HAL_Delay(500);  // Mundur selama 500ms
        // Belok ke kanan
        HAL_GPIO_WritePin(GPIOA, MOTOR_LEFT, GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIOA, MOTOR_RIGHT, GPIO_PIN_RESET);
    } else {
        // Jalan maju
        HAL_GPIO_WritePin(GPIOA, MOTOR_LEFT, GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIOA, MOTOR_RIGHT, GPIO_PIN_SET);
    }
}

Langkah 4: Fungsi Utama

Akhirnya, kita menggabungkan semua fungsi ke dalam main().

int main(void) {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_TIM_Init();

    while (1) {
        control_motor();
    }
}

Pengujian dan Debugging

Setelah Anda menyelesaikan kode, langkah selanjutnya adalah mengunggah program ke STM32 dan melakukan uji coba. Pastikan untuk memeriksa semua koneksi dan kalibrasi sensor jika diperlukan. Lakukan pengujian dengan menghalangi sensor untuk melihat apakah robot dapat mendeteksi halangan dan merespons dengan benar.

Kesimpulan

Proyek robotik ini menunjukkan bagaimana mengimplementasikan AI untuk kendali robot dan deteksi halangan menggunakan STM32. Dengan penggunaan sensor ultrasonik dan logika kontrol sederhana, robot dapat beradaptasi dengan lingkungan sekitar secara real-time. Pengembang dapat mengembangkan proyek ini lebih lanjut dengan menambahkan fitur lain, seperti pengenalan objek atau pengendalian jarak jauh menggunakan modul komunikasi.

Dengan semakin berkembangnya teknologi robotika dan AI, kemampuan untuk menciptakan solusi inovatif akan terus meningkat. Selamat mencoba dalam proyek robotik Anda!