Komponen · 5 mnt baca

Sensor Gerak PIR (HC-SR501): Mendeteksi Gerakan dengan Arduino, ESP32, dan Pico

Bagaimana cara kerja sensor gerak PIR? Pengkabelan HC-SR501, pengaturan sensitivitas dan waktu, mode pemicu H/L, kode Arduino, ESP32, dan Pico, lampu aktif gerakan, serta cara menghindari pemicuan palsu.

Sensor PIR (Passive InfraRed) adalah sensor murah berdaya sangat rendah yang mendeteksi ketika manusia atau hewan bergerak di dalam area pandangnya. Lampu tangga yang menyala sendiri, sistem alarm, dan bel pintu otomatis biasanya memakai PIR. Kata “pasif” berarti sensor ini tidak memancarkan apa pun: ia hanya “mendengarkan” radiasi inframerah yang dipancarkan benda-benda hangat di sekitarnya. Model paling populer di proyek Arduino adalah HC-SR501.

Sensor gerak PIR HC-SR501
Sensor PIR HC-SR501: kubah putih adalah lensa Fresnel; board di bawahnya punya dua potensiometer pengatur dan jumper pemicu.

Bagaimana cara kerja sensor PIR?

Setiap benda yang lebih hangat dari nol mutlak memancarkan radiasi inframerah, dan tubuh manusia memancarkannya paling kuat pada panjang gelombang 9–10 mikrometer. Inti sensor ini adalah elemen piroelektrik yang bereaksi terhadap radiasi tersebut, dan elemen itu terbagi menjadi dua bagian. Ketika tidak ada yang bergerak, kedua bagian menerima radiasi yang sama, sinyalnya saling meniadakan, dan output tetap diam. Ketika seseorang melintasi area pandang, mula-mula satu bagian lalu bagian lainnya menerima radiasi lebih banyak; rangkaian modul menangkap perbedaan ini dan pin OUT menjadi HIGH.

Kubah putih di atasnya adalah lensa Fresnel. Lensa ini membagi area pandang menjadi puluhan zona kecil dan memfokuskan radiasi dari setiap zona ke elemen sensor. Ketika seseorang berpindah dari satu zona ke zona berikutnya, sinyalnya berubah; itulah sebabnya sensor PIR sangat bagus mendeteksi gerakan, tetapi tidak bisa mendeteksi orang yang berdiri diam sama sekali.

Spesifikasi HC-SR501

FiturNilai
Tegangan catu daya4,5–20 V (disarankan 5 V)
Arus siagaSekitar 50 µA
OutputDigital: 3,3 V jika ada gerakan, 0 V jika tidak
Jangkauan deteksi3–7 m (bisa diatur)
Sudut deteksiSekitar 110°
Waktu outputSekitar 3 detik – 5 menit (bisa diatur)
Waktu blokirSekitar 2,5 detik setelah output mati
Waktu pemanasan30–60 detik ketika baru dinyalakan

Pengaturan di modul

  • Potensiometer Sx (sensitivitas): mengatur jangkauan deteksi. Memutarnya searah jarum jam menambah jangkauan dari sekitar 3 menjadi 7 meter.
  • Potensiometer Tx (waktu): mengatur berapa lama output tetap HIGH setelah gerakan terdeteksi. Memutarnya searah jarum jam membuatnya lebih lama.
  • Jumper pemicu H (berulang): timer dimulai ulang setiap kali selama gerakan berlanjut; ideal untuk mengendalikan lampu.
  • Jumper pemicu L (tunggal): output menjadi LOW ketika waktunya habis, walaupun gerakan masih berlanjut; setelah itu perlu pemicu baru.
  • Waktu blokir: selama sekitar 2,5 detik setelah output menjadi LOW, gerakan baru tidak terdeteksi; ini tidak bisa diatur.
