Berdasarkan data dari internet (aliexpress.com) diperoleh data terkait dengan sensor PIR HC-SR501 adalah sebagai berikut ini:
- working voltage range :DC 4.5-20V
- Quiescent Current :50uA
- high output level 3.3 V / Low 0V
- Trigger L trigger can not be repeated / H repeated trigger
- circuit board dimensions :32 * 24 mm
- maximum 110 ° angle sensor
- maximum sensing distance 7 meter
Walaupun dari datasheet tertulis DC 4.5-20V, tetapi saya menggambil sumber tegangan dari papan NodeMCU adalah 3.3 volt.
Gambar 2. Pin NodeMCU V1.0
Sebelum kita mulai alangkah baiknya kita melihat dulu melihat hal terkait dengan sensor HC-SR501 terlebih dahulu sebagaimana yang ditampilkan pada Gambar 2 sebagai berikut:
Gambar 3. Tampilan depan sensor, dengan dibuka casing
Gambar 4. Tampilan belakang sensor PIR HC-SR501
Adapun beberapa setting yang dapat dilakukan pada sensor adalah sebagai berikut:
1. Jumper set ke H: Repeat Trigger, nilai output pada sensor adalah HIGH selama waktu delay atau tetap HIGH sampai dengan tidak adanya pergerakan yang terdeteksi.
2. Jumper set ke L: Single Trigger/Non Repeatable: nilai output pada sensor adalah HIGH selama waktu delay, dan set ke LOW setelah waktu delay terlampaui.
3. Time delay adjust, mengatur waktu berapa lama waktu delay (0.3 s/d 5 menit)
Gambar 5. Adjust Time Delay (0.3 s/d 5 menit)
4. Sensitivity Adjust, mengatur jarak sensitifitas sensor (3-7 meter)
Gambar 3. Atur sensitifitas dan time delay (searah jarum jam lebih sensitif/lebih lama)
5. Pin Power, dihubungkan kesumber power, dalam hal ini saya hubungkan ke pin 3V3 pada board nodeMCU.
6. Pin GND, dihubungkan ke GND pada board nodeMCU (sebelah pin 3V3)
7.
Pin High/Low Output, dihubungkan ke salah satu pin digital pada board
nodeMCU, dalam hal ini saya hubungkan ke pin D1 pada board nodeMCU.
8. Inducting time block, dimana sensor tidak menerima sinyal setelah perubahan output (high ke low)
Catatan: Dalam hal ini jumper saya set ke H.
/*
* PIR sensor tester
*/
int ledPin = D0; // choose the pin for the LED-BUILTIN
int inputPin = D1; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, HIGH); // turn LED ON
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // turn LED OFF
if (pirState == HIGH){
// we have just turned of
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}
* PIR sensor tester
*/
int ledPin = D0; // choose the pin for the LED-BUILTIN
int inputPin = D1; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, HIGH); // turn LED ON
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // turn LED OFF
if (pirState == HIGH){
// we have just turned of
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}
Sesaat setelah upload, atau power on, tunggu 60 detik untuk stabilisasi, jika ada terdeteksi pergerakan maka led built-in warna pada board akan menyalah.
Salam,
Hendra.
maksudnya jumper diset ke h bagaimana ya min?
BalasHapus