Menggunakan Sensor Gerak HC-SR501 dengan Relay dan Kode Arduino
Dalam tutorial ini, kita akan mempelajari cara menggunakan sensor gerak HC-SR501 bersama dengan relay untuk mengendalikan bola lampu AC atau jenis beban lainnya menggunakan Arduino. HC-SR501 adalah sensor gerak inframerah yang dapat mendeteksi gerakan hingga jarak 7 meter, menjadikannya ideal untuk berbagai aplikasi seperti alarm keamanan atau sistem pencahayaan otomatis. Dengan memanfaatkan sensor ini dan relay, Anda dapat membuat proyek yang menyalakan lampu saat gerakan terdeteksi.

Kami akan memberikan panduan langkah demi langkah tentang pengaturan perangkat keras, instruksi pengkabelan, dan kode Arduino yang diperlukan untuk mencapai fungsionalitas ini. Untuk pemahaman yang lebih jelas tentang prosesnya, pastikan untuk menonton video terkait (di video pada 00:00).
Penjelasan Perangkat Keras
Komponen utama dalam proyek ini termasuk sensor gerak HC-SR501, modul relay, dan papan Arduino. Sensor HC-SR501 memiliki tiga pin: VCC, GND, dan OUT. Pin VCC terhubung ke sumber daya (5V), pin GND terhubung ke ground, dan pin OUT mengirim sinyal ke Arduino saat gerakan terdeteksi.
Modul relay berfungsi sebagai sakelar yang dapat mengendalikan perangkat bertegangan tinggi. Modul ini memiliki tiga pin utama: COM (common), NO (normally open), dan NC (normally closed). Dalam pengaturan ini, kita akan menggunakan pin NO, yang terhubung ke beban saat relay diaktifkan. Ini memungkinkan Arduino untuk mengendalikan relay berdasarkan sinyal yang diterima dari sensor gerak.
Detail Datasheet
| Produsen | HC-SR501 |
|---|---|
| Nomor bagian | HC-SR501 |
| Tegangan logika/IO | 5 V |
| Tegangan suplai | 5–20 V |
| Konsumsi daya | 65 mA |
| Sudut deteksi | 120 derajat |
| Jarak deteksi | 3–7 m |
| Suhu operasi | -15 hingga 70 °C |
| Jenis keluaran | Digital |
| Kemasan | Modul |
- Pastikan suplai daya yang tepat (5–20 V) untuk sensor.
- Sesuaikan potensiometer sensitivitas untuk jangkauan deteksi yang optimal.
- Gunakan pin NO pada relay untuk mengendalikan beban secara efektif.
- Berhati-hatilah dengan peringkat arus relay (maks 10 A).
- Uji jangkauan deteksi sensor gerak sebelum instalasi akhir.
- Pertimbangkan pembuangan panas jika menggunakan relay untuk beban tinggi.
Instruksi Pengkabelan

