Tuesday, 1 July 2025
Arduino Belajar IOT

Mengontrol Motor Servo dengan Arduino untuk Proyek Pintu Otomatis

Mengontrol Motor Servo dengan Arduino untuk Proyek Pintu Otomatis

Motor servo adalah salah satu jenis aktuator yang banyak digunakan dalam proyek robotika dan elektronik. Motor servo memungkinkan pengendalian sudut rotasi dengan presisi tinggi. Dalam proyek ini, kita akan belajar bagaimana mengontrol gerakan motor servo menggunakan Arduino dan membuat aplikasi sederhana seperti pintu otomatis atau lengan robot.

Alat dan Bahan yang Dibutuhkan

  • 1 x Arduino Uno (atau model Arduino lainnya)
  • 1 x Motor servo (misalnya SG90 atau MG996R)
  • Breadboard
  • Kabel jumper

Cara Kerja Motor Servo

Motor servo memiliki tiga kabel:

  1. VCC (biasanya merah) – Terhubung ke sumber daya (+5V dari Arduino).
  2. GND (biasanya coklat atau hitam) – Terhubung ke ground (GND pada Arduino).
  3. Sinyal (biasanya kuning atau putih) – Terhubung ke pin PWM di Arduino untuk menerima sinyal kendali.

Motor servo menerima sinyal PWM (Pulse Width Modulation) yang menentukan posisi sudutnya. Sinyal ini terdiri dari pulsa yang lebar pulsanya berkisar antara 1 ms hingga 2 ms:

  • Pulsa 1 ms akan menggerakkan servo ke posisi 0 derajat.
  • Pulsa 1,5 ms akan menggerakkan servo ke posisi tengah (90 derajat).
  • Pulsa 2 ms akan menggerakkan servo ke posisi 180 derajat.

Diagram Rangkaian

  1. Sambungkan kabel VCC motor servo ke pin 5V pada Arduino.
  2. Sambungkan kabel GND motor servo ke pin GND pada Arduino.
  3. Sambungkan kabel Sinyal motor servo ke pin PWM di Arduino (misalnya pin 9).

Diagram Koneksi:

  • 5V (Arduino)VCC (servo)
  • GND (Arduino)GND (servo)
  • Pin 9 (Arduino)Sinyal (servo)

Kode Program untuk Mengontrol Motor Servo

Sekarang kita akan menulis program Arduino untuk mengontrol motor servo menggunakan library Servo.h bawaan Arduino. Program ini akan menggerakkan motor servo ke sudut tertentu (misalnya untuk aplikasi pintu otomatis).

#include <Servo.h>

// Membuat objek servo
Servo myServo;

// Mendeklarasikan pin untuk sinyal servo
int servoPin = 9;

void setup() {
  // Mengaitkan servo ke pin PWM di Arduino
  myServo.attach(servoPin);

  // Inisialisasi komunikasi serial (opsional untuk debugging)
  Serial.begin(9600);
}

void loop() {
  // Gerakkan servo ke 0 derajat (posisi tertutup)
  Serial.println("Servo bergerak ke 0 derajat");
  myServo.write(0);  // Servo bergerak ke 0 derajat
  delay(2000);       // Jeda 2 detik

  // Gerakkan servo ke 90 derajat (posisi tengah)
  Serial.println("Servo bergerak ke 90 derajat");
  myServo.write(90);  // Servo bergerak ke 90 derajat
  delay(2000);        // Jeda 2 detik

  // Gerakkan servo ke 180 derajat (posisi terbuka)
  Serial.println("Servo bergerak ke 180 derajat");
  myServo.write(180);  // Servo bergerak ke 180 derajat
  delay(2000);         // Jeda 2 detik
}

Penjelasan Kode:

  • #include
    Library Servo digunakan untuk mengontrol motor servo dengan mudah.
  • Servo myServo;
    Membuat objek servo yang akan digunakan untuk mengontrol motor servo.
  • myServo.attach(servoPin);
    Mengaitkan motor servo dengan pin PWM (pin 9 dalam contoh ini).
  • myServo.write(0);
    Menyuruh motor servo bergerak ke sudut 0 derajat.
  • delay(2000);
    Memberikan jeda 2 detik sebelum perintah berikutnya dieksekusi.

