🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🏠 Проект: двухзонная охранная сигнализация на HC-SR505

Два датчика HC-SR505 и зуммер

Два компактных PIR-датчика HC-SR505 контролируют разные зоны — например, прихожую и коридор — а Arduino подаёт разное число коротких сигналов в зависимости от того, какая зона сработала.

Как это работает

HC-SR505 — миниатюрный пироэлектрический датчик движения (PIR): он реагирует на изменение инфракрасного излучения в поле обзора, то есть фактически на движение тёплого объекта (человека) относительно фона. Два датчика, развёрнутые в разные стороны или комнаты, независимо следят за своими зонами и выдают HIGH на собственном пине при обнаружении движения именно в своей зоне.

Как и в проекте с герконами, здесь используется тот же приём кодирования места срабатывания числом звуковых сигналов: один писк — сработала первая зона, два — вторая. Это позволяет одним зуммером без дисплея сразу понять, в каком именно помещении было движение.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Подключите HC-SR505 #1 (зона 1): OUT → D2, VCC → 5V (или 3.3V), GND → GND.
  2. Подключите HC-SR505 #2 (зона 2): OUT → D3, VCC → 5V (или 3.3V), GND → GND.
  3. Подключите активный зуммер: сигнал → D8, GND → GND.
  4. Разместите датчики так, чтобы их зоны обзора не перекрывались, иначе будет сложно понять, какой из них реально сработал.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

const int zone1Pin = 2;
const int zone2Pin = 3;
const int buzzerPin = 8;

void beep(int times) {
  for (int i = 0; i < times; i++) {
    digitalWrite(buzzerPin, HIGH);
    delay(150);
    digitalWrite(buzzerPin, LOW);
    delay(150);
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(zone1Pin, INPUT);
  pinMode(zone2Pin, INPUT);
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  if (digitalRead(zone1Pin) == HIGH) {
    Serial.println("Движение в зоне 1");
    beep(1); // зона 1 — один сигнал
    delay(1000);
  }

  if (digitalRead(zone2Pin) == HIGH) {
    Serial.println("Движение в зоне 2");
    beep(2); // зона 2 — два сигнала
    delay(1000);
  }
}

Число коротких сигналов в `beep()` сразу подсказывает, какая зона сработала, без вывода на экран — удобно для компактной сигнализации без дисплея.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 📋 RFID-журнал доступа с EEPROM на RC522 и AT…📶 ультразвуковой охранный барьер на HC-SR04 →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 154 ₽ 139 ₽ (экономия 15 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA