Урок 23: Датчик Движения PIR

1. Введение

Пироэлектрический инфракрасный датчик движения (PIR) может обнаруживать инфракрасные сигналы от движущегося человека или животного и выдавать переключающие сигналы. Он широко применяется для автоматизации освещения, сигнализации и других задач обнаружения движения.

Современные PIR-датчики для Arduino компактны, надёжны, экономичны и просты в использовании.

Внешний вид PIR-датчика (HC-SR501)

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: время отсчитывается с каждого нового движения (по умолчанию).

Элементы настройки HC-SR501

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

5. Подключение

Схема подключения PIR-датчика к Arduino
  • VCC — 5V Arduino

  • GND — GND Arduino

  • OUT — цифровой пин 3 Arduino

6. Пример кода

pir_motion_sensor.ino
//////////////////////////////////////////////////////////
//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/