Buat Lampu Otomatis Sensor Pir Arduino

Posted on

Sensor Gerak PIR HC-SR501

Bagaimana cara Buat Lampu Otomatis Dengan Sensor Gerak Arduino? Pada artikel sebelumnya kita sudah mengenal sensor PIR HC SR501 dan bagaimana cara menggunakannya. Pada artikel ini saya akan memandu anda untuk membuat sebuah sistem otomatis yang akan menyalakan lampu ketika terdeteksi adanya gerakan manusia. Kita menggunakan sensor gerak PIR HC-SR501 dan board mikrokontroler Arduino Unountuk membuat sistem ini.

Alat dan Bahan

  1. Arduino Uno
    Arduino Uno adalah salah satu jenis board mikrokontroler yang digunakan sebagai platform pengembangan elektronik. Arduino uno memiliki beberapa pin input dan output yang dapat digunakan untuk mengendalikan berbagai perangkat elektronik.
  2. Sensor PIR HC-SR501
    Sensor PIR adalah sebuah sensor yang dapat mendeteksi gerakan manusia. Salah satu sensor PIR yang sering digunakan adalah HC-SR501. Dalam proyek ini, kita akan menggunakan sensor ini sebagai input untuk menentukan apakah lampu harus dinyalakan atau dimatikan. Jika anda ingin mempelajari konsep dasar atau cara kerja dari sensor HC SR501, silahkan baca disini.
  3. Relay
    Relay adalah sebuah perangkat yang digunakan untuk mengalihkan arus listrik dari satu jalur ke jalur yang lain. Dalam proyek ini, kita akan menggunakan relay untuk mengalihkan arus listrik dari Stop kontak ke lampu, sehingga kita dapat mengendalikan lampu melalui Arduino. Jika anda ingin mengetahui cara kerja relay, silahkan baca artikel relay.
  4. Fitting
    Fitting adalah sebuah perangkat yang digunakan untuk memasang lampu. Fitting dapat berupa segi empat, bulat, atau bentuk lain, tergantung pada jenis lampu yang digunakan.
  5. Lampu
    Lampu adalah perangkat yang mengeluarkan cahaya. Dalam proyek ini, kita akan menggunakan lampu sederhana 220Volt sebagai perangkat yang akan dikendalikan oleh relay.
  6. Kabel Jumper
    Kabel Jumper adalah kabel pendek yang digunakan untuk menghubungkan antar perangkat elektronik seperti sensor, relay, dan lampu dengan board mikrokontroler Arduino.


Rangkaian

Untuk memulai projek ini langkah utama adalah merangkai semua alat dan bahan yang telah disebutkan diatas, seperti pada gambar berikut:

Buat Lampu Otomatis Sensor Gerak Arduino

Untuk memudahkan, berikut adalah tabel koneksi yang dapat anda gunakan:

Arduino UnoSensor PIRModul RelayLampuStop Kontak
5VPlus (+) / VCCVCC
GNDMinus (-) / GNDGND
13IN
2Data (D) / OUT
COMMYa (Fasa)
NOYa
YaYa (Ground)


Kode Program Dasar:

Setelah semua rangkaian telah terpasang, sekarang silahkan upload kode progra berikut ini:

const int sensorPin = 2; // Pin yang digunakan untuk sensor PIR
const int lampuPin = 13; // Pin yang digunakan untuk lampu

void setup() {
  Serial.begin(9600);
  pinMode(sensorPin, INPUT);
  pinMode(lampuPin, OUTPUT);
}

void loop() {

  //Cek Sensor Pir
  int statusSensor = digitalRead(sensorPin); // Baca input dari sensor PIR


  if (statusSensor == HIGH) {  // Jika terdeteksi gerakan

    //Tampilkan status sensor di Serial Monitor
    Serial.println("Ada Orang");

    //Jika anda menggunakan Relay dengan tipe High Level Trigger
    digitalWrite(lampuPin, HIGH); // Nyalakan lampu

    //Jika anda menggunakan Relay dengan tipe Low Level Trigger
    // digitalWrite(lampuPin, LOW); // Nyalakan lampu

  } else {

    //Tampilkan status sensor di Serial Monitor
    Serial.println("Tidak Ada Orang");

    //Jika anda menggunakan Relay dengan tipe High Level Trigger
    digitalWrite(lampuPin, LOW); // Padamkan lampu

    //Jika anda menggunakan Relay dengan tipe Low Level Trigger
    // digitalWrite(lampuPin, HIGH); // Padamkan lampu  }
  }
}

Jika sudah terupload kode program diatas, anda akan dapat melihat hasil melalui alat yang telah dirangkaikan

Program Lanjutan