Mengunggah Program ke Arduino

  1. Sambungkan Arduino ke komputer menggunakan kabel USB.
  2. Buka Arduino IDE dan salin kode di atas.
  3. Pilih port dan board yang sesuai (Tools → Board → Arduino Uno, Tools → Port → pilih port yang sesuai).
  4. Klik Upload untuk mengunggah program ke Arduino.
  5. Setelah program berhasil diunggah, motor servo akan mulai bergerak sesuai dengan perintah di program.

Aplikasi Pintu Otomatis

Proyek motor servo ini dapat digunakan untuk mengontrol pintu otomatis. Berikut adalah langkah-langkah untuk menyesuaikan kode dengan aplikasi pintu otomatis:

Tambahkan Sensor (Opsional)

Agar lebih otomatis, kita bisa menambahkan sensor jarak ultrasonik (seperti HC-SR04) untuk mendeteksi jika seseorang mendekati pintu. Jika jarak yang terdeteksi lebih dekat dari nilai tertentu, pintu akan terbuka (servo bergerak ke 90 atau 180 derajat).

Berikut adalah modifikasi kode untuk aplikasi pintu otomatis menggunakan sensor jarak:

#include <Servo.h>

Servo myServo;

int servoPin = 9;
int trigPin = 7;  // Pin Trig sensor ultrasonik
int echoPin = 6;  // Pin Echo sensor ultrasonik

void setup() {
  myServo.attach(servoPin);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // Mengukur jarak menggunakan sensor ultrasonik
  long duration, distance;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

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

  // Jika jarak lebih kecil dari 20 cm, buka pintu
  if (distance < 20) {
    Serial.println("Membuka pintu");
    myServo.write(90);  // Membuka pintu
    delay(5000);        // Tunggu 5 detik sebelum menutup
    Serial.println("Menutup pintu");
    myServo.write(0);   // Menutup pintu
  }

  delay(1000);  // Jeda sebelum pembacaan jarak berikutnya
}

Penjelasan Modifikasi:

  • Sensor Ultrasonik digunakan untuk mendeteksi objek di dekat pintu. Jika objek (misalnya, seseorang) berada lebih dekat dari jarak yang ditentukan (20 cm), pintu akan otomatis terbuka.
  • pulseIn() digunakan untuk menghitung waktu yang diperlukan sinyal ultrasonik untuk kembali, sehingga bisa dihitung jaraknya.

Aplikasi Lengan Robot Sederhana

Motor servo juga sering digunakan dalam proyek lengan robot. Dengan menggunakan beberapa motor servo, kamu bisa membuat lengan robot sederhana yang bisa bergerak dalam beberapa derajat kebebasan (DOF). Misalnya, satu servo untuk menggerakkan lengan ke atas/bawah, dan satu lagi untuk menggerakkan cengkeraman (gripper).

Berikut contoh dasar mengontrol dua motor servo secara bersamaan:

#include <Servo.h>

Servo baseServo;    // Servo untuk bagian dasar
Servo armServo;     // Servo untuk bagian lengan

int basePin = 9;
int armPin = 10;

void setup() {
  baseServo.attach(basePin);
  armServo.attach(armPin);
}

void loop() {
  // Gerakkan servo dasar ke 0 derajat dan lengan ke 90 derajat
  baseServo.write(0);
  armServo.write(90);
  delay(1000);

  // Gerakkan servo dasar ke 90 derajat dan lengan ke 45 derajat
  baseServo.write(90);
  armServo.write(45);
  delay(1000);

  // Kembali ke posisi awal
  baseServo.write(0);
  armServo.write(90);
  delay(1000);
}

Kesimpulan

Motor servo adalah komponen yang sangat fleksibel untuk berbagai proyek robotika dan aplikasi otomatisasi. Dengan Arduino, kamu bisa dengan mudah mengontrol motor servo untuk membuat proyek seperti pintu otomatis, lengan robot sederhana, atau bahkan aplikasi lain yang memerlukan gerakan presisi. Dengan menambahkan sensor atau perangkat kontrol tambahan, kamu dapat mengembangkan proyek yang lebih kompleks dan bermanfaat.

Fredy Siswanto

Fredy Siswanto

About Author

Leave a Reply

Your email address will not be published. Required fields are marked *