MASIGNALPHAS2101
6680671983845063762

Cara Menggunakan Sensor Gerak PIR HC-SR501 dengan Arduino

Cara Menggunakan Sensor Gerak PIR HC-SR501 dengan Arduino
Add Comments
3/31/2020
Sensor PIR HC-SR501 ini biasa digunakan untuk sistem keamanan dan juga sistem penerangan yang dapat diaktifkan secara otomatis.
Pada artikel ini akan dijelaskan beberapa contoh implementasi sensor PIR menggunakan Arduino atau tanpa arduino. Disertai juga penjelasan bagaimana program bekerja. Jadi, kamu dapat membuatnya dengan mudah dan dapat memodifikasi sesuai dengan kebutuhan.

Tutorial ini menggunakan sensor dengan tipe HC-SR01. Tetapi kamu juga dapat menggunakan tipe sensor lain seperti HC-SR505 atau AM312 dengan kode program yang sama. 
Perbedaan utama adalah, sensor yang lebih murah memiliki jangkauan deteksi yang lebih kecil dan tidak memiliki potensiometer untuk menyesuaikan sensitivitasnya.
Komponen yang harus disediakan dalam percobaan ini adalah:
  1. ×1 HC-SR501 PIR
  2. ×1 Arduino Uno
  3. ×1 Breadboard
  4. Kabel Jumper
  5. ×1 Kabel USB
  6. ×1 Resistor 220k
  7. ×1 LED
  8. ×1 Buzzer
Bagaimana cara kerja sensor PIR?
Sensor PIR terdiri dari dua bagian utama:
Elemen Sensor Piroelektrik dan Lensa Fresnel
Elemen sensor piroelektrik dapat mendeteksi radiasi inframerah. Elemen ini dapat menerima semua pergerakan suatu objek dengan suhu tertentu. Yaitu suhu direntang nol (0 Kelvin / -273,15 ° C).
Prinsip kerja elemen sensor piroelektrik
Sensor piroelektrik memiliki dua slot persegi panjang dan di dalamnya terdapat bahan tipis yang memungkinkan radiasi inframerah masuk. Dibelakang sensor ini terdapat dua elektroda terpisah, yang dapat menghasilkan output positif dan output negatif. Kedua elektroda ini dihubungkan sehingga dapat menerima radiasi IR yang masuk. Dan untuk mengatur tinggi rendahnya, bisa memutar potensiometer yang terdapat di samping sensor.

Perhatikan gambar berikut:
Bagian elemen sensor pir
Gambar diatas terdapat kotak kecil seperti kubah itu adalah Lensa Fresnel yang berfungsi untuk memfokuskan radiasi inframerah ke sensor.
Cara kerja lensa fresnel
Untuk informasi lebih lengkap bisa cek datasheet dibawah ini:
HC-SR501 Datasheet
Keterangan Pin Sensor PIR HC-SR501
Di bagian belakang Sensor PIR terdapat dua buat potensiometer dan jumper, yang berfungsi untuk menyesuaikan beberapa parameter berikut:
Keterangan pin sensor pin HC-SR501
Sensitivitas
HC-SR501 memiliki jarak maksimum 7 meter. kamu dapat menyesuaikan jarak dengan memutar potensiometer kekanan dan kekiri, (lihat gambar di atas). Memutar potensiometer searah jarum jam meningkatkan jarak hingga maksimum 7 meter. Memutarnya berlawanan arah jarum jam mengurangi jarak  minimum 3 meter.

Waktu Tunda (delay)
Potensiometer ini digunakan untuk mengatur delaysetelah gerakan terdeteksi. Minimal, delay adalah 3 detik dan maksimal 300 detik (5 menit). Putar potensiometer searah jarum jam untuk meningkatkan delay dan berlawanan arah jarum jam untuk mengurangi delay.

Jumper
Jumper ini digunakan untuk memilih salah satu dari dua mode pemicu. Yaitu, 
L (Trigger tunggal) dan H (Trigger berulang):
  • Jika jumper diletakan di L - Trigger TunggaL, maka output akan merespon cepat setelah gerakan terdeteksi. Namun, kecepatan itu sesuai dengan pengaturan pada potensiomenter. Pada mode ini, setiap gerakan yang baru akan cepat terdeteksi oleh sensor setelah delay yang diatur selesai melaksanakan tugasnya.
  • Jika jumper diletakan di H (Trigger berulang),  maka setiap kali ada gerakan terdeteksi, timer penundaan akan dihidupkan secara berulang. Ini artinya setiap gerakan yang terdeteksi tidak dapat diproses sebelum waktu delay yang diatur selesai.