Sekarang kita akan membuat alat yang akan menghidupkan lampu ketika sensor mendeteksi pergerakan orang dan akan membaca pergerakan selama dalam rentang waktu 4 menit. Jika didalam 4 menit tidak ada pergerakan sama sekali, maka lampu akan mati. Untuk sensor yang digunakan berjumlah 3 sensor PIR, masing-masing terhubung pada pin 10, 11 dan 12.

Konsep Dasar

Prinsip kerjanya adalah saat sensor mendeteksi pergerakan, maka sensor akan mengirimkan logika HIGH ke mikrokontroller, dalam hal ini adalah Arduino Uno.

Maka, mikrokontroller akan berhitung dari 0 hingga 240 detik dengan setiap penjumlahan 0.25 detik.

Dalam 1 detik, mikrokontroller akan membaca data dari sensor sebanyak 4 kali.

Contoh, mikrokontroller mendapatkan data HIGH dari sensor saat sedang menghitung ke detik 100, maka nilai perhitungan akan menjadi 0 kembali.

Dari , kita dapat membuat sensor akan terus menyalakan lampu terus-menerus dan akan mati lampunya jika dalam 4 menit tidak ada pergerakan sama sekali.

Progam menggunakan Millis. Untuk memahami cara kerja Millis(), bisa ke halaman .

Untuk hasil terbaik, mohon putar potensiometer Sensitifitas yang ada pada sensor PIR dengan nilai tertinggi (full ke kanan) dan delay pada nilai terendah (full ke kiri).

int ketentuan = 4 * 60;               //Atur nilai maksimal 4 menit
const unsigned long batasAngka = 250; //Setiap 250 mili detik lakukan perhitungan
unsigned long millisSebelumnya = 0;   //Digunakan untuk millis
unsigned long millisSekarang = 0;     //Digunakan untuk millis
float penghitung = 0;

int sensorPin1 = 10;                  //Pin D10 untuk Sensor 1
int sensorPin2 = 11;                  //Pin D11 untuk Sensor 2
int sensorPin3 = 12;                  //Pin D12 untuk Sensor 3

int kondisiSensorPin1 = 0;            //Untuk menyimpan data HIGH/LOW dari Sensor 1
int kondisiSensorPin2 = 0;            //Untuk menyimpan data HIGH/LOW dari Sensor 1
int kondisiSensorPin3 = 0;            //Untuk menyimpan data HIGH/LOW dari Sensor 1

int lampu = 13;                       //Pin D13 Untuk Lampu/Relay

void setup()
{
  Serial.begin(9600);
  Serial.println("Mulai");

  pinMode(sensorPin1, INPUT);         //Jadikan pin D10 sebagai input
  pinMode(sensorPin2, INPUT);         //Jadikan pin D11 sebagai input
  pinMode(sensorPin3, INPUT);         //Jadikan pin D12 sebagai input
  pinMode(lampu, OUTPUT);             //Jadikan pin D13 sebagai output
}

void loop()
{
  //Ambil data nilai millis
  millisSekarang = millis();

  //Baca nilai dari sensor
  kondisiSensorPin1 = digitalRead(sensorPin1);
  kondisiSensorPin2 = digitalRead(sensorPin2);
  kondisiSensorPin3 = digitalRead(sensorPin3);

  //Kirim data nilai sensor ke serial monitor
  if (kondisiSensorPin1 == HIGH) {Serial.println("Pin 10 HIGH");}
  if (kondisiSensorPin2 == HIGH) {Serial.println("Pin 11 HIGH");}
  if (kondisiSensorPin3 == HIGH) {Serial.println("Pin 12 HIGH");}

  //Jika salah satu dari sensor memberikan sinyal HIGH, maka hidupkan lampu
  if ((kondisiSensorPin1 == HIGH) || (kondisiSensorPin2 == HIGH) || (kondisiSensorPin3 == HIGH))
  {
    digitalWrite(lampu, HIGH);
    Serial.println("Lampu dihidupkan");
    penghitung = 0;
  }

  //Hitung data setiap per 250 milidetik
  if ((millisSekarang - millisSebelumnya) >= batasAngka)
  {
    penghitung = penghitung + .25;
    Serial.print(penghitung);
    Serial.println(" Detik");
    millisSebelumnya = millisSekarang;
  }

  //Jika data yang dihitung telah sampai 4 menit, maka lampu dimatikan
  if (penghitung == ketentuan)
  {
    digitalWrite(lampu, LOW);
    Serial.println("Lampu di matikan");
  }
}

Selesai. Semoga artikel Buat Lampu Otomatis Dengan Sensor Gerak Arduino ini bermanfaat.