Датчик движения HC-SR501 для Arduino: Подключение, Применение и Простой Код

HC-SR501 — PIR-датчик движения. До 7 м, угол 110°. Настройка задержки/чувствительности. 5 В, низкое потребление.

HC-SR501 датчик движения Arduino

Сегодня мы подробно разберём датчик движения HC-SR501 — один из самых популярных PIR-сенсоров для Arduino. Он обнаруживает тепловое излучение движущихся объектов (людей, животных), идеален для систем безопасности, умного дома и энергосбережения. Мы узнаем характеристики, схему подключения, настроим режимы, напишем несколько примеров кода и предложим готовые проекты. Готовы сделать свои устройства «умнее»? Поехали!

Что такое датчик движения HC-SR501?

HC-SR501 — пассивный инфракрасный (PIR) датчик на базе пироэлектрического элемента. Он фиксирует изменение ИК-излучения в зоне обзора (до 7 метров, угол 110°). В режиме ожидания потребляет всего 50 мкА — идеален для батарейных проектов. При обнаружении движения выдаёт HIGH на 2–300 секунд (настраивается). После срабатывания — блокировка на 2.5 сек (режим H/L).

Характеристики HC-SR501

  • Питание: 4.5–20 В (рекомендуется 5 В)
  • Дальность: 3–7 м (регулируется)
  • Угол обзора: < 110°
  • Время задержки: 0.5–300 сек (потенциометр Tx)
  • Чувствительность: регулируется (потенциометр Sx)
  • Режимы: H (повторное срабатывание), L (однократное)
  • Выход: цифровой 3.3 В (HIGH при движении)
  • Время инициализации: 30–60 сек
  • Рабочая температура: -15..+70°C

Режимы работы (джамперы)

  • H (повтор): срабатывает многократно в зоне
  • L (один раз): одно срабатывание, затем блокировка

Схема подключения к Arduino

Схема HC-SR501 Arduino

Подключение простое:

  • VCC → 5 В
  • GND → GND
  • OUT → D8 (или любой цифровой пин)

Совет: добавьте конденсатор 100 мкФ между VCC и GND для стабильности.

Простой код: Обнаружение движения

const int pirPin = 8;
const int ledPin = 13;

void setup() {
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  Serial.println("Инициализация HC-SR501... Ждите 60 сек");
  delay(60000); // калибровка
}

void loop() {
  if (digitalRead(pirPin) == HIGH) {
    digitalWrite(ledPin, HIGH);
    Serial.println("Движение обнаружено!");
    delay(100);
  } else {
    digitalWrite(ledPin, LOW);
  }
}
Инициализирует PIR-датчик движения HC-SR501 на пине 8 и светодиод на пине 13.
Запускает последовательный порт на скорости 9600 бод.
В setup() выдерживает 60 секунд для калибровки датчика движения.
В основном цикле:
при обнаружении движения включает светодиод и выводит сообщение в Serial Monitor
при отсутствии движения выключает светодиод.

Код: Умный свет с таймером

Включает реле на 30 сек при движении (режим L):

#define PIR 8
#define RELAY 7
unsigned long timer = 0;

void setup() {
  pinMode(PIR, INPUT);
  pinMode(RELAY, OUTPUT);
  Serial.begin(9600);
  delay(60000);
}

void loop() {
  if (digitalRead(PIR) == HIGH) {
    digitalWrite(RELAY, HIGH);
    timer = millis();
    Serial.println("Свет ВКЛ");
  }
  if (millis() - timer > 30000) {
    digitalWrite(RELAY, LOW);
  }
}
Инициализирует PIR-датчик на пине 8 и реле на пине 7. После старта выдерживает 60 секунд для калибровки PIR-датчика.
При обнаружении движения:
включает реле,
записывает текущее время в timer,
выводит сообщение «Свет ВКЛ» в Serial Monitor.
Если с момента последнего обнаружения движения прошло более 30 секунд, выключает реле.