Perbedaan antara mode trigger tunggal dan berulang ditunjukkan pada gambar di bawah ini.
Perbedaan antara mode pemicu tunggal dan berulang
Perbedaan antara mode pemicu tunggal dan berulang
Menambah Termistor/LDR ke Sensor PIR-HC-SR501
Seperti dapat dilihat pada gambar di bawah ini, HC-SR501 memiliki bantalan solder untuk dua komponen tambahan. Bantalan ini biasanya diberi label ‘RL’ dan ‘RT’.
Menambahkan komponen di sensor PIR
RL - Pin RL yang tersedia di board sensor Pir ini berfungsi untuk menambahkan sensor LDR yang bisa menjadi detektor dan akan beroperasi ketika area deteksi cukup gelap/terang.
RT - Pin ini dimaksudkan untuk termistor. Kamu bisa menambahkan sensor ini untuk membuat sensitivitas sensor tergantung pada suhu sekitar.
Sayangnya, tidak ada informasi tambahan yang disediakan dalam datasheet, jadi saya tidak sepenuhnya yakin tentang nilai komponen apa yang harus digunakan.
Sensor PIR dengan LED Tanpa Arduino
Percobaan yang pertama kamu bisa merangkai seperti pada gambar dibawah:
Sensor PIR dengan LED Tanpa Arduino
Rangkaian pengkabelan sangat sederhana, cukup sambungkan VCC dan GND ke baterai dan LED merah ke pin OUTPUT. Agar keluaran pin output menjadi 3.3 volt saya menggunakan resistor 220ohm
Perhatikan pada saat pertama kali menghidupkan sensor, kamu perlu menunggu 30 - 60 detik agar sensor mulai hidup. Selama mode ini, LED mungkin berkedip beberapa kali. Setelah menunggu sebentar, kamu dapat melambaikan tangan di depan sensor dan LED menyala.
Atau kamu mecoba membuat dengan menggunakan Relay
Baca: Cara Membuat Lampu Otomatis dengan Sensor PIR 


Sensor PIR dengan Arduino
Dengan menghubungkan sensor PIR ke Arduino, kamu dapat menggunakannya untuk mengontrol berbagai macam hal seperti: LED, relay, motor, bel, dll.

Dalam diagram pengkabelan di bawah ini, kamu dapat melihat cara menghubungkannya ke Arduino. Kamu juga dapat membaca sensor dengan salah satu pin input/output. Dalam contoh ini, saya menghubungkannya ke pin digital 2. Pin VCC dan GND masing-masing terhubung ke 5 V dan GND.
Sensor PIR dengan Arduino
Setelah merangkai komponen diatas, upload kode program berikut menggunakan aplikasi Arduino IDE
/* Example code for HC-SR501 PIR motion sensor with Arduino. More info: https://www.hestech.id/ */

// PIN koneksi:
#define pirPin 2
#define ledPin 13

// Membuat variable:
int val = 0;
bool motionState = false; // dimulai dari tidak ada gerakan


void setup() {
  // Konfigurasikan pin sebagai input atau output:
  pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);

  // Mulai komunikasi serial dengan kecepatan 9600:
  Serial.begin(9600);
}

void loop() {
  // Membaca pirPin dan simpan sebagai val:
  val = digitalRead(pirPin);

  // Jika gerakan terdeteksi (pirPin = HIGH), lakukan hal berikut:
  if (val == HIGH) {
    digitalWrite(ledPin, HIGH); // Hidupkan LED.

    // Ubah status gerakan menjadi true (gerakan terdeteksi):
    if (motionState == false) {
      Serial.println("Motion detected!");
      motionState = true;
    }
  }

  // Jika tidak ada gerakan yang terdeteksi (pirPin = LOW), lakukan hal berikut:
  else {
    digitalWrite(ledPin, LOW); // Matikan LED.

    // Ubah status gerakan ke false (tidak ada gerakan):
    if (motionState == true) {
      Serial.println("Motion ended!");
      motionState = false;
    }
  }
}
Setelah terupload, lakukan pergerakan didepan sensor. Kemudian buka serial monitor atau (Ctrl + Shift + M). Maka akan tampil seperti gambar berikut:
Tampilan diserial monitor
Penjelasan program
Kode diatas sangat sederhana dan tidak perlu menambahkan library kedalam Arduino IDE..

