Contoh Coding Sensor AI untuk Robotik dengan STM32

3 min read 23-08-2024
Contoh Coding Sensor AI untuk Robotik dengan STM32

Robotika adalah salah satu bidang yang paling menarik dalam teknologi saat ini. Dengan kemajuan dalam kecerdasan buatan dan sensor, robot dapat beroperasi secara mandiri dan melakukan tugas yang kompleks. Dalam artikel ini, kita akan membahas contoh coding untuk sensor AI dalam aplikasi robotik menggunakan STM32. STM32 adalah keluarga mikrokontroler berbasis ARM dari STMicroelectronics yang populer di kalangan pengembang robotika.

Apa itu STM32?

STM32 adalah mikrokontroler 32-bit yang dirancang untuk aplikasi yang membutuhkan pemrosesan tinggi dan fleksibilitas. Dengan AVR atau PIC yang lebih sederhana, STM32 menawarkan lebih banyak fitur, seperti:

  • Kinerja Tinggi: Dikenakan prosesor ARM Cortex-M dengan kecepatan tinggi.
  • Komunikasi yang Beragam: Mendukung berbagai protokol komunikasi seperti I2C, SPI, dan UART.
  • Fitur Hemat Energi: Mendukung berbagai mode penghematan energi.

Komponen yang Dibutuhkan

Sebelum kita mulai dengan coding, berikut adalah beberapa komponen yang perlu disiapkan:

  1. Mikrokontroler STM32: Anda bisa menggunakan STM32F103C8T6 (Blue Pill).
  2. Sensor AI: Misalnya sensor ultrasonik HC-SR04 atau sensor suhu DHT11.
  3. Modul WiFi (Opsional): Seperti ESP8266 untuk konektivitas internet.
  4. Jumper, breadboard, dan komponen elektronik lainnya.

Contoh Proyek: Robot Pendeteksi Obstacle

Salah satu aplikasi sederhana dari robotika adalah robot yang dapat mendeteksi rintangan di jalannya. Kita akan menggunakan sensor ultrasonik HC-SR04 untuk mendeteksi jarak ke objek di depannya.

Skema Koneksi

  1. Hubungkan pin Trigger sensor HC-SR04 ke pin digital STM32 (misalnya pin PB0).
  2. Hubungkan pin Echo sensor ke pin digital lainnya (misalnya pin PB1).
  3. Hubungkan VCC dan GND sensor ke sumber daya.

Coding dengan STM32

Berikut adalah contoh kode sederhana untuk mengoperasikan sensor ultrasonik dengan STM32 menggunakan Arduino IDE:

#include <Arduino.h>

#define TRIG_PIN PB0
#define ECHO_PIN PB1

void setup() {
    pinMode(TRIG_PIN, OUTPUT);
    pinMode(ECHO_PIN, INPUT);
    Serial.begin(9600);
}

void loop() {
    long duration, distance;

    // Mengatur TRIG_PIN agar HIGH selama 10 us
    digitalWrite(TRIG_PIN, LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN, LOW);

    // Membaca ECHO_PIN
    duration = pulseIn(ECHO_PIN, HIGH);

    // Menghitung jarak berdasarkan durasi
    distance = duration * 0.034 / 2;

    // Menampilkan jarak di Serial Monitor
    Serial.print("Jarak: ");
    Serial.print(distance);
    Serial.println(" cm");

    // Delay selama 500 ms sebelum membaca lagi
    delay(500);
}

Penjelasan Kode

  1. Inisialisasi: Di bagian setup(), kita mengatur mode pin untuk TRIG dan ECHO.
  2. Menghasilkan Pulses: Di dalam loop(), kita menghasilkan pulse selama 10 mikrodetik pada pin TRIG untuk mengirim sinyal ultrasound.
  3. Menghitung Jarak: Menggunakan fungsi pulseIn() untuk membaca durasi kembali dari sinyal ultrasound dan menghitung jarak berdasarkan rumus fisika.
  4. Menampilkan Hasil: Hasil jarak akan ditampilkan di Serial Monitor.

Mengintegrasikan Kecerdasan Buatan

Dalam proyek ini, kita bisa menambahkan elemen AI untuk meningkatkan pengambilan keputusan robot. Misalnya, kita bisa menggunakan algoritma sederhana agar robot memilih arah berdasarkan jarak ke objek. Mari kita modifikasi kode di atas untuk menambahkan fungsionalitas ini.

#define LEFT_PIN PB2
#define RIGHT_PIN PB3

void setup() {
    pinMode(TRIG_PIN, OUTPUT);
    pinMode(ECHO_PIN, INPUT);
    pinMode(LEFT_PIN, OUTPUT);
    pinMode(RIGHT_PIN, OUTPUT);
    Serial.begin(9600);
}

void loop() {
    long duration, distance;

    digitalWrite(TRIG_PIN, LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN, LOW);

    duration = pulseIn(ECHO_PIN, HIGH);
    distance = duration * 0.034 / 2;

    Serial.print("Jarak: ");
    Serial.print(distance);
    Serial.println(" cm");

    // Logika dan kendali robot
    if (distance < 20) {
        // Jika ada rintangan dekat, belok ke kanan
        digitalWrite(LEFT_PIN, LOW);
        digitalWrite(RIGHT_PIN, HIGH);
    } else {
        // Jika tidak ada rintangan, berjalan lurus
        digitalWrite(LEFT_PIN, HIGH);
        digitalWrite(RIGHT_PIN, LOW);
    }

    delay(500);
}

Penjelasan Kode Modifikasi

  1. Pin Kontrol Motor: Kita menambahkan pin output untuk mengatur motor atau mekanisme bergerak (LEFT_PIN dan RIGHT_PIN).
  2. Mengatur Pergerakan: Berdasarkan jarak yang terbaca, robot akan belok ke kanan jika objek terdeteksi dalam jarak 20 cm; sebaliknya, robot akan bergerak lurus.

Kesimpulan

Dalam artikel ini, kita telah membahas bagaimana menggunakan STM32 dengan sensor untuk membangun robot pendeteksi rintangan sederhana. Dengan menambahkan elemen kecerdasan buatan, kita dapat meningkatkan kemampuan robot tersebut untuk mengambil keputusan berdasarkan informasi dari sensor.

Penggunaan STM32 dalam proyek robotika tidak hanya meningkatkan kemampuan pemrosesan tetapi juga memberikan fleksibilitas untuk mengintegrasikan berbagai sensor dan modul tambahan. Dengan pengalaman ini, Anda dapat melanjutkan untuk membuat proyek robotika yang lebih kompleks dan menarik dengan menggunakan STM32 dan sensor AI lainnya.