Применение HC-SR501 в проектах

  • Охрана: движение → сирена + SMS (SIM800L)
  • Умный свет: вход в комнату → включение на 5 мин
  • Экономия: выключение кондиционера при отсутствии
  • Квесты: движение → звук/анимация
  • Животные: автокормушка при приближении
  • Фото/видео: запуск камеры по движению

Проект: Система безопасности с уведомлением

Компоненты: HC-SR501, реле (сирена), DFPlayer (голос), ESP8266 (Telegram).

Логика: движение → сирена 10 сек + голос «Внимание!» + push-уведомление.

Советы по использованию

  • Калибровка: 30–60 сек после включения — не двигайтесь
  • Линза Френеля: не закрывайте, не царапайте
  • Избегайте: прямого солнца, источников тепла (лампы, обогреватели)
  • Монтаж: высота 1.8–2.2 м, угол 15–30° вниз
  • Питание: стабильные 5 В, >100 мА
  • Несколько датчиков: общий GND, разные пины

Частые проблемы и решения

  • Ложные срабатывания: уменьшите чувствительность, уберите тепло
  • Не срабатывает: проверьте питание, калибровку, линзу
  • Постоянный HIGH: режим H + движение в зоне

Заключение

Датчик движения HC-SR501 — мощный и недорогой инструмент для автоматизации. Он делает проекты интерактивными, экономичными и безопасными. Начните с простого включения света, добавьте реле, уведомления, интеграцию с IoT. Возможности безграничны!

Мы надеемся, что наша подробная инструкция была полезной для вас и поможет вам в создании увлекательных проектов с HC-SR501 и Arduino. Экспериментируйте, делитесь результатами в комментариях! Удачи в ваших исследованиях и творчестве на платформе Arduino!

FAQ — датчик движения HC-SR501 для Arduino

Что такое датчик движения HC-SR501 и как он работает?

HC-SR501 — пассивный инфракрасный (PIR) датчик, фиксирующий изменение теплового излучения движущихся объектов. При обнаружении движения на выходе формируется цифровой сигнал HIGH. Он идеален для систем безопасности и автоматизации умного дома.

Какие характеристики у HC-SR501?

Питание: 4.5–20 В (рекомендуется 5 В), дальность 3–7 м, угол обзора до 110°, время задержки 0.5–300 сек, чувствительность регулируется потенциометром, режимы H (повторное срабатывание) и L (однократное), цифровой выход 3.3 В, рабочая температура -15..+70°C.

Как подключить HC-SR501 к Arduino?

Подключение простое: VCC → 5 В, GND → GND, OUT → цифровой пин Arduino (например, D8). Для стабильной работы можно добавить конденсатор 100 мкФ между VCC и GND рядом с датчиком.

Какие режимы работы поддерживает HC-SR501?

Режим H (повтор) — датчик срабатывает многократно при обнаружении движения. Режим L (один раз) — однократное срабатывание, затем блокировка на время задержки. Настройки задаются джамперами или потенциометрами на плате.

Как использовать HC-SR501 для управления светом с таймером?

Вывод OUT подключается к цифровому пину Arduino, к другому пину подключается реле. В коде при считывании HIGH включается реле на заданное время (например, 30 секунд), после чего реле отключается. Таймер можно реализовать с помощью функции millis().

Где можно применить HC-SR501 в проектах?

Системы безопасности, автоматическое освещение, энергосберегающие проекты, квесты и игрушки, автокормушки для животных, запуск фото/видео оборудования при движении, интеграция с умным домом.

Какие советы помогут правильно использовать HC-SR501?

Не двигайтесь во время калибровки (30–60 сек), не закрывайте линзу Френеля, избегайте прямого солнца и источников тепла, монтируйте на высоте 1.8–2.2 м с углом вниз 15–30°, используйте стабильное питание 5 В, при нескольких датчиках соединяйте общий GND и разные сигнальные пины.