Модуль детектора вибрации KY-002

Узнайте всё о модуле детектора вибрации KY-002: характеристики, распиновка, схемы подключения, документация и примеры кода для ESP32, Arduino, Raspberry

Датчики движения Digital

Обзор

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

KY-002 — это модуль детектора вибрации с цифровым выходом. Он использует механизм с проводящей пружиной, который замыкает цепь при обнаружении вибрации, отправляя цифровой сигнал в микроконтроллеры ESP32 и Arduino. Идеально подходит для систем безопасности, интерактивных устройств и мониторинга.

Модуль KY-002
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы

О модуле детектора вибрации KY-002

Семейство KY-0xx содержит множество недорогих датчиков для DIY-проектов, и KY-002 — это модуль переключателя вибрации, предназначенный для обнаружения ударов и движений. Используя механизм с проводящей пружиной, он замыкает цепь на мгновение при обнаружении вибрации, посылая цифровой сигнал в микроконтроллеры, такие как ESP32 и Arduino. Это делает его идеальным для обнаружения движения в системах безопасности, интерактивных устройствах и системах мониторинга.

Ключевые особенности

  • Обнаружение ударов и вибрации – Активируется при обнаружении движения или удара.
  • Простой цифровой выход – Легко интерфейсируется с ESP32, Arduino и другими МК.
  • Компактный и малопотребляющий – Подходит для проектов на батарейках.
  • Универсальные применения – Используется в сигнализациях, устройствах с реакцией на движение и системах мониторинга.

Своей надежной способностью обнаружения движения, KY-002 — отличный выбор для интерактивных и охранных приложений. 🚀

Где купить

Приобретите KY-002

Технические характеристики

Характеристики KY-002

Полные технические характеристики модуля детектора вибрации KY-002.

Напряжение питания
3.3В – 5В
Размеры
18.5 × 15 мм
Механизм обнаружения
Проводящая пружина
Тип выхода
Цифровой сигнал
Скачать полный даташит
Конфигурация пинов

Распиновка KY-002

KY-002 — это 3‑пиновый модуль обнаружения вибрации/ударов:

Визуальная диаграмма распиновки
Основное
Распиновка KY-002
Всего выводов
3
Типы
Питание + цифра
Быстрые советы
  • Выход — цифровой (LOW при вибрации).
  • Механизм — проводящая пружина замыкается при ударе.
  • Подтяжка — внутренний подтягивающий резистор (активируется кодом).
Описание выводов
Название Тип Описание Примечания
1 - (Minus) Питание Подключение к земле (GND) Общая земля
2 Middle Питание Подача питания 3.3В или 5В
3 S (Signal) Выход Цифровой выход LOW при обнаружении вибрации
Руководство по подключению

Подключение KY-002 к ESP32

Для подключения KY-002 к ESP32 используйте цифровой вход (нет I2C/UART, только цифровой сигнал). Подключите пин питания, землю и сигнальный вывод к любому GPIO ESP32. Может потребоваться программный дебаунсинг для фильтрации ложных срабатываний.

Схема подключения
Рекомендуемая (цифровой вход)
Подключение KY-002 к ESP32
Подключений
3
Статус
Все обязательны
Протокол
Digital
Подключения пинов
Вывод KY-002 Подключение Вывод ESP32 Описание
- (Minus) обязательно GND Общая земля
Middle обязательно 3.3V Питание (3.3В)
S (Signal) обязательно GPIO4 Цифровой вход (любой GPIO)
📌 Цифровой выход (LOW при вибрации) ⚡ Питание: 3.3В (рекомендуется) 🔧 Дебаунсинг: требуется программный 🎯 Чувствительность: фиксированная ⚡ Низкое энергопотребление 🚨 Применение: сигнализации, датчики движения
Помощь и поддержка

Устранение неполадок KY-002

Распространённые проблемы и решения, которые помогут запустить датчик.

Нет реакции от модуля KY-002
Даже при ударах модуль не реагирует

Проблема: модуль не срабатывает при вибрации или ударе.

Возможные причины: неправильные подключения, отсутствие питания, неправильная настройка пина GPIO в коде.

Решение: проверьте все соединения, убедитесь в подаче напряжения 3.3В или 5В, проверьте номер пина в коде. Убедитесь, что настройка пина как INPUT_PULLUP (если используется внутренний подтягивающий резистор).

Ложные срабатывания вибрации
Модуль срабатывает без вибрации

Проблема: модуль часто срабатывает без реальной вибрации.

Решение: уменьшите внешние помехи и вибрацию, реализуйте программный дебаунсинг в коде (например, добавив задержку или фильтрацию), надёжно закрепите модуль, чтобы избежать случайных срабатываний.

