Приобретите KY-031 Датчик удара (Knock Sensor)
Обзор
KY-031 — это модуль датчика удара, который определяет физические воздействия или вибрации. При обнаружении удара он выдает цифровой сигнал, что делает его подходящим для интерактивных проектов, систем безопасности или любых установок, требующих обнаружения касаний.
KY-031 — это простой модуль датчика удара, разработанный для обнаружения резких ударов или сильных вибраций. Внутри модуля находится пружинный контакт, который замыкается при механическом воздействии.
Быстрая навигация
<div class="rounded-2xl border border-slate-200 dark:border-slate-800 bg-white dark:bg-slate-900 p-5">
<h3 class="text-sm font-semibold text-slate-900 dark:text-white uppercase tracking-wider mb-4">Примеры кода</h3>
<div class="space-y-2">
<a href="#arduino" class="flex items-center gap-3 p-2 rounded-xl hover:bg-slate-50 dark:hover:bg-slate-800/50 transition-colors group">
<div class="w-8 h-8 rounded-lg bg-blue-100 dark:bg-blue-900/30 flex items-center justify-center shrink-0">
<img src="/img/UacrygeoB1-40.png" alt="Arduino" class="w-5 h-5 !my-0" />
</div>
<div class="min-w-0">
<div class="text-sm font-medium text-slate-700 dark:text-slate-300 group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors">Arduino</div>
<div class="text-[10px] text-slate-500 uppercase">C++ Framework</div>
</div>
</a>
<a href="#esp-idf" class="flex items-center gap-3 p-2 rounded-xl hover:bg-slate-50 dark:hover:bg-slate-800/50 transition-colors group">
<div class="w-8 h-8 rounded-lg bg-orange-100 dark:bg-orange-900/30 flex items-center justify-center shrink-0">
<img src="/img/32WN7tz--V-40.png" alt="ESP-IDF" class="w-5 h-5 !my-0" />
</div>
<div class="min-w-0">
<div class="text-sm font-medium text-slate-700 dark:text-slate-300 group-hover:text-orange-600 dark:group-hover:text-orange-400 transition-colors">ESP-IDF</div>
<div class="text-[10px] text-slate-500 uppercase">Native SDK</div>
</div>
</a>
<a href="#micropython" class="flex items-center gap-3 p-2 rounded-xl hover:bg-slate-50 dark:hover:bg-slate-800/50 transition-colors group">
<div class="w-8 h-8 rounded-lg bg-yellow-100 dark:bg-yellow-900/30 flex items-center justify-center shrink-0">
<img src="/img/U_FT8ja_jJ-40.png" alt="MicroPython" class="w-5 h-5 !my-0" />
</div>
<div class="min-w-0">
<div class="text-sm font-medium text-slate-700 dark:text-slate-300 group-hover:text-yellow-600 dark:group-hover:text-yellow-400 transition-colors">MicroPython</div>
<div class="text-[10px] text-slate-500 uppercase">Python</div>
</div>
</a>
</div>
</div>
Где купить
Приобрести KY-031
Доступен в большинстве магазинов электроники
Почему этот модуль?
-
Очень низкая стоимость и простота подключения.
-
Не требует сложных библиотек — работает как обычная кнопка.
-
Совместим с логикой 3.3В и 5В.
Цены указаны ориентировочно. Мы можем получать комиссию от покупок (Amazon Associate).
Характеристики KY-031
Модуль KY-031 является простым датчиком вибрации/удара, работающим на принципе механического замыкания контактов.
Распиновка KY-031
Модуль оснащен 3-контактным разъемом для подключения к контроллеру.
| № | Пин | Назначение |
|---|---|---|
| 1 | - | GND (Общий - Земля) |
| 2 | Middle | VCC (Питание 3.3В - 5В) |
| 3 | S | Signal (Цифровой выход) |
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div class="p-4 rounded-xl border border-slate-100 dark:border-slate-800 bg-slate-50 dark:bg-slate-800/50">
<div class="flex items-center gap-2 mb-2">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-purple-500"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
<span class="text-xs font-bold uppercase text-slate-500">Защита</span>
</div>
<p class="text-xs text-slate-600 dark:text-slate-400 !my-0">Используйте резистор 10кОм, если на пине Signal есть шумы.</p>
</div>
<div class="p-4 rounded-xl border border-slate-100 dark:border-slate-800 bg-slate-50 dark:bg-slate-800/50">
<div class="flex items-center gap-2 mb-2">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-purple-500"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>
<span class="text-xs font-bold uppercase text-slate-500">Тип выхода</span>
</div>
<p class="text-xs text-slate-600 dark:text-slate-400 !my-0">Активный уровень (HIGH) выдается только в момент удара.</p>
</div>
</div>
Подключение KY-031 к ESP32
Ниже представлена типичная схема подключения модуля к контроллеру ESP32.
| Пин KY-031 | Пин ESP32 | Описание |
|---|---|---|
| - (GND) | GND | Общий провод |
| Middle (VCC) | 3.3V | Питание модуля |
| S (Signal) | GPIO 16 | Вход датчика (Digital Read) |
<div class="bg-amber-50 dark:bg-amber-900/10 rounded-xl p-4 border border-amber-100 dark:border-amber-900/20">
<div class="flex items-center gap-2 mb-2">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-amber-600 dark:text-amber-400"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
<span class="text-sm font-bold text-amber-700 dark:text-amber-400 uppercase tracking-wider">Важное замечание</span>
</div>
<p class="text-xs text-amber-800/80 dark:text-amber-400/80 !my-0 leading-relaxed">
Поскольку датчик имеет механические контакты, может возникать «дребезг» контактов (bounce). Для корректной работы рекомендуется программное устранение дребезга (debounce) или использование небольшого конденсатора.
</p>
</div>
Устранение неполадок KY-031
Датчик не реагирует на удары
Решение: Проверьте правильность подключения пина «S» к цифровому входу контроллера. Убедитесь, что напряжение питания подается верно. Также попробуйте наносить более резкие удары, так как малая чувствительность может быть особенностью пружины внутри модуля.
Ложные срабатывания (шум)
Решение: Активируйте встроенный подтягивающий резистор (PULLUP или PULLDOWN) в коде микроконтроллера. Используйте программный фильтр (delay или счетчик) для игнорирования повторных дребезжащих сигналов после первого срабатывания.
Примеры кода KY-031
Ниже приведены проверенные примеры кода для различных платформ.
Arduino IDE / ESP32
C++ / Wiring
Простой пример
Arduino IDE / ESP32
C++ / Wiring
Простой скетч для чтения состояния датчика через пин 10 (или GPIO 16 на ESP32).
```cpp // Определяем пин подключения датчика const int knockPin = 10; int val;void setup() { pinMode(knockPin, INPUT); // Устанавливаем пин на вход Serial.begin(9600); // Открываем последовательный порт Serial.println(“KY-031 Готов к работе…”); }
void loop() { val = digitalRead(knockPin); // Считываем состояние
// Если обнаружен удар (сигнал HIGH или LOW зависит от версии модуля) if (val == HIGH) { Serial.println(“УДАР ОБНАРУЖЕН!”); delay(200); // Задержка для защиты от дребезга контактов } }
</div>
</details>
<!-- MicroPython -->
<details class="group rounded-2xl border border-slate-200 dark:border-slate-800 bg-white dark:bg-slate-900 overflow-hidden">
<summary class="flex items-center justify-between p-5 cursor-pointer list-none hover:bg-slate-50 dark:hover:bg-slate-800/50 transition-colors">
<div class="flex items-center gap-4">
<div class="w-10 h-10 rounded-xl bg-yellow-100 dark:bg-yellow-900/40 flex items-center justify-center shrink-0">
<img src="/img/U_FT8ja_jJ-40.png" alt="MicroPython" class="w-6 h-6 !my-0" />
</div>
<div>
<h3 class="font-bold text-slate-900 dark:text-white">MicroPython</h3>
<p class="text-xs text-slate-50 uppercase tracking-wide">Python (ESP32/RP2040)</p>
</div>
</div>
<div class="flex items-center gap-3">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-slate-400 group-open:rotate-180 transition-transform"><polyline points="6 9 12 15 18 9"/></svg>
</div>
</summary>
<div class="p-5 border-t border-slate-100 dark:border-slate-800 bg-slate-50/50 dark:bg-slate-900/50">
```python
from machine import Pin
import time
# Настройка пина 16 с подтяжкой к земле
knock_sensor = Pin(16, Pin.IN, Pin.PULL_DOWN)
print("Датчик KY-031 активирован...")
while True:
if knock_sensor.value() == 1:
print("Вибрация / Удар!")
time.sleep(0.5) # Пауза для предотвращения повторных срабатываний
time.sleep(0.01)
</div>
Итоги
Датчик KY-031 Knock Sensor Module — это надежное и недорогое решение для базового обнаружения механических воздействий. Хотя он не подходит для измерения силы удара, его простота делает его идеальным выбором для начинающих и простых проектов автоматизации.
Для повышения чувствительности крепите модуль на жесткую поверхность, которая хорошо передает вибрации.
Не превышайте напряжение питания 5В, чтобы не повредить чувствительные элементы модуля.