Урок 23: Датчик Движения PIR
1. Введение
Пироэлектрический инфракрасный датчик движения (PIR) может обнаруживать инфракрасные сигналы от движущегося человека или животного и выдавать переключающие сигналы. Он широко применяется для автоматизации освещения, сигнализации и других задач обнаружения движения.
Современные PIR-датчики для Arduino компактны, надёжны, экономичны и просты в использовании.

2. Необходимое оборудование
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
Датчик движения PIR (HC-SR501) |
3 |
Перемычки |
1 |
USB-кабель |
3. Спецификация
Параметр |
Значение |
---|---|
Входное напряжение |
3.3 ~ 5V (максимум 6V) |
Рабочий ток |
15uA |
Рабочая температура |
-20 ~ 85 ℃ |
Выходное напряжение |
Высокое 3V, Низкое 0V |
Время задержки выхода |
2.3–3 сек |
Угол обнаружения |
100° |
Дальность обнаружения |
7 метров |
Индикатор выхода |
Светодиод |
Токовая нагрузка на пин |
100mA |
4. Настройка HC-SR501
Модуль HC-SR501 оснащён двумя потенциометрами и перемычкой:
Потенциометр SENS — регулирует чувствительность (дальность обнаружения).
Потенциометр TIME — регулирует время удержания выхода в высоком уровне после обнаружения движения.
Перемычка L/H — режим работы: - L: время отсчитывается с первого срабатывания (подходит для автоматизации освещения). - H: время отсчитывается с каждого нового движения (по умолчанию).

По часовой стрелке — увеличение значения, против — уменьшение.
5. Подключение

VCC — 5V Arduino
GND — GND Arduino
OUT — цифровой пин 3 Arduino
6. Пример кода
//////////////////////////////////////////////////////////
//PIR
byte sensorPin = 3;
byte indicator = 13;
void setup()
{
pinMode(sensorPin, INPUT);
pinMode(indicator, OUTPUT);
Serial.begin(9600);
}
void loop()
{
byte state = digitalRead(sensorPin);
digitalWrite(indicator, state);
if (state == 1) Serial.println("Somebody is in this area!");
else if (state == 0) Serial.println("No one!");
delay(500);
}
//////////////////////////////////////////////////////////
7. Результат теста
Если датчик обнаруживает движение поблизости, индикатор L (D13) на плате загорится, и на серийном мониторе будет отображаться сообщение «Somebody is in this area!» (Кто-то в этой области!). Если движение не обнаружено, индикатор D13 на плате будет выключен, и на серийном мониторе будет отображаться сообщение «No one!» (Никого нет!).
8. Частые ошибки
Датчик не реагирует — проверьте питание и правильность подключения.
Ложные срабатывания — уменьшите чувствительность, избегайте сквозняков и прямого солнечного света.
Датчик не сбрасывает сигнал — уменьшите время задержки.
9. Практические задачи
Автоматическое включение света при движении.
Сигнализация при обнаружении движения.
Счётчик посетителей.
10. Идеи для расширения
Использование нескольких датчиков для покрытия большой площади.
Передача сигнала на смартфон или в интернет (IoT).
Управление другими устройствами (реле, сирена, камера).
Подробнее о модуле HC-SR501: https://randomnerdtutorials.com/arduino-pir-motion-sensor/