Модуль не определяется как цифровой вход
Нестабильное состояние пина

Проблема: цифровой вход показывает нестабильное состояние.

Решение: используйте внутренний подтягивающий резистор ( INPUT_PULLUP в Arduino) или внешний подтягивающий резистор 10кОм. Проверьте, что пин правильно настроен как INPUT, а не OUTPUT.

Советы по отладке

Serial монитор
Проверка логов и состояния датчика
Используйте Serial Monitor для просмотра цифрового состояния пина. Добавьте отладочный вывод, чтобы видеть, когда пин переходит в LOW. Пример: Serial.println(digitalRead(VIBRATION_PIN));
Проверка напряжения
Мультиметр и целостность цепи
Используйте мультиметр для проверки напряжения питания (должно быть 3.3В или 5В) и целостности соединений. Убедитесь, что пин сигнала не «висит в воздухе».

Дополнительные ресурсы

Примеры кода

Примеры программирования KY-002

Готовые к использованию примеры кода для различных платформ и фреймворков

Пример для Arduino

Совместим с Arduino IDE и платами ESP32

C++
#define VIBRATION_PIN 10  // Пин подключения сигнала KY-002
#define LED_PIN 13        // Пин встроенного светодиода (например, на Arduino Uno)

void setup() {
    // Настройка пина датчика как вход с внутренней подтяжкой к питанию
    pinMode(VIBRATION_PIN, INPUT);
    digitalWrite(VIBRATION_PIN, HIGH); // Включаем внутренний подтягивающий резистор

    // Настройка пина светодиода как выход
    pinMode(LED_PIN, OUTPUT);

    // Инициализация последовательного порта
    Serial.begin(9600);
    Serial.println("KY-002: детектор вибрации запущен");
}

void loop() {
    // Чтение состояния пина датчика
    int sensorValue = digitalRead(VIBRATION_PIN);

    // При обнаружении вибрации пин становится LOW
    if (sensorValue == LOW) {
        Serial.println("Обнаружена вибрация!");
        digitalWrite(LED_PIN, HIGH);  // Включить светодиод
        delay(100);                   // Поддержать 100 мс
        digitalWrite(LED_PIN, LOW);   // Выключить светодиод
    }

    delay(100);  // Небольшая задержка для стабильности
}

Этот Arduino скетч настраивает пин 10 как цифровой вход для датчика KY-002 и пин 13 как выход для светодиода. Датчик использует внутренний подтягивающий резистор (команда digitalWrite(pin, HIGH) после pinMode(INPUT)), чтобы пин не был «подвешен». Когда происходит вибрация, пин датчика переходит в состояние LOW (пружина замыкается на землю), что вызывает включение светодиода и вывод сообщения в Serial Monitor.

Примечание: Для ESP32 в Arduino IDE используйте pinMode(VIBRATION_PIN, INPUT_PULLUP); вместо двух отдельных команд.

Пример для ESP-IDF

Официальный фреймворк Espressif для разработки IoT

C++
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"

#define VIBRATION_PIN GPIO_NUM_4  // Пин подключения сигнала KY-002
#define LED_PIN GPIO_NUM_2        // Пин светодиода (встроенный на многих платах)

void app_main(void) {
    // Настройка пина датчика как вход с подтяжкой к питанию
    gpio_set_direction(VIBRATION_PIN, GPIO_MODE_INPUT);
    gpio_set_pull_mode(VIBRATION_PIN, GPIO_PULLUP_ONLY);

    // Настройка пина светодиода как выход
    gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);

    printf("KY-002: детектор вибрации запущен\n");

    while (1) {
        // Чтение уровня пина
        int sensor_value = gpio_get_level(VIBRATION_PIN);

        // При вибрации пин становится 0 (LOW)
        if (sensor_value == 0) {
            printf("Обнаружена вибрация!\n");
            gpio_set_level(LED_PIN, 1);  // Включить светодиод
            vTaskDelay(pdMS_TO_TICKS(100));
            gpio_set_level(LED_PIN, 0);  // Выключить светодиод
        }

        vTaskDelay(pdMS_TO_TICKS(100));  // Задержка для стабильности
    }
}

В этом примере для ESP-IDF используется GPIO4 для подключения сигнала KY-002 и GPIO2 для светодиода. Функция gpio_set_pull_mode(VIBRATION_PIN, GPIO_PULLUP_ONLY) активирует внутренний подтягивающий резистор ESP32. Когда датчик обнаруживает вибрацию, его контакты замыкаются, и пин переходит в состояние LOW (0). Код включает светодиод на 100 мс и выводит сообщение в консоль через printf().