Pernyataan #define digunakan untuk mendefinisikan sensor PIR.
val dan motionState, yang merupakan bilangan bulat dan boolean (false / strue). Variabel val digunakan untuk menyimpan output dari sensor PIR (HIGH atau LOW) dan motionState akan berubah menjadi true ketika gerakan terdeteksi dan menjadi false ketika tidak ada gerakan.
// PIN koneksi:
#define pirPin 2
#define ledPin 13

// Membuat variable:
int val = 0;
bool motionState = false; // dimulai dari tidak ada gerakan
Pada setup (), pin diatur sebagai input atau output dengan fungsi pinMode (pin, mode). PirPin adalah input dan ledPin adalah output. Serial Monitor dibuat dengan kecepatan baud 9600. Saat membuka serial monitor juga harus diatur ke 9600 agar dapat menampilkan hasil dari sensor PIR.
void setup() {
  // CKonfigurasikan pin sebagai input atau output:
  pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);

  // Mulai komunikasi serial dengan kecepatan 9600:
  Serial.begin(9600);
}
Dalam loop (), saat masuk pada program ini yang pertama kali bekerja adalah digitalRead (pin). Fungsi ini mengembalikan HIGH atau LOW.
  // Membaca pirPin dan simpan sebagai val:
  val = digitalRead(pirPin);
Kemudian LED dinyalakan dengan fungsi digitalWrite

if (val == HIGH) {
    digitalWrite(ledPin, HIGH); // Hidupkan LED.

    // Ubah status gerakan menjadi true (gerakan terdeteksi):
    if (motionState == false) {
      Serial.println("Motion detected!");
      motionState = true;
    }
  }
Selanjutnya, motionState diubah menjadi true dan pesan ‘Motion detected!’ akan ditampilkan di Serial Monitor.  Jika tidak ada gerakan di depan sensor, val akan berubah menjadi LOW dan LED dimatikan dan pesan ‘Motion ended!’ akan ditampilakan di serial monitor .

Sensor PIR dengan Buzzer Arduino
Dengan menambahkan buzzer pada projek kali ini kamu bisa membuat sistem keamanan menggunakan buzzer. Lihatlah rangkaian berikut:
Sensor PIR dengan Buzzer dan Arduino
Program dibawah ini hampir sama dengan contoh sebelumnya. Hanya saja  ditambahkan fungsi untuk membuat buzzer hidup.
/* Example code to create an alarm system with HC-SR501 PIR motion sensor, buzzer and Arduino. More info: www.hestech.id */

// Pin koneksi:
#define buzzerPin 5
#define pirPin 2
#define ledPin 13

// membuat variabel:
int val = 0;
bool motionState = false; // dimulai dari tidak ada pergerakkan.

void setup() {
  // Konfigurasikan pin sebagai input atau output:
  pinMode(buzzerPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);

  // Serial baud rate diatur 9600:
  Serial.begin(9600);
}

void loop() {
  // membaca pin sensor:
  val = digitalRead(pirPin);

  // jika ada pergerakkan (pirPin = HIGH), maka:
  if (val == HIGH) {
    digitalWrite(ledPin, HIGH); // LED akan hidup
    alarm(500, 1000);  // (duration, frequency).
    delay(150);

    //  motion state di fungsikan menjadi true (motion detected):
    if (motionState == false) {
      Serial.println("Motion detected!");
      motionState = true;
    }
  }

  // Ijika tidak ada pergerakan (pirPin = LOW), maka:
  else {
    digitalWrite(ledPin, LOW); // LED akan mati
    noTone(buzzerPin); // buzzer mati
    delay(150);

    // motion state diatur menjadi false (tidak ada pergerakan):
    if (motionState == true) {
      Serial.println("Motion ended!");
      motionState = false;
    }
  }
}

void alarm(long duration, int freq) {
  tone(buzzerPin, freq);
  delay(duration);
  noTone(buzzerPin);
}

Hal yang perlu diperhatikan ketika merancang sistem sensor PIR ini perlu waktu untuk menginisialisasi dan menyesuaikan keadaan. Hal ini membutuhkan waktu sekitar 1 menit saat pertama kali dinyalakan. Cobalah untuk tidak memberikan gerakan apa pun di depan sensor selama 1 menit dari pertama kali sensor dihidupkan.
Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal