Contoh Coding Pembelajaran Mesin untuk Penghindaran Hambatan pada STM32

3 min read 23-08-2024
Contoh Coding Pembelajaran Mesin untuk Penghindaran Hambatan pada STM32

Pembelajaran mesin (machine learning) telah menjadi salah satu topik yang paling menarik dalam bidang teknologi saat ini. Salah satu aplikasi yang menarik dari pembelajaran mesin adalah penghindaran hambatan pada robot. Dalam artikel ini, kita akan membahas bagaimana kita dapat menerapkan pembelajaran mesin untuk penghindaran hambatan menggunakan mikrokontroler STM32.

Pendahuluan

STM32 adalah keluarga mikrokontroler yang dirancang oleh STMicroelectronics. Mikrokontroler ini sangat populer dalam berbagai aplikasi industri dan penelitian karena kemampuannya yang tinggi serta fleksibilitasnya. Dengan menggunakan STM32, kita dapat membangun sistem robot yang dapat menghindari hambatan secara otomatis. Dalam konteks ini, pembelajaran mesin dapat diterapkan untuk meningkatkan kemampuan robot dalam mengidentifikasi dan menghindari rintangan.

Persiapan Alat dan Bahan

Sebelum kita mulai coding, ada beberapa alat dan bahan yang diperlukan:

  • Mikrokontroler STM32: Ini bisa berupa STM32F103 atau STM32F4.
  • Sensor Ultrasonik: Untuk mendeteksi keberadaan hambatan.
  • Motor Driver: Untuk mengontrol gerakan motor pada robot.
  • Roda dan Bodi Robot: Untuk membuat robot yang sebenarnya.
  • Bahasa Pemrograman C: Untuk coding program.
  • IDE STM32: Seperti STM32CubeIDE atau KEIL.

Konsep Dasar

Sistem penghindaran hambatan berbasis pembelajaran mesin biasanya memerlukan dataset untuk melatih model. Dataset ini bisa berisi data sensor yang mencakup jarak dari hambatan, sudut, dan status kecepatan robot. Model kemudian dapat dilatih untuk memberikan respons yang sesuai ketika hambatan terdeteksi.

Arsitektur Jaringan Saraf Tiruan

Dalam aplikasi ini, kita akan menggunakan jaringan saraf tiruan (JST) sebagai algoritma pembelajaran mesin. JST sangat efektif dalam memahami hubungan non-linear antar data.

Implementasi Coding

Berikut adalah contoh kode sederhana menggunakan bahasa C untuk melatih JST guna menghindari hambatan. Kode ini hanya sebagai ilustrasi dan perlu disesuaikan dengan aplikasi yang lebih kompleks.

#include "mbed.h"

// Definisikan pin untuk sensor ultrasonik dan motor driver
Ultrasonic ultrasonic(p5, p6); // Trigger, Echo
DigitalOut motorA(p7); // Motor A forward
DigitalOut motorB(p8); // Motor B backward

// Fungsi untuk menentukan tindakan berdasarkan jarak
void avoid_obstacle(float distance) {
    if (distance < 20.0) { // Jika jarak kurang dari 20 cm
        // Hentikan
        motorA = 0;
        motorB = 0;
    } else {
        // Lanjutkan maju
        motorA = 1;
        motorB = 1;
    }
}

int main() {
    while (true) {
        float distance = ultrasonic.read(); // Baca jarak dari sensor
        avoid_obstacle(distance); // Tentukan tindakan
        wait(0.1); // Tunggu sebentar
    }
}

Penjelasan Kode

  1. Inisialisasi Sensor: Sensor ultrasonik diinisialisasi menggunakan pin yang telah ditentukan.
  2. Fungsi avoid_obstacle: Fungsi ini akan memeriksa jarak yang terdeteksi oleh sensor. Jika jarak kurang dari 20 cm, motor akan dihentikan. Sebaliknya, jika jarak lebih dari 20 cm, robot akan terus bergerak maju.
  3. Loop Utama: Dalam loop utama, jarak dibaca terus menerus, dan tindakan yang sesuai akan dilakukan berdasarkan jarak tersebut.

Pelatihan Model

Untuk melatih model pembelajaran mesin, Anda perlu menyediakan dataset yang cukup besar. Dataset harus mencakup berbagai situasi di mana robot akan berada. Anda dapat menggunakan CSV untuk menyimpan data pelatihan yang mencakup atribut seperti:

  • Jarak dari hambatan
  • Arah gerakan
  • Status motor

Berikut adalah contoh format dataset yang bisa Anda gunakan:

jarak,surut,maju
15,0,1
25,0,1
10,1,0

Di mana kolom:

  • jarak adalah jarak dari sensor.
  • surut adalah status motor yang mundur.
  • maju adalah status motor yang maju.

Pelatihan Jaringan Saraf

Setelah memiliki dataset, Anda dapat menggunakan Python dengan pustaka seperti TensorFlow atau Keras untuk melatih model jaringan saraf. Model yang terlatih dapat di-export dan diterapkan ke STM32, meskipun memerlukan konversi dan penyesuaian dalam format file.

import numpy as np
import tensorflow as tf
from tensorflow import keras

# Load dataset
data = np.loadtxt('data.csv', delimiter=',')

# Split data
X = data[:, 0].reshape(-1, 1) # jarak
y = data[:, 1:] # target (maju, surut)

# Create the model
model = keras.Sequential([
    keras.layers.Dense(10, activation='relu', input_shape=(1,)),
    keras.layers.Dense(2, activation='sigmoid')
])

model.compile(optimizer='adam', loss='mean_squared_error')

# Train the model
model.fit(X, y, epochs=100)

# Save the model
model.save('robot_model.h5')

Penutup

Implementasi pembelajaran mesin untuk penghindaran hambatan di STM32 merupakan topik yang menarik dan menantang. Dengan memahami dasar-dasar pembelajaran mesin dan memanfaatkan kemampuan STM32, kita dapat mengembangkan sistem robot yang cerdas dan responsif.

Dalam proyek ini, kita telah melihat langkah-langkah mendasar dari pelatihan hingga implementasi dengan menyediakan contoh kode yang sederhana. Pastikan untuk mengadaptasi dan mengembangkan lebih lanjut sesuai kebutuhan proyek Anda. Semoga artikel ini bermanfaat bagi Anda yang ingin memulai penerapan pembelajaran mesin dalam proyek penghindaran hambatan menggunakan STM32.