Пример для ESPHome

Конфигурация ESPHome для Home Assistant

YAML
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP
    name: "KY-002 Vibration Sensor"
    filters:
      - delayed_on: 10ms
      - delayed_off: 10ms
    on_press:
      - then:
          - lambda: |-
              ESP_LOGD("sensor", "Vibration detected!");

Эта конфигурация ESPHome задаёт бинарный сенсор на GPIO4 с внутренней подтяжкой INPUT_PULLUP. Фильтры delayed_on и delayed_off по 10 мс служат для дебаунсинга — они игнорируют очень короткие сигналы, предотвращая ложные срабатывания. При обнаружении вибрации (переход LOW → HIGH из-за подтяжки) выполняется лямбда, которая пишет сообщение в лог ESPHome. Сенсор автоматически доступен в Home Assistant.

Пример для PlatformIO

Профессиональная среда разработки

C++

platformio.ini

[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200

src/main.cpp

#include <Arduino.h>

#define VIBRATION_PIN 4  // GPIO4 для сигнала KY-002
#define LED_PIN 2        // GPIO2 для светодиода

void setup() {
    // Настройка пина датчика с внутренней подтяжкой
    pinMode(VIBRATION_PIN, INPUT_PULLUP);

    // Настройка пина светодиода
    pinMode(LED_PIN, OUTPUT);

    // Инициализация Serial
    Serial.begin(115200);
    Serial.println("KY-002: детектор вибрации started");
}

void loop() {
    // Чтение состояния датчика (LOW при вибрации)
    if (digitalRead(VIBRATION_PIN) == LOW) {
        Serial.println("Обнаружена вибрация!");
        digitalWrite(LED_PIN, HIGH);  // Включить светодиод
        delay(100);
        digitalWrite(LED_PIN, LOW);   // Выключить
    }

    delay(100);  // Небольшая пауза
}

PlatformIO позволяет организовать проект с файлом platformio.ini для конфигурации платы и фреймворка. В этом примере используется Arduino-совместимый код для ESP32. Пин датчика настроен как INPUT_PULLUP, что активирует внутренний подтягивающий резистор ESP32. При обнаружении вибрации (LOW) включается светодиод на GPIO2 и выводится сообщение в Serial Monitor со скоростью 115200 бод.

Пример для MicroPython

Python для микроконтроллеров

Python
import machine
import time

# Настройка пинов
VIBRATION_PIN = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP)  # GPIO4, подтяжка к питанию
LED_PIN = machine.Pin(2, machine.Pin.OUT)                            # GPIO2 как выход

while True:
    # Чтение состояния датчика (0 = вибрация)
    if VIBRATION_PIN.value() == 0:
        print("Обнаружена вибрация!")
        LED_PIN.on()      # Включить светодиод
        time.sleep(0.1)
        LED_PIN.off()     # Выключить
    time.sleep(0.1)

Этот скрипт MicroPython использует GPIO4 для подключения сигнала KY-002 с активацией внутренней подтяжки (machine.Pin.PULL_UP). Пин GPIO2 управляет светодиодом. В основном цикле проверяется значение пина: при обнаружении вибрации пин становится 0, что приводит к включению светодиода на 0.1 секунды и выводу сообщения в консоль REPL. Задержка 0.1 секунды между проверками снижает нагрузку на процессор.

Итоги KY-002

Модуль детектора вибрации KY-002 — это простой и эффективный цифровой датчик для обнаружения ударов и движения. Он поддерживает несколько платформ разработки, включая Arduino, ESP-IDF, ESPHome, PlatformIO и MicroPython, и отлично подходит для проектов безопасности и интерактивных устройств.

Рекомендации

Для стабильной работы используйте внутреннюю подтяжку INPUT_PULLUP или внешний резистор 10кОм. Реализуйте программный дебаунсинг (например, задержку или фильтрацию), чтобы отсечь кратковременные помехи. Надежно крепите модуль, чтобы избежать ложных срабатываний от вибрации корпуса.

Безопасность прежде всего

Проверьте напряжение питания (3.3В или 5В) перед подключением. Не подавайте на модуль напряжение выше 5В, чтобы не повредить внутреннюю пружину и электронику. Убедитесь в правильности подключения пинов: пин «Middle» — питание, «-» — земля, «S» — сигнальный GPIO.

Готовы начать создавать?

Теперь, когда у вас есть вся необходимая информация, пора интегрировать KY-002 в проект на ESP32 и воплотить идеи в жизнь!