Типовий сенсор PIR виглядає так, як показано на зображенні нижче. Для підключення з зовнішніми пристроями він має лише три штативи, а саме VCC, Digital OUT (Data) та GND. На верхній панелі сенсора є спеціальний тип об'єктива Fresnal Lens, який прикриває фактичний піроелектричний датчик. Робота об'єктива Fresnal полягає в тому, щоб зосередити все інфрачервоне випромінювання на піроелектричний датчик. Маємо два потенціометри, один для регулювання чутливості, а інший для регулювання часу затримки.
Оскільки цифровий вивід PIN-коду датчика ПІР або HIGH, або LOW залежно від виявленого руху, ви можете побудувати просту схему для перевірки сенсора PIR HC-SR501.
Перша схема складається з PIR-датчика та світлодіодного індикатора. Коли PIR-датчик HC-SR501 виявляє рухи, світлодіод буде включений. Тривалість, за якою світлодіод увімкнений, можна регулювати за допомогою функції затримки настроювання POT. Схожа аналогова схема випробувань сенсора ПІР показана нижче, але вона складається з зумера. Для керування зуммером може бути використаний NPN-транзистор типу BC547 або 2N2222. Будильник буде активовано, коли датчик виявить будь-який рух. У цьому проекті PIR-датчик виявляє будь-які рухи перед ним і сигнали Arduino. Щоразу, коли будь-який рух виявляється, Arduino активує сигнал у вигляді гудзира.
Ця схема не реалізує великий дизайн, але дає уявлення про те, як інтерфейс PIR Sensor до Arduino і як ми можемо Arduino використовувати дані з PIR Sensor і диск інших вихідних пристроїв або навантажень, як реле, модуль GSM, зуммер тощо.
Схема використання Датчика руху PIR HC-SR501 з Arduino
Необхідні деталі:
- Arduino ONE
- ПІР-СЕНСОР HC-SR501
- 5V Buzzer
- Блокнот
- З'єднувальні дроти
- Блок живлення
Код: Виділити все
int buzzer = 11;
int sensor = 8;
int led = 13;
void setup()
{
pinMode(buzzer, OUTPUT);
pinMode(sensor, INPUT);
pinMode(led, OUTPUT);
digitalWrite(buzzer,LOW);
digitalWrite(sensor,LOW);
digitalWrite(led,LOW);
while(millis()<13000)
{
digitalWrite(led,HIGH);
delay(50);
digitalWrite(led,LOW);
delay(50);
}
digitalWrite(led,HIGH);
}
void loop()
{
if(digitalRead(sensor)==HIGH)
{
digitalWrite(buzzer,HIGH);
delay(3000);
digitalWrite(buzzer,LOW);
while(digitalRead(sensor)==HIGH);
}
}