Ketika mulai bereksperimen, putar kedua potensiometer penuh berlawanan arah jarum jam (waktu terpendek, sensitivitas terendah) dan pasang jumper di H. Dengan begitu kamu tidak perlu menunggu beberapa menit setelah setiap percobaan; mengatur waktunya di kode nanti jauh lebih fleksibel.

Pinout dan pengkabelan HC-SR501

PinFungsiArduino UnoESP32Raspberry Pi Pico
VCCDaya5VVIN (5V)VBUS (5V)
OUTOutput digital (3,3 V)D2GPIO 27GP16
GNDGroundGNDGNDGND
Di sebagian besar modul, nama pin tercetak di bagian atas board, di bawah kubah putih. Kamu bisa melepas kubah itu pelan-pelan untuk membaca labelnya, lalu memasangnya kembali.

Mendeteksi gerakan dengan Arduino

Kode di bawah menunggu sensor selesai pemanasan, lalu menulis pesan di Serial Monitor sekali ketika gerakan dimulai dan sekali ketika gerakan berakhir, sambil menyalakan dan mematikan LED bawaan Arduino. Hanya memantau perubahan kondisi, bukannya menampilkan output berulang-ulang, juga merupakan cara yang akan kamu pakai di proyek nyata.

C++ (Arduino IDE)
1const int PIR_PIN = 2;
2const int LED_PIN = 13;        // dahili LED / built-in LED
3
4bool motion = false;
5
6void setup() {
7  pinMode(PIR_PIN, INPUT);
8  pinMode(LED_PIN, OUTPUT);
9  Serial.begin(9600);
10  Serial.println("Sensör ısınıyor / warming up...");
11  delay(30000);                  // ilk 30 sn kararsız / unstable for ~30 s
12  Serial.println("Hazır / ready");
13}
14
15void loop() {
16  bool now = digitalRead(PIR_PIN);
17  if (now && !motion) {
18    Serial.println("Hareket algılandı / motion detected");
19    digitalWrite(LED_PIN, HIGH);
20    motion = true;
21  } else if (!now && motion) {
22    Serial.println("Hareket bitti / motion ended");
23    digitalWrite(LED_PIN, LOW);
24    motion = false;
25  }
26}
Ketika pertama kali dinyalakan, sensor menghabiskan 30–60 detik untuk “mempelajari” sekitarnya dan bisa terpicu sendiri selama waktu itu. Menunggu selama itu di kode, atau mengabaikan pemicu pertama, mencegah alarm palsu setiap kali sistem mulai.

Lampu aktif gerakan: mengatur waktu dengan millis()

Menyimpan lama waktu nyala di kode, bukan di potensiometer Tx modul, jauh lebih fleksibel. Kode di bawah mencatat waktu setiap kali gerakan terdeteksi dan mematikan lampu 20 detik setelah gerakan terakhir, sehingga lampu tetap menyala selama ada orang yang bergerak di ruangan. Kamu bisa menghubungkan LED ke LIGHT_PIN, atau modul relay untuk lampu listrik rumah; kalau kamu memakai relay aktif LOW, tukar HIGH dan LOW di baris terakhir. Pengkabelan relay dibahas di Apa Itu Modul Relay?

C++ (Arduino IDE)
1const int PIR_PIN = 2;
2const int LIGHT_PIN = 7;               // LED ya da röle / LED or relay
3const unsigned long ON_TIME = 20000;   // son hareketten sonra 20 sn / 20 s after last motion
4
5unsigned long lastMotion = 0;
6
7void setup() {
8  pinMode(PIR_PIN, INPUT);
9  pinMode(LIGHT_PIN, OUTPUT);
10}
11
12void loop() {
13  if (digitalRead(PIR_PIN) == HIGH) {
14    lastMotion = millis();             // her harekette süreyi yenile / refresh on every motion
15  }
16  bool on = (lastMotion != 0) && (millis() - lastMotion < ON_TIME);
17  digitalWrite(LIGHT_PIN, on ? HIGH : LOW);
18}

