Robotik & Hardware, ELrolumnews — Anda sudah bisa menyalakan LED, membaca sensor suhu, bahkan membuat smart home dengan ESP32. Tapi bagaimana caranya membuat perangkat yang bisa mendeteksi gerakan—seperti alarm yang menyala saat ada orang lewat?
Artikel ini cocok untuk: Anda yang sudah familiar dengan dasar Arduino dan ingin belajar menggunakan sensor PIR—sensor gerak yang paling umum dan terjangkau.
Sensor PIR (Passive Infrared) adalah sensor yang mendeteksi perubahan radiasi inframerah di sekitarnya. Setiap benda yang memiliki suhu di atas nol mutlak memancarkan radiasi inframerah—termasuk manusia dan hewan . Sensor PIR tidak memancarkan apa pun—ia pasif, hanya “mendengarkan” perubahan panas di sekitarnya .
Di artikel ini, kita akan bahas dari nol: apa itu sensor PIR, cara kerjanya, wiring ke Arduino, kode program, hingga proyek alarm gerak sederhana yang bisa langsung dipraktikkan.
Apa Itu Sensor PIR dan Bagaimana Cara Kerjanya?
PIR adalah singkatan dari Passive Infrared. Disebut “pasif” karena sensor ini tidak memancarkan energi apa pun untuk mendeteksi—ia hanya menerima radiasi inframerah dari objek di sekitarnya .
Prinsip Kerja Sensor PIR
Sensor PIR terdiri dari dua elemen sensing yang terpisah secara fisik. Setiap elemen memiliki field of view (FOV) yang sedikit berbeda .
| Kondisi | Apa yang Terjadi |
|---|---|
| Tidak ada gerakan | Kedua elemen mendeteksi jumlah radiasi inframerah yang sama—output nol |
| Ada gerakan | Satu elemen mendeteksi lebih banyak radiasi daripada yang lain—output berubah |
Ketika manusia atau hewan bergerak melintasi kedua field of view, sensor menghasilkan gelombang sinyal—dan itulah yang dideteksi sebagai “gerakan” .
Mengapa Sensor PIR Bisa Salah Deteksi?
Sensor PIR adalah detektor perubahan panas—bukan detektor gambar. Apa pun yang menyebabkan perubahan radiasi termal secara tiba-tiba bisa memicu deteksi palsu :
| Penyebab False Trigger | Penjelasan |
|---|---|
| Cahaya & bayangan | Sinar matahari, bayangan pohon bergerak |
| Sumber panas | AC, pemanas, knalpot kendaraan |
| Hewan kecil | Kucing, anjing, atau serangga |
| Refleksi | Cermin, kaca, lantai mengkilap |
💡 Tips Pro: Untuk mengurangi false trigger, hindari menempatkan sensor PIR menghadap jendela, cermin, atau sumber panas. Naikkan sensitivitas hanya jika perlu .
Komponen yang Dibutuhkan
| Komponen | Fungsi | Perkiraan Harga |
|---|---|---|
| Arduino Uno | Mikrokontroler | Rp80-150 ribu |
| Sensor PIR HC-SR501 | Deteksi gerak | Rp15-30 ribu |
| LED | Indikator gerak | Rp1-2 ribu |
| Resistor 220Ω | Proteksi LED | Rp500 |
| Buzzer (opsional) | Alarm suara | Rp5-10 ribu |
| Kabel Jumper | Koneksi | Rp10-20 ribu |
| Breadboard | Prototyping | Rp15-25 ribu |
💡 Sensor PIR HC-SR501 adalah modul PIR paling populer untuk Arduino—murah, mudah digunakan, dan memiliki potensiometer untuk mengatur sensitivitas dan delay .
Langkah 1: Wiring Sensor PIR ke Arduino
Koneksi Dasar
| Sensor PIR | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| OUT | Digital Pin 2 |
Koneksi LED (Indikator)
| LED | Arduino |
|---|---|
| Anoda (kaki panjang) | Digital Pin 13 (via resistor 220Ω) |
| Katoda (kaki pendek) | GND |
Koneksi Buzzer (Opsional)
| Buzzer | Arduino |
|---|---|
| Positif | Digital Pin 3 |
| Negatif | GND |
⚠️ Peringatan: Sensor PIR HC-SR501 membutuhkan waktu pemanasan (warm-up) sekitar 30-60 detik setelah pertama kali dinyalakan. Selama periode ini, output bisa tidak stabil—ini normal .
Langkah 2: Kode Program Dasar
Ini kode paling sederhana untuk membaca sensor PIR.
Kode
#define PIR_PIN 2 #define LED_PIN 13 void setup() { pinMode(PIR_PIN, INPUT); pinMode(LED_PIN, OUTPUT); Serial.begin(9600); Serial.println("Sensor PIR siap..."); delay(30000); // Warm-up 30 detik } void loop() { int gerakan = digitalRead(PIR_PIN); if (gerakan == HIGH) { Serial.println("Gerakan terdeteksi!"); digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); } else { Serial.println("Tidak ada gerakan..."); } delay(500); }
Penjelasan Kode
| Bagian | Fungsi |
|---|---|
#define PIR_PIN 2 | Pin sensor PIR |
pinMode(PIR_PIN, INPUT) | Set pin sebagai input |
digitalRead(PIR_PIN) | Baca status sensor |
HIGH | Gerakan terdeteksi |
delay(30000) | Warm-up sensor |
Langkah 3: Mengatur Sensitivitas dan Delay
Sensor PIR HC-SR501 memiliki dua potensiometer yang bisa diatur :
| Potensiometer | Fungsi | Cara Mengatur |
|---|---|---|
| Sx (Sensitivity) | Jarak deteksi (3-7 meter) | Putar searah jarum jam = lebih sensitif |
| Tx (Time Delay) | Durasi output HIGH (0.3-200 detik) | Putar searah jarum jam = lebih lama |
Mode Trigger
Ada jumper di sensor untuk memilih mode:
| Mode | Jumper | Perilaku |
|---|---|---|
| Single Trigger | L (Low) | Output HIGH sekali, lalu LOW setelah delay |
| Repeat Trigger | H (High) | Output HIGH terus selama gerakan terdeteksi |
💡 Tips Pro: Untuk alarm keamanan, gunakan Repeat Trigger—agar alarm terus menyala selama ada gerakan. Untuk hemat daya, gunakan Single Trigger .
Langkah 4: Proyek Alarm Gerak Sederhana
Sekarang kita gabungkan sensor PIR dengan buzzer untuk membuat alarm.
Kode Alarm
#define PIR_PIN 2 #define BUZZER_PIN 3 #define LED_PIN 13 void setup() { pinMode(PIR_PIN, INPUT); pinMode(BUZZER_PIN, OUTPUT); pinMode(LED_PIN, OUTPUT); Serial.begin(9600); Serial.println("Alarm gerak aktif..."); delay(30000); // Warm-up } void loop() { int gerakan = digitalRead(PIR_PIN); if (gerakan == HIGH) { Serial.println("GERAKAN TERDETEKSI! ALARM!"); // Alarm: LED + Buzzer selama 2 detik digitalWrite(LED_PIN, HIGH); tone(BUZZER_PIN, 1000); // Nada 1000 Hz delay(2000); digitalWrite(LED_PIN, LOW); noTone(BUZZER_PIN); } delay(500); }
Cara Kerja
Sensor PIR mendeteksi gerakan
Arduino menyalakan LED dan buzzer
Alarm berbunyi selama 2 detik
Kembali ke mode monitoring
Langkah 5: Integrasi dengan ESP32 (Opsional)
Jika Anda ingin notifikasi ke smartphone atau integrasi smart home, ganti Arduino dengan ESP32 .
Contoh: Kirim Notifikasi ke Blynk
#include <WiFi.h> #include <BlynkSimpleEsp32.h> #define PIR_PIN 2 char auth[] = "TOKEN_BLYNK_ANDA"; char ssid[] = "NAMA_WIFI"; char pass[] = "PASSWORD_WIFI"; BlynkTimer timer; void cekGerakan() { int gerakan = digitalRead(PIR_PIN); if (gerakan == HIGH) { Blynk.logEvent("gerakan", "Gerakan terdeteksi!"); } } void setup() { pinMode(PIR_PIN, INPUT); Blynk.begin(auth, ssid, pass); timer.setInterval(1000L, cekGerakan); } void loop() { Blynk.run(); timer.run(); }
Dengan integrasi ini, Anda akan mendapat notifikasi push di smartphone setiap kali gerakan terdeteksi.
Troubleshooting: Masalah Umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| Sensor tidak mendeteksi | Warm-up belum selesai | Tunggu 30-60 detik |
| False trigger terus-menerus | Sensitivitas terlalu tinggi | Turunkan sensitivitas |
| Deteksi terlalu lambat | Delay terlalu lama | Turunkan time delay |
| Sensor tidak stabil | Sumber daya kurang | Gunakan power supply stabil |
| Deteksi menembus dinding | Sensitivitas terlalu tinggi | Turunkan sensitivitas |
Kesalahan Umum dan Cara Menghindarinya
| Kesalahan | Akibat | Solusi |
|---|---|---|
| Tidak warm-up | Output tidak stabil | Tunggu 30-60 detik |
| Menghadap jendela | False trigger dari sinar matahari | Ubah posisi |
| Sensitivitas maksimal | Deteksi hewan kecil | Turunkan sensitivitas |
| Power tidak stabil | Sensor restart | Gunakan adaptor 5V stabil |
Kesimpulan
Sensor PIR adalah pintu masuk ke dunia deteksi gerak—murah, mudah, dan sangat berguna. Kuncinya:
Pahami cara kerjanya — mendeteksi perubahan radiasi inframerah
Wiring dengan benar — VCC, GND, OUT ke pin digital
Beri waktu warm-up — 30-60 detik sebelum digunakan
Atur sensitivitas — sesuaikan dengan kebutuhan
Tambahkan output — LED, buzzer, atau notifikasi IoT
Dengan sensor PIR, Anda bisa membuat alarm keamanan, lampu otomatis, atau sistem deteksi gerak untuk smart home—semua dengan biaya di bawah Rp100 ribu.
Ingat: Sensor PIR adalah detektor perubahan panas, bukan kamera. Ia bisa “salah” melihat gerakan dari sumber panas lain. Posisi dan sensitivitas adalah kuncinya .
Sudah siap membuat alarm gerak pertama Anda?
💬 Punya proyek dengan sensor PIR? Bagikan di kolom komentar!
(el)





