Инфракрасный датчик движения HC-SR501
![]() |
![]() |
![]() |
![]() |
Модель: HC-SR501
Инфракрасный датчик контроля движения
Чувствительность и время проведения могут быть скорректированы
Рабочее напряжение Диапазон: DC 4.5 В-20 В
Потребляемый ток: <60ua
Выходное напряжение: высокий/низкий уровень сигнала: 3.3 В TTL выход
Расстояние обнаружения: 3-7М (можно отрегулировать)
Дальность обнаружения: <140 °
Время задержки: 5-200 S (может быть скорректирована, по умолчанию 5S +-3%)
Задержка: 2.5 S (по умолчанию)
Рабочая температура: -20-+ 80 °C
Размер: 3.2 см x 2.4 см x 1.8 см
![]() |
![]() |
Подключение PIR датчика движения к Arduino
Датчик выдает цифровой сигнал, так что все, что вам необходимо - считывать с пина Arduino сигнал HIGH (рбнаружено движение) или LOW (движения нет).
При этом не забудьте установить коннектор в позицию H!
Подайте питание 5 вольт на датчик. Землю соежинети с землей. После этого соедините пин сигнала с датчика с цифровым пином на Arduino. В данном примере использован пин 2.
Программа простая. По сути она отслеживает состояние пина 2. А именно: какой на нем сигнал: LOW или HIGH. Кроме того, віводится сообщение, когда состояние пина меняется: есть движение или движения нет.
Sketch code_1
/*
GND на любой из GND пинов ардуино
VCC на + 5 вольт на ардуино
OUT на любой из цифровых входов/выходов ардуино (в примере подсоединено к 2)
Самым простым примером работы с датчиком движения является следующий скетч. При обнаружении движения зажигается светодиод подключенный к пину 13, а также в порт пишется состояние датчика.
*/
#define pirPin 2 #define LedPin 13 void setup() { Serial.begin(9600); pinMode(pirPin, INPUT); pinMode(LedPin, OUTPUT); } void loop() { int pirVal = digitalRead(pirPin); //Если обнаружили движение if (pirVal == HIGH) { digitalWrite(LedPin, HIGH); Serial.println("Motion detected"); delay(300); } else { Serial.println("No motion"); digitalWrite(LedPin, LOW); delay(300); } }
Sketch code_2
/*
* проверка PIR датчика движения
*/
int pirPin = 8;
int val;
void setup() {
Serial.begin(9600);
}
void loop() {
// Читаем состояние PIR
val = digitalRead(pirPin);
// Если обнаружили движение
if (val == LOW) {
// равно 0
Serial.println("no movement");
} else {
// равно 1
Serial.println("movement!");
}
delay(1000);
}
Sketch code_3
/*
* проверка PIR датчика движения
*/
int ledPin = 13; // инициализируем пин для светодиода
int inputPin = 2; // инициализируем пин для получения сигнала от пироэлектрического датчика движения
int pirState = LOW; // начинаем работу программы, предполагая, что движения нет
int val = 0; // переменная для чтения состояния пина
void setup() {
pinMode(ledPin, OUTPUT); // объявляем светодиод в качестве OUTPUT
pinMode(inputPin, INPUT); // объявляем датчик в качестве INPUT
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin); // считываем значение с датчика
if (val == HIGH) { // проверяем, соответствует ли считанное значение HIGH
digitalWrite(ledPin, HIGH); // включаем светодиод
if (pirState == LOW) {
// мы только что включили
Serial.println("Motion detected!");
// мы выводим на серийный монитор изменение, а не состояние
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // выключаем светодиод
if (pirState == HIGH){
// мы только что его выключили
Serial.println("Motion ended!");
// мы выводим на серийный монитор изменение, а не состояние
pirState = LOW;
}
}
}
Для работы с пироэлектрическим датчиком не всегда нужен микроконтроллер. Порой можно обойтись и простым реле.