Sensor gerak PIR (Passive Infrared) HC-SR501 merupakan salah satu sensor yang banyak digunakan dalam berbagai proyek otomasi berbasis Arduino. Sensor ini mampu mendeteksi keberadaan manusia atau hewan melalui perubahan radiasi inframerah yang dipancarkan oleh tubuh. Berkat kemampuannya tersebut, sensor PIR sering dimanfaatkan pada sistem keamanan, lampu otomatis, pintu otomatis, hingga berbagai aplikasi smart home.
Selain digunakan untuk mengaktifkan LED atau buzzer, sensor PIR juga dapat dipadukan dengan motor servo sebagai aktuator mekanis. Motor servo mampu bergerak ke sudut tertentu dengan tingkat presisi yang tinggi sehingga sangat cocok digunakan untuk membuka pintu mini, menggerakkan penghalang otomatis, kamera pengintai, maupun berbagai mekanisme otomatis lainnya. Pada tutorial ini, Anda akan mempelajari cara menghubungkan sensor gerak HC-SR501 dengan motor servo menggunakan Arduino Uno. Arduino akan memantau status keluaran sensor PIR secara terus-menerus. Ketika gerakan terdeteksi, motor servo akan bergerak ke posisi 90 derajat. Sebaliknya, saat tidak ada lagi gerakan yang terdeteksi, motor servo akan kembali ke posisi awal 0 derajat.
Tujuan Tutorial
Pada tutorial ini Anda akan mempelajari cara menghubungkan sensor gerak PIR HC-SR501 ke Arduino Uno, menghubungkan motor servo ke Arduino, mengatur konfigurasi awal sensor PIR, membaca sinyal digital dari sensor gerak, menggerakkan motor servo ke sudut 90 derajat ketika gerakan terdeteksi, mengembalikan motor servo ke posisi 0 derajat ketika tidak ada gerakan, dan menampilkan status deteksi pada Serial Monitor.
Baca juga: Arduino Mengontrol Motor Servo Menggunakan Sensor Ultrasonik HC-SR04
Perangkat Keras yang Dibutuhkan
- Arduino Uno R3
- Kabel USB
- Sensor Gerak PIR HC-SR501
- Motor Servo SG90 atau sejenisnya
- Kabel Jumper
Catatan: Pada beberapa referensi mungkin tertulis HC-SR01, namun modul yang umum digunakan adalah HC-SR501.
Pengaturan Awal Sensor PIR
Agar sensor memberikan respons yang optimal selama proses pengujian, lakukan pengaturan berikut:
- Putar Time Delay sepenuhnya ke arah berlawanan jarum jam agar waktu tunda menjadi paling singkat.
- Putar Sensitivity sepenuhnya searah jarum jam untuk mendapatkan area deteksi yang maksimal.
- Atur Trigger Mode pada posisi Repeatable Trigger (H) dengan memasang jumper sesuai petunjuk pada modul.
Pengaturan tersebut membuat sensor lebih cepat merespons setiap gerakan yang terdeteksi.
Cara Kerja Sistem
1. Sensor PIR akan memantau perubahan radiasi inframerah di sekitarnya.
2. Ketika seseorang bergerak di dalam area deteksi sensor, pin output sensor akan berubah dari kondisi LOW menjadi HIGH.
3. Arduino membaca perubahan tersebut, kemudian menggerakkan motor servo ke posisi 90 derajat sebagai respons terhadap adanya gerakan.
4. Ketika tidak ada lagi aktivitas yang terdeteksi, keluaran sensor akan kembali ke kondisi LOW.
Arduino kemudian mengembalikan motor servo ke posisi 0 derajat.
5. Selama sistem berjalan, status deteksi juga ditampilkan pada Serial Monitor sehingga pengguna dapat memantau kondisi sensor secara real-time.
Kode Program Arduino
Berikut adalah program lengkap untuk mengontrol motor servo menggunakan sensor gerak PIR HC-SR501.
#include <Servo.h>
// Konstanta
const int MOTION_SENSOR_PIN = 7;
const int SERVO_PIN = 9;
// Membuat objek servo
Servo servo;
// Variabel
int angle = 0;
int lastMotionState;
int currentMotionState;
void setup() {
Serial.begin(9600);
pinMode(MOTION_SENSOR_PIN, INPUT);
servo.attach(SERVO_PIN);
servo.write(angle);
currentMotionState = digitalRead(MOTION_SENSOR_PIN);
}
void loop() {
lastMotionState = currentMotionState;
currentMotionState = digitalRead(MOTION_SENSOR_PIN);
if (currentMotionState == LOW &&
lastMotionState == HIGH) {
Serial.println("Motion detected!");
servo.write(90);
}
else if (currentMotionState == HIGH &&
lastMotionState == LOW) {
Serial.println("Motion stopped!");
servo.write(0);
}
}
Penjelasan Program
Program diawali dengan memanggil library Servo yang digunakan untuk mengendalikan motor servo.
#include <Servo.h>
Selanjutnya ditentukan pin yang digunakan oleh sensor PIR dan motor servo.
const int MOTION_SENSOR_PIN = 7;
const int SERVO_PIN = 9;
Kemudian dibuat sebuah objek servo.
Servo servo;
Program juga menggunakan beberapa variabel untuk menyimpan kondisi sensor sebelumnya dan kondisi sensor saat ini.
int lastMotionState;
int currentMotionState;
Pada fungsi setup(), Arduino mengaktifkan komunikasi serial, mengatur pin sensor sebagai input, kemudian menghubungkan motor servo ke pin digital 9.
servo.attach(SERVO_PIN);
Servo juga diarahkan ke posisi awal.
servo.write(0);
Selanjutnya Arduino membaca kondisi awal sensor PIR.
currentMotionState = digitalRead(MOTION_SENSOR_PIN);
Di dalam fungsi loop(), Arduino menyimpan status sensor sebelumnya.
lastMotionState = currentMotionState;
Kemudian membaca kondisi terbaru sensor.
currentMotionState = digitalRead(MOTION_SENSOR_PIN);
Apabila terjadi perubahan status yang menunjukkan adanya gerakan, Arduino menampilkan pesan:
Serial.println("Motion detected!");
dan menggerakkan servo ke posisi 90 derajat.
servo.write(90);
Sebaliknya, ketika gerakan berhenti, Arduino menampilkan pesan:
Serial.println("Motion stopped!");
lalu mengembalikan motor servo ke posisi 0 derajat.
servo.write(0);
Koneksi Rangkaian
1. Hubungkan pin VCC sensor PIR ke pin 5V Arduino dan pin GND ke GND Arduino.
2. Pin OUT sensor PIR dihubungkan ke pin digital 7 Arduino.
3. Pada motor servo, hubungkan kabel signal ke pin digital 9, kabel VCC ke pin 5V, dan kabel GND ke pin GND Arduino.
4. Pastikan semua koneksi telah terpasang dengan benar sebelum menjalankan program.
Langkah-langkah Menjalankan Program
1. Hubungkan Arduino Uno ke komputer menggunakan kabel USB.
2. Buka aplikasi Arduino IDE, kemudian pilih board Arduino Uno dan port yang sesuai.
3. Salin kode program di atas ke dalam Arduino IDE.
4. Klik tombol Upload dan tunggu hingga proses kompilasi selesai.
5. Setelah program berhasil dijalankan, buka Serial Monitor dengan baud rate 9600.
6. Gerakkan tangan atau berjalan di depan sensor PIR.
7. Perhatikan perubahan posisi motor servo serta pesan yang muncul pada Serial Monitor.
Hasil Pengujian
Ketika tidak terdapat aktivitas di depan sensor, motor servo akan tetap berada pada posisi 0 derajat. Saat seseorang bergerak di area deteksi sensor PIR, Arduino akan menerima sinyal dari sensor, menampilkan pesan "Motion detected!", kemudian menggerakkan motor servo ke posisi 90 derajat. Ketika gerakan berhenti dan sensor tidak lagi mendeteksi aktivitas, Arduino akan menampilkan pesan "Motion stopped!" dan motor servo akan kembali ke posisi awal 0 derajat. Dengan mekanisme tersebut, motor servo dapat berfungsi sebagai aktuator otomatis yang merespons keberadaan gerakan di sekitarnya.
Baca juga: Arduino Mengontrol LED Menggunakan Sensor Gerak PIR HC-SR501
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino




0 on: "Arduino Mengontrol Motor Servo Menggunakan Sensor Gerak PIR HC-SR501"