
Интернет-магазин «Неглупый Дом»
HC-SR501 выдаёт HIGH на выходе, когда в зоне обзора появляется движение — этого достаточно, чтобы напрямую управлять зуммером без сложной логики.
HC-SR501 — пироэлектрический (PIR) датчик движения: он реагирует не на любое перемещение объекта, а конкретно на изменение инфракрасного (теплового) излучения в поле зрения линзы Френеля на его куполе. Именно поэтому такие датчики хорошо ловят движение человека или животного (тёплое тело на фоне более холодного помещения), но почти не реагируют, например, на движение неодушевлённых холодных предметов.
На плате датчика есть два подстроечных резистора: один регулирует чувствительность (дальность обнаружения, обычно от 3 до 7 метров), второй — время, на которое выход остаётся в состоянии HIGH после срабатывания (от нескольких секунд до нескольких минут). Рядом с ними обычно есть переключатель-джампер режима: одиночный импульс (L) или повторный импульс (H, обычно установлен по умолчанию) — для сигнализации удобнее режим H, чтобы выход держался HIGH, пока движение продолжается.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить.
const int pirPin = 2; // выход датчика движения HC-SR501
const int buzzerPin = 8; // сигнальный пин активного зуммера
const unsigned long calibrationTime = 30000; // время на калибровку датчика при старте, мс
void setup() {
pinMode(pirPin, INPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
Serial.println("Калибровка датчика движения...");
delay(calibrationTime); // ждём, пока датчик "привыкнет" к тепловому фону помещения
Serial.println("Датчик готов к работе");
}
void loop() {
int motion = digitalRead(pirPin); // считываем состояние выхода датчика
if (motion == HIGH) {
Serial.println("Обнаружено движение!");
}
digitalWrite(buzzerPin, motion == HIGH ? HIGH : LOW); // зуммер повторяет состояние датчика
}
Чувствительность и время удержания сигнала настраиваются подстроечными резисторами прямо на плате датчика, экспериментальным путём под конкретное помещение.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 175 ₽ 158 ₽ (экономия 17 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.