Обзор
KY-004 — это модуль с тактильной кнопкой-переключателем, который обеспечивает цифровой выходной сигнал при нажатии. Идеально подходит для приложений с пользовательским вводом в различных электронных проектах. Модуль работает в диапазоне 3.3В–5В и совместим с ESP32, Arduino и другими микроконтроллерами.
KY-004 — простой модуль с кнопкой-переключателем, выдающий цифровой сигнал при нажатии. При необходимости кнопка может использоваться для функций сброса, навигации по меню и управления устройствами. Работает в диапазоне 3.3В–5В.
О модуле KY-004
KY-004 — это простой модуль с тактильной кнопкой-переключателем, который обеспечивает цифровой вход для микроконтроллеров. При нажатии кнопки сигнальный вывод подключается к земле, отправляя LOW-сигнал для запуска события. Модуль работает в диапазоне 3.3В–5В, что обеспечивает совместимость с ESP32, Arduino и другими платами.
⚡ Ключевые особенности
- Активация кнопкой — отправляет LOW-сигнал при нажатии.
- Рабочее напряжение — 3.3В–5В, широкая совместимость.
- Простой цифровой выход — лёгкая интеграция с ESP32, Arduino.
- Универсальное применение — используется для функций сброса, навигации по меню и управляющих интерфейсов.
Компактный дизайн и простой интерфейс делают KY-004 идеальным вариантом для пользовательского ввода, интерактивных устройств и управляемых приложений. 🚀
Приобретите KY-004
Характеристики KY-004
Полные технические характеристики модуля тактильной кнопки KY-004.
Распиновка KY-004
KY-004 — это 3-пиновый модуль тактильной кнопки-переключателя.
- Режим работы — активный LOW (LOW при нажатии).
- Встроенный резистор — подтяжка к питанию на модуле.
- Питание — 3.3В или 5В (любой GPIO).
| Вывод | Тип | Описание | Примечания |
|---|---|---|---|
| 1 Pin (-) | Питание | Подключение земли | GND |
| 2 Pin (+) | Питание | Питание модуля | 3.3V или 5V |
| 3 Pin (S) | Communication | Цифровой сигнальный вывод | LOW при нажатии (активный LOW) |
Подключение KY-004 к ESP32
Для подключения модуля KY-004 к ESP32 используйте цифровой GPIO вывод. Модуль уже содержит встроенную подтяжку к питанию, поэтому внешние резисторы обычно не требуются. Сигнальный вывод藍 provides LOW-сигнал при нажатии кнопки.
| Вывод KY-004 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| 1 Pin (-) обязательно | → | GND | Общая земля |
| 2 Pin (+) обязательно | → | 3.3V или 5V | Питание модуля |
| 3 Pin (S) обязательно | → | GPIO4 (любой цифровой GPIO) | Цифровой сигнал (LOW при нажатии) |
Устранение неполадок KY-004
Распространённые проблемы и решения для модуля тактильной кнопки.
Нет реакции при нажатии кнопки
Кнопка не вызывает никакого отклика в коде
Проблема: нажатие кнопки не регистрируется программой.
Возможные причины: неправильные подключения, отсутствие питания, неверная настройка GPIO в коде.
Решение: проверьте все соединения, убедитесь в подаче напряжения (3.3В или 5В), проверьте настройку пина в коде и режим INPUT_PULLUP. Протестируйте модуль мультиметром.
Ложные срабатывания кнопки
Сигнал появляется без нажатия
Проблема: кнопка срабатывает без физического нажатия.
Причины: контакты замыкаются от вибрации, плохой контакт, помехи.
Решение: реализуйте программный дебаунсинг (задержку 10–50 мс), проверьте целостность контактов, уберите возможные короткие замыкания.
Постоянный LOW на сигнальном пине
Пин всегда в LOW, даже без нажатия
Причина: короткое замыкание на плате модуля или неисправность кнопки.
Решение: проверьте модуль на короткое замыкание мультиметром, осмотрите дорожки, при необходимости замените модуль.
Не работает с 3.3В на ESP32
Датчик не реагирует при питании 3.3В
Проблема: модуль работает только от 5В, но ESP32 имеет 3.3В GPIO.
Решение: KY-004 совместим с 3.3В, но некоторые клоны могут требовать 5В. Если 3.3В не работает, попробуйте питать модуль от 5В (VIN), а сигнальный вывод подключать к GPIO через делитель напряжения или использовать преобразователь уровня. Однако в большинстве случаев 3.3В работает нормально.
Советы по отладке
Serial монитор
Отслеживание состояний кнопки
Проверка мультиметром
Целостность и сопротивление
Дополнительные ресурсы
Примеры программирования KY-004
Готовые примеры кода для разных платформ и фреймворков
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
#define BUTTON_PIN 7
#define LED_PIN 13
void setup() {
pinMode(BUTTON_PIN, INPUT);
digitalWrite(BUTTON_PIN, HIGH); // Включить внутреннюю подтяжку к питанию
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
Serial.println("Тест модуля KY-004 Key Switch");
}
void loop() {
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) {
Serial.println("Кнопка нажата");
digitalWrite(LED_PIN, HIGH);
} else {
Serial.println("Кнопка отпущена");
digitalWrite(LED_PIN, LOW);
}
delay(100);
}
Этот скетч Arduino использует модуль KY-004 на пине 7 и светодиод на пине 13. При нажатии кнопки модуль выдаёт LOW-сигнал, который включает светодиод и выводит сообщение в Serial Monitor.
Не забудьте настроить режим INPUT_PULLUP или подключить внешний подтягивающий резистор, если на вашем модуле его нет.
Пример для ESP-IDF
Официальный фреймворк Espressif для разработки IoT
C++
Пример для ESP-IDF
Официальный фреймворк Espressif для разработки IoT
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#define BUTTON_PIN GPIO_NUM_4
#define LED_PIN GPIO_NUM_2
void app_main(void) {
gpio_set_direction(BUTTON_PIN, GPIO_MODE_INPUT);
gpio_set_pull_mode(BUTTON_PIN, GPIO_PULLUP_ONLY);
gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);
printf("Тест модуля KY-004 Key Switch\n");
while (1) {
int button_state = gpio_get_level(BUTTON_PIN);
if (button_state == 0) {
printf("Кнопка нажата\n");
gpio_set_level(LED_PIN, 1);
} else {
printf("Кнопка отпущена\n");
gpio_set_level(LED_PIN, 0);
}
vTaskDelay(pdMS_TO_TICKS(100));
}
}
В этом примере для ESP-IDF настроен GPIO4 как цифровой вход для модуля KY-004 и GPIO2 как выход для светодиода. При нажатии кнопки (модуль выдаёт LOW) светодиод включается, и сообщение выводится в консоль.
Функция gpio_set_pull_mode() включает внутренний подтягивающий резистор к питанию (pull-up), что необходимо для стабильной работы кнопки.
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
YAML
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
binary_sensor:
- platform: gpio
pin:
number: GPIO4
mode: INPUT_PULLUP
name: "KY-004 Key Switch"
filters:
- delayed_on: 10ms
- delayed_off: 10ms
on_press:
- then:
- lambda: |-`
ESP_LOGD("sensor", "Кнопка нажата!");
Эта конфигурация ESPHome создаёт бинарный сенсор для модуля KY-004 на GPIO4 с режимом INPUT_PULLUP. Фильтры delayed_on и delayed_off добавляют задержку 10 мс для подавления дребезга контактов. При нажатии кнопки выполняется лямбда-функция, выводящая сообщение в лог.
Пример для PlatformIO
Профессиональная среда разработки
C++
Пример для PlatformIO
Профессиональная среда разработки
platformio.ini
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
arduino-libraries/Wire
main.cpp
#define BUTTON_PIN 4
#define LED_PIN 2
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
Serial.println("Тест модуля KY-004 Key Switch");
}
void loop() {
if (digitalRead(BUTTON_PIN) == LOW) {
Serial.println("Кнопка нажата");
digitalWrite(LED_PIN, HIGH);
} else {
Serial.println("Кнопка отпущена");
digitalWrite(LED_PIN, LOW);
}
delay(100);
}
Конфигурация PlatformIO для ESP32 использует фреймворк Arduino. В main.cpp настраивается GPIO4 как вход с внутренней подтяжкой (INPUT_PULLUP) и GPIO2 как выход для светодиода. Код прост и идентичен Arduino-примеру, но удобно работает внутри IDE PlatformIO.
Пример для MicroPython
Python для микроконтроллеров
Python
Пример для MicroPython
Python для микроконтроллеров
import machine
import time
BUTTON_PIN = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP)
LED_PIN = machine.Pin(2, machine.Pin.OUT)
while True:
if BUTTON_PIN.value() == 0:
print("Кнопка нажата")
LED_PIN.on()
else:
print("Кнопка отпущена")
LED_PIN.off()
time.sleep(0.1)
Этот скрипт MicroPython настраивает GPIO4 как цифровой вход с внутренней подтяжкой (PULL_UP) для модуля KY-004 и GPIO2 как выход для светодиода. При нажатии кнопки (значение пина становится 0) светодиод включается, и в консоль выводится сообщение. Задержка 0.1 секунды (100 мс) помогает сгладить дребезг контактов.
Итоги KY-004
Модуль тактильной кнопки KY-004 — это простой и надёжный цифровой датчик для пользовательского ввода. Он совместим с Arduino, ESP-IDF, ESPHome, PlatformIO и MicroPython, что делает его универсальным выбором для множество проектов на базе микроконтроллеров.
Рекомендации
Используйте режим **INPUT_PULLUP** для цифрового входа. Для стабильной работы реализуйте **программный дебаунсинг** (задержка 10–50 мс). При необходимости добавляйте внешний подтягивающий резистор, если на модуле его нет.
Безопасность прежде всего
Проверяйте напряжение питания: модуль работает от 3.3В или 5В. Не превышайте максимальный ток через кнопку (обычно до 100 мА). При пайке будьте осторожны, чтобы не перегреть контакты.
Готовы начать создавать?
Теперь, когда у вас есть вся необходимая информация, пора интегрировать KY-004 в проект на ESP32 и воплотить идеи в жизнь!
Изучите альтернативные модули
Ищете альтернативы KY-004? Посмотрите эти похожие датчики из серии KY-0xx — возможно, они лучше подойдут под задачи вашего проекта.

KY-031 Датчик удара/вибрации
Модуль KY-031 представляет собой датчик удара/вибрации. При обнаружении физического воздействия он выдаёт цифровой сигнал...

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

KY-035 Аналоговый датчик Холла
Модуль KY-035 — это аналоговый датчик Холла на основе линейного датчика Hall-effect AH49E. Он выдаёт аналоговое напряжение, пропорциональное...