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:
- Mikrokontroler STM32: Anda bisa menggunakan STM32F103C8T6 (Blue Pill).
- Sensor AI: Misalnya sensor ultrasonik HC-SR04 atau sensor suhu DHT11.
- Modul WiFi (Opsional): Seperti ESP8266 untuk konektivitas internet.
- 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
- Hubungkan pin
Trigger
sensor HC-SR04 ke pin digital STM32 (misalnya pin PB0). - Hubungkan pin
Echo
sensor ke pin digital lainnya (misalnya pin PB1). - 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
- Inisialisasi: Di bagian
setup()
, kita mengatur mode pin untuk TRIG dan ECHO. - Menghasilkan Pulses: Di dalam
loop()
, kita menghasilkan pulse selama 10 mikrodetik pada pin TRIG untuk mengirim sinyal ultrasound. - Menghitung Jarak: Menggunakan fungsi
pulseIn()
untuk membaca durasi kembali dari sinyal ultrasound dan menghitung jarak berdasarkan rumus fisika. - 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
- Pin Kontrol Motor: Kita menambahkan pin output untuk mengatur motor atau mekanisme bergerak (LEFT_PIN dan RIGHT_PIN).
- 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.