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

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


📳 Проект: виброохранная сигнализация на KY-002

Датчик вибрации KY-002 и зуммер

Датчик вибрации KY-002 реагирует на удар, стук или попытку сдвинуть охраняемый объект — сейф, шкаф, окно — и включает сирену.

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

KY-002 — датчик вибрации на основе пружинного механического элемента: внутри корпуса находится металлическая пружина рядом с контактным штырьком, и при любом ударе или тряске она на мгновение замыкает цепь. Это чисто механическое "да/нет" событие, а не плавное измерение силы удара, поэтому скетч видит короткие импульсы HIGH, а не постепенно нарастающий сигнал.

Так как сам импульс очень короткий, код на каждое срабатывание запускает сирену на фиксированное время (`alarmDuration`), а не держит её ровно столько, сколько длился физический контакт — иначе сигнал тревоги был бы почти незаметной долей секунды.

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

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

  1. Подключите KY-002: сигнал → D2, VCC → 5V, GND → GND.
  2. Подключите активный зуммер: сигнал → D8, GND → GND.
  3. Закрепите модуль непосредственно на охраняемом объекте (сейфе, двери, окне) так, чтобы он улавливал именно его сотрясение, а не вибрацию всего помещения.
  4. При ложных срабатываниях от общей вибрации пола или здания подстройте чувствительность резистором на плате модуля (если он есть у вашего экземпляра).

Скетч

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

const int vibroPin = 2;
const int buzzerPin = 8;
const unsigned long alarmDuration = 5000; // сколько держать сирену после удара, мс

unsigned long triggerTime = 0;
bool armed = false;

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

void loop() {
  if (digitalRead(vibroPin) == HIGH) {
    triggerTime = millis();
    if (!armed) {
      Serial.println("Обнаружена вибрация!");
    }
    armed = true;
  }

  if (armed && millis() - triggerTime < alarmDuration) {
    digitalWrite(buzzerPin, HIGH);
  } else {
    digitalWrite(buzzerPin, LOW);
    armed = false;
  }
}

Чувствительность KY-002 регулируется подстроечным резистором прямо на плате модуля — при ложных срабатываниях от вибрации пола её стоит немного понизить.

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

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

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

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

← 🟢 индикатор присутствия на мини-PIR HC-SR505…🚧 ИК-барьер на связке KY-005 и KY-022 →

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

Все 2 товара сразу в корзину: 116 ₽ 104 ₽ (экономия 12 ₽)

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

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

Корзина


Поиск



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