Датчик звука KY-037: включение по 2 хлопкам (Clap Switch)
Простой и надёжный хлопковый выключатель на Arduino: два хлопка — реле/свет включается, ещё два — выключается. Никаких ложных срабатываний, работает стабильно. Идеально для управления светом, вентилятором или любым устройством без пульта и проводов!
Что понадобится
- Arduino Uno / Nano
- Датчик звука KY-037 (или любой аналоговый/цифровой микрофонный модуль)
- Реле 5 В (или светодиод для теста)
- Провода
Схема подключения
- KY-037 DO → D6 (цифровой выход)
- KY-037 VCC → 5 В
- KY-037 GND → GND
- Реле IN → D2
- Светодиод (по желанию) → D13 (встроенный тоже работает)
Полный рабочий скетч
const int soundPin = 6; // KY-037 DO
const int relayPin = 2; // реле
const int ledPin = 13; // светодиод (или встроенный)
unsigned long clapTime = 0;
int clapCount = 0;
bool state = false;
const int interval = 500; // максимум 0.5 сек между хлопками
void setup() {
pinMode(soundPin, INPUT);
pinMode(relayPin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(relayPin, state);
digitalWrite(ledPin, state);
}
void loop() {
if (digitalRead(soundPin) == HIGH) { // хлопок!
if (clapCount == 0) {
clapTime = millis(); // запоминаем время первого хлопка
}
clapCount++;
if (clapCount == 2 && (millis() - clapTime < interval)) {
state = !state; // переключаем состояние
digitalWrite(relayPin, state);
digitalWrite(ledPin, state);
clapCount = 0; // сбрасываем счётчик
}
while (digitalRead(soundPin) == HIGH) delay(10); // защита от дребезга
}
// если прошло > 0.5 сек — сбрасываем счётчик
if (clapCount > 0 && (millis() - clapTime > interval)) {
clapCount = 0;
}
}
распознаёт двойной хлопок с интервалом до 0,5 секунды.
по двойному хлопку переключает состояние реле и светодиода (ВКЛ/ВЫКЛ).
использует таймер на millis() и простую защиту от дребезга.
Настройка чувствительности
Вращайте подстроечный резистор на модуле KY-037:
- Докрутите до включения светодиода на модуле
- Чуть открутите назад
- Хлопните — светодиод должен загораться чётко один раз
Результат
Два быстрых хлопка — реле включается.
Ещё два хлопка — выключается.
Если пауза больше 0.5 сек — счётчик сбрасывается, ложных срабатываний нет!
Что можно добавить
- Три хлопка — ночной режим
- Подключение мощной нагрузки через реле
- ESP8266 + Wi-Fi управление
- Звук подтверждения через пищалку
Итог
За 5 минут у вас готов хлопковый выключатель на Arduino: два хлопка — свет/вентилятор/что угодно включается и выключается. Никаких сложных библиотек, надёжно и стабильно. Идеально для спальни, кладовки или дачи!
Ставьте лайк, если хлопнули и всё заработало, и пишите в комментариях — что будете включать двумя хлопками: свет, музыку или кофеварку?
FAQ — Датчик звука KY-037: включение по 2 хлопкам
Как работает хлопковый выключатель на KY-037?
Программа отслеживает два быстрых хлопка с интервалом не более 500 мс. Если условие выполняется — состояние реле и светодиода переключается. Ложные срабатывания исключены благодаря таймеру и фильтрации дребезга.
Как подключить KY-037 к Arduino?
Цифровой выход DO подключается к пину D6, питание — к 5 В и GND. Реле подключается к пину D2, а светодиод можно использовать встроенный на D13. Модуль работает в цифровом режиме, что снижает шум и повышает стабильность.
Можно ли применить аналоговый вывод AO вместо DO?
Да, но в этом случае потребуется анализ амплитуды сигнала в коде, что усложняет алгоритм. Для хлопкового выключателя рекомендован цифровой выход DO: он уже содержит компаратор и формирует чёткий импульс при хлопке.
Как настроить чувствительность датчика звука?
На модуле есть подстроечный резистор. Установите его почти до загорания светодиода на KY-037, затем немного открутите назад. После этого хлопок должен вызывать ровно один импульс DO.
Что делает задержка в коде после хлопка?
Команда while(digitalRead(soundPin)==HIGH) delay(10); используется как защита от дребезга.
Она позволяет дождаться окончания импульса, чтобы каждый хлопок считался только один раз.
Можно ли увеличить или уменьшить время между хлопками?
Да. Достаточно изменить параметр interval.
Например, const int interval = 700; даст паузу до 0.7 секунды.
Значение подбирается под ваше помещение и громкость хлопков.
Можно ли управлять мощной нагрузкой?
Да. Arduino управляет только входом реле, а реальная нагрузка подключается к контактам реле. Таким образом можно включать лампы, вентиляторы и любые бытовые устройства в пределах мощности реле.
Какие улучшения можно добавить в проект?
Вы можете добавить ночной режим, триггер по 3 хлопкам, управление через ESP8266, а также звуковое подтверждение действия через пьезодинамик. Код легко расширяется дополнительными условиями.