PIR dengan ESP32 dan Raspberry Pi Pico

Output HC-SR501 sudah 3,3 V, jadi bisa dihubungkan langsung ke ESP32 dan Pico tanpa pembagi tegangan. Namun, modulnya sendiri tetap diberi daya 5 V, karena regulator di board-nya tidak stabil di bawah 4,5 V. Kode Arduino yang sama berjalan di ESP32; di proyek bertenaga baterai, membuat ESP32 masuk deep sleep lalu membangunkannya dengan output PIR (ext0 wakeup) memperpanjang umur baterai sampai berminggu-minggu. Di Pico dengan MicroPython, kamu bisa memakai interrupt supaya tidak ada gerakan yang terlewat:

MicroPython
1from machine import Pin
2import time
3
4pir = Pin(16, Pin.IN)            # GP16
5led = Pin(25, Pin.OUT)           # dahili LED; Pico W'de Pin("LED") / onboard LED; Pin("LED") on Pico W
6
7def on_motion(pin):
8    led.value(pin.value())       # hareket varken yanar / on while there is motion
9    print("Hareket / motion" if pin.value() else "Bitti / ended")
10
11pir.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=on_motion)
12
13while True:
14    time.sleep(1)

Menghindari pemicuan palsu

  • Jangan arahkan ke sumber panas: radiator, lubang angin AC, jendela yang terkena matahari, dan lampu panas memicu sensor dengan perubahan suhu yang tiba-tiba.
  • Jauhkan dari benda yang bergerak: gorden, tanaman, atau dahan yang bergoyang tertiup angin terlihat seperti gerakan jika sudah hangat terkena matahari.
  • Bersihkan catu daya: relay dan modul Wi-Fi menambah derau di catu daya; pasang kapasitor 100 µF di antara VCC dan GND sensor.
  • Beri sedikit jarak dari ESP32: HC-SR501 yang tepat di sebelah antena Wi-Fi sesekali bisa terpicu sendiri; jarak beberapa sentimeter dan kabel pendek biasanya menyelesaikannya.
  • Untuk hewan peliharaan: turunkan sensitivitasnya dan pasang sensor di tempat tinggi, sedikit miring ke bawah.
  • Jangan pasang di balik kaca: kaca biasa menghalangi radiasi inframerah, jadi sensor di balik jendela tidak bisa melihat gerakan di luar.

PIR, radar gelombang mikro, atau ultrasonik?

FiturPIR (HC-SR501)Radar gelombang mikro (RCWL-0516)Ultrasonik (HC-SR04)
Yang dideteksiBenda hangat yang bergerakGerakan apa punJarak ke benda di depannya
Menembus dinding tipis atau casingTidakYaTidak
Orang yang berdiri diamTidakTidakTerukur sebagai jarak
Konsumsi dayaSangat rendah (~50 µA)Rendah (~3 mA)Sedang (~15 mA)
Pemakaian umumLampu, alarmSensor tersembunyi, pembuka pintuDeteksi rintangan, pengukuran level

Kalau yang ingin kamu ketahui adalah apakah ada orang yang bergerak, bukan apakah ada orang di ruangan, PIR adalah solusi paling hemat. Kalau kamu perlu mengukur seberapa jauh sebuah benda, lihat Sensor Jarak HC-SR04.

Ide proyek dengan sensor PIR

  • Lampu lorong otomatis: nyalakan lampu dengan relay ketika gerakan terdeteksi dan matikan setelah 30 detik tanpa gerakan.
  • Alarm maling: bunyikan buzzer jika gerakan terdeteksi dalam mode malam; untuk bagian suaranya, lihat Apa Itu Buzzer?
  • Lampu tidur pintar: gabungkan PIR dengan Sensor Cahaya LDR untuk lampu yang hanya menyala ketika gelap dan ada orang bergerak.
  • Notifikasi ke ponsel: kirim pesan Telegram dari ESP32 ketika gerakan terdeteksi.
  • Layar hemat daya: nyalakan lampu latar LCD ketika ada orang mendekat dan matikan ketika orang itu pergi.
  • Penghitung pengunjung: hitung setiap gerakan yang melewati pintu dan tampilkan di layar.

