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
- 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. - 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. - 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. - 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. - Lampu
Lampu adalah perangkat yang mengeluarkan cahaya. Dalam proyek ini, kita akan menggunakan lampu sederhana 220Volt sebagai perangkat yang akan dikendalikan oleh relay. - 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:
Untuk memudahkan, berikut adalah tabel koneksi yang dapat anda gunakan:
Arduino Uno Sensor PIR Modul Relay Lampu Stop Kontak 5V Plus (+) / VCC VCC – – GND Minus (-) / GND GND – – 13 – IN – – 2 Data (D) / OUT – – – – – COMM – Ya (Fasa) – – NO Ya – – – – Ya Ya (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.