Untuk menghubungkan sensor gerak HC-SR501 dan relay dengan Arduino, mulailah dengan menghubungkan pin VCC sensor gerak ke pin 5V pada Arduino. Selanjutnya, hubungkan pin GND sensor ke salah satu pin GND pada Arduino. Pin OUT dari sensor gerak harus dihubungkan ke pin digital 2 pada Arduino.
Untuk modul relay, hubungkan pin VCC ke pin 5V pada Arduino dan pin GND ke ground. Pin input (sering diberi label IN atau sejenisnya) dari relay harus dihubungkan ke pin digital 4 pada Arduino. Pastikan untuk memeriksa orientasi relay untuk memastikan diatur ke normally open (NO) untuk pengaturan ini. Terakhir, hubungkan beban (misalnya, bola lampu AC) ke relay sesuai dengan spesifikasi relay, pastikan koneksi aman.
Contoh Kode & Penjelasan
Dalam kode Arduino, kita mendefinisikan konstanta untuk pin sensor dan relay. Pin sensor diatur ke SENSOR_PIN, yang ditetapkan ke pin digital 2, dan pin relay diatur ke RELAY_PIN, ditetapkan ke pin digital 4. Konfigurasi ini memungkinkan kita untuk membaca keluaran sensor dan mengendalikan relay sesuai.
const int SENSOR_PIN = 2; // pin Arduino yang terhubung ke keluaran sensor
const int RELAY_PIN = 4; // pin Arduino yang terhubung untuk mengendalikan relay
Dalam fungsi setup(), kita menginisialisasi monitor serial untuk debugging dan mengatur mode pin untuk pin sensor dan relay. Ini memastikan Arduino mengetahui pin mana yang merupakan input dan output.
void setup() {
Serial.begin(9600); // mengatur Serial Monitor untuk menampilkan informasi
pinMode(SENSOR_PIN, INPUT); // Mendefinisikan SENSOR_PIN sebagai Input dari sensor
pinMode(RELAY_PIN, OUTPUT); // Mendefinisikan RELAY_PIN sebagai OUTPUT untuk relay
}
Dalam fungsi loop(), kita terus-menerus memeriksa status sensor gerak. Jika gerakan terdeteksi, kita mencetak pesan ke monitor serial dan menyalakan relay dengan mengaturnya ke low. Jika tidak ada gerakan yang terdeteksi, kita mencetak pesan yang berbeda dan mematikan relay dengan mengaturnya ke high.
void loop() {
int motion = digitalRead(SENSOR_PIN); // membaca pin sensor
if (motion) {
Serial.println("Gerakan terdeteksi");
digitalWrite(RELAY_PIN, LOW); // Menyalakan relay
} else {
Serial.println("===Tidak ada yang bergerak");
digitalWrite(RELAY_PIN, HIGH); // Mematikan relay
}
delay(500);
}
Demonstrasi / Apa yang Diharapkan
Ketika sensor gerak mendeteksi pergerakan, relay akan aktif, memungkinkan daya mengalir ke beban yang terhubung, seperti bola lampu AC. Anda akan melihat bola lampu menyala segera setelah deteksi gerakan. Jika sensor tidak mendeteksi gerakan apa pun, bola lampu akan tetap mati. Perlu diketahui bahwa pengaturan sensitivitas sensor akan memengaruhi jangkauan deteksinya, sehingga penyesuaian mungkin diperlukan untuk kinerja optimal (di video pada 05:00).
Kesalahan umum termasuk pengkabelan yang salah atau melebihi batas arus relay, yang dapat menyebabkan kegagalan. Pastikan semua koneksi aman dan uji pengaturan di lingkungan yang terkendali sebelum penggunaan akhir.
Stempel Waktu Video
- 00:00 Mulai
- 00:35 Penjelasan perangkat keras
- 04:35 Peringkat daya relay
- 06:00 Penjelasan pengkabelan
- 07:53 Penjelasan Kode Arduino
- 09:48 Demonstrasi proyek ini
/*
* This Arduino code uses an HS-SR501 motion sensor and a relay
* and switches an alarm or a device using the relay when motion is detected.
* The device can be an alarm, a light, or any other device.
*
* Written by Ahmad Shamshiri on August 5, 2018, at 12:36 PM for Robojax.com
* in Ajax, Ontario, Canada
* Watch the video instruction for this code: https://youtu.be/QQ7iDagQnQM
* This code has been downloaded from Robojax.com
*/
const int SENSOR_PIN = 2;// the Arduino pin connected to the output (middle) wire of the sensor
const int RELAY_PIN = 4;// the Arduino pin which is connected to control the relay
void setup() {
Serial.begin(9600);// setup Serial Monitor to display information
Serial.println("Robojax Arduino Tutorial");
Serial.println("HC-SR501 sensor with relay");
pinMode(SENSOR_PIN, INPUT);// Define SENSOR_PIN as Input from sensor
pinMode(RELAY_PIN, OUTPUT);// Define RELAY_PIN as OUTPUT for relay
}
void loop() {
// Robojax.com HC-SR501 motion sensor tutorial August 5, 2018
int motion =digitalRead(SENSOR_PIN);// read the sensor pin and stores it in "motion" variable
// if motion is detected
if(motion){
Serial.println("Motion detected");
digitalWrite(RELAY_PIN, LOW);// Turn the relay ON
}else{
Serial.println("===Nothing moves");
digitalWrite(RELAY_PIN,HIGH);// Turn the relay OFF
}
delay(500);
// Robojax.com HC-SR501 motion sensor tutorial August 5, 2018
}
Hal-hal yang mungkin Anda butuhkan
-
Amazon
-
eBay
-
AliExpressPurchase HC-SR501 HC-SR505 HW-MS03 motion sensor from AliExpresss.click.aliexpress.com
Sumber daya & referensi
Belum ada sumber daya.
Berkas📁
Tidak ada file tersedia.