Kesalahan umum dan cara mengatasinya

  • Output terus HIGH: waktu Tx terlalu lama, atau ada gerakan terus-menerus dalam mode H; putar potensiometernya ke bawah dan pastikan sensor tidak menghadap sumber panas.
  • Tidak pernah terpicu: mungkin VCC bukan 5 V, sensor masih dalam pemanasan, atau kabel OUT terpasang di pin yang berbeda dari yang ada di kodemu.
  • Terpicu sendiri setiap beberapa detik: catu dayanya berisik; tambahkan kapasitor dan jauhkan dari relay dan modul Wi-Fi.
  • Tidak langsung mendeteksi lagi setelah gerakan berakhir: waktu blokir sekitar 2,5 detik itu normal; sensornya tidak rusak.
  • Memasang dengan arah yang salah: PIR mendeteksi paling baik ketika gerakan melintasi area pandangnya dari samping; orang yang berjalan lurus ke arahnya baru disadari belakangan.

Sensor PIR adalah salah satu titik awal terbaik untuk proyek rumah pintar pertamamu: cukup tiga kabel dan hasilnya langsung terlihat. Di aplikasi BlueGrays kamu akan menemukan proyek lampu sensor gerak, bel pintu, dan alarm langkah demi langkah lengkap dengan skema rangkaian dan kode.

Pertanyaan umum

Seberapa jauh sensor PIR bisa mendeteksi?

HC-SR501 mendeteksi pada jarak 3 sampai 7 meter dengan sudut sekitar 110 derajat. Jangkauannya diatur dengan potensiometer Sx (sensitivitas) di modul; memutarnya searah jarum jam akan menambah jangkauan.

Apakah sensor PIR bisa mendeteksi orang yang berdiri diam?

Tidak. PIR hanya mendeteksi perubahan radiasi inframerah, dengan kata lain gerakan. Sensor ini tidak akan menyadari orang yang duduk diam sama sekali. Untuk mengetahui apakah ada orang di ruangan, dipakai radar kehadiran mmWave seperti LD2410.

Apakah sensor PIR bisa bekerja menembus kaca?

Tidak. Kaca jendela biasa tidak meneruskan radiasi inframerah yang dipancarkan tubuh manusia, jadi sensor di balik kaca tidak bisa melihat gerakan di luar. Untuk pemakaian di luar ruangan, pasang sensor di luar di tempat yang terlindung dari hujan.

Apakah HC-SR501 bisa bekerja di 3,3 V?

Regulatornya tidak stabil di bawah 4,5 V, jadi butuh catu daya 5 V. Output-nya sudah 3,3 V, jadi bisa langsung dihubungkan ke ESP32 atau Pico. Kalau kamu ingin sistem yang sepenuhnya 3,3 V, pakai modul PIR kecil AM312 yang bekerja di 2,7–12 V.

Kenapa sensor PIR-ku terpicu sendiri?

Penyebab paling umum adalah masa pemanasan, sumber panas yang dihadapi sensor (radiator, matahari, AC), dan derau di catu daya. Abaikan 60 detik pertama, arahkan sensor menjauhi sumber panas, pasang kapasitor di antara VCC dan GND, dan jauhkan dari modul Wi-Fi.

Apa perbedaan mode H dan L di HC-SR501?

Dalam mode H (berulang), timer output dimulai ulang di setiap deteksi selama gerakan berlanjut, sehingga lampu tetap menyala selama ada gerakan. Dalam mode L (tunggal), output mati ketika waktu yang diatur habis, walaupun gerakan masih berlanjut; pemicu baru datang setelah waktu blokir.

Lihat semua proyek
Pendeteksi Gerakan dengan Sensor Gerak
#24Pemula
Premium

Pendeteksi Gerakan dengan Sensor Gerak

Penjaga sederhana yang memberi tahu ketika ada orang masuk ke ruangan. Sensor gerak menangkap panas yang dipancarkan tubuh manusia, dan Arduino menjaga LED tetap menyala selama ada gerakan lalu memati

4.6(47)
67
Bel Pintu dan Lampu dengan Sensor Gerak
#25Menengah
Premium

Bel Pintu dan Lampu dengan Sensor Gerak

Ketika ada orang datang ke pintumu, kamu sudah tahu bahkan sebelum ia membunyikan bel. Begitu sensor gerak melihat seseorang, LED menyala dan buzzer memainkan bunyi bel tiga nada dari tinggi ke rendah

4.7(54)
71
Lampu Otomatis dengan Sensor Gerak PIR ESP32
#121Menengah
Premium

Lampu Otomatis dengan Sensor Gerak PIR ESP32

Di proyek ini, sensor gerak PIR HC-SR501 mendeteksi ketika seseorang masuk ke ruangan dan otomatis menyalakan LED. Lama LED menyala dilacak dengan millis(); setiap bacaan HIGH memperbarui waktu gerakan terakhir, dan LED mati minimal 10 detik setelah bacaan HIGH terakhir. Kode yang sekarang juga menunggu 50 ms di setiap loop dengan delay(50), jadi loopnya belum sepenuhnya non-blocking. Proyek ini bisa dipakai untuk lampu tangga.

4.4(24)
38
Lampu Pintar ESP32 (PIR + LDR + Relay + OLED)
#141Mahir
Premium

Lampu Pintar ESP32 (PIR + LDR + Relay + OLED)

Ubah lorong, kamar mandi, atau gudangmu menjadi lampu pintar dengan ESP32! Dengan sensor gerak PIR, sensor cahaya LDR, dan modul relay, kita membuat skenario klasik "lampu menyala ketika ada gerakan dalam gelap"; jika sudah terang, gerakan TIDAK menyalakan lampu, jadi energi hemat di siang hari. Lampu menyala 30 detik; jika gerakan berlanjut, timer diulang. OLED SSD1306 menampilkan status dengan font besar (NYALA / SIANG / MENUNGGU) dan hitung mundur.

4.3(6)
11
Sistem Alarm Gerakan ESP32 (PIR + Buzzer + LED + Telegram)
#145Mahir
Premium

Sistem Alarm Gerakan ESP32 (PIR + Buzzer + LED + Telegram)

Sistem alarm keamanan pintar yang menyalakan buzzer dan LED ketika sensor PIR mendeteksi gerakan, sekaligus mengirim notifikasi instan ke pemilik lewat Telegram. Cooldown 30 detik membatasi seberapa sering alarm berulang; mekanisme ini tidak memvalidasi deteksi PIR atau menghilangkan pemicu palsu. Cocok untuk rumah, garasi, gudang, atau ruang kerja. Dengan ESP32-CAM bisa ditambahkan notifikasi berfoto; dengan ESP32 DevKit V1 klasik, notifikasinya berupa teks.

0.0(0)
9
Sistem Peringatan Laser
#22Menengah
Premium

Sistem Peringatan Laser

Kamu memasang pagar sinar tak terlihat, persis seperti di film. Laser menyorot sensor cahaya di sisi seberang; begitu ada orang lewat dan memutus sinarnya, LED menyala dan buzzer berbunyi, dan ketika

4.8(64)
83
Sistem Keamanan Laser
#23Mahir
Premium

Sistem Keamanan Laser

Persis seperti adegan perampokan dengan laser di film: sinar laser menyorot sensor cahaya, dan begitu ada orang masuk dan memutus sinarnya, LED merah menyala dan buzzer mulai berbunyi. Alarmnya tidak

4.8(60)
77