KY-021 — миниатюрный модуль геркона (магнитный датчик)

Узнайте всё о KY-021 (модуль геркона): характеристики, распиновка, схемы подключения, даташит и примеры кода для Arduino, ESP32, Raspberry Pi

Магнитные Digital

Обзор

KY-021 — это миниатюрный модуль на базе reed switch (герконового переключателя) для детектирования магнитного поля. Модуль выдает цифровой сигнал и работает при напряжениях 3.3В–5В, что делает его совместимым с большинством микроконтроллеров. Применяется в системах охраны, датчиках положения и проектах, где нужно реагировать на приближение магнита.

KY-021 — модуль с reed switch для обнаружения магнитного поля. Выдает цифровой сигнал (замкнутый/разомкнутый контакт) при наличии магнита. Идеален для охранных датчиков, систем контроля положения и событий приближения магнита.

KY-021 Mini Magnetic Reed Switch Module
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы

О модуле KY-021 Mini Magnetic Reed Switch

Модуль KY-021 содержит reed switch (герконовый переключатель), который замыкает контакты при воздействии магнитного поля. В состав модуля входят подтягивающий резистор и светодиодная индикация, что упрощает подключение. Он работает от 3.3В до 5В и выдает цифровой сигнал (LOW при наличии магнита). Распространённые применения: датчики открытия/закрытия дверей и окон, контроль положения, системы охраны.

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

  • Простое детектирование – Переключатель срабатывает при приближении магнита, обеспечивая надежный цифровой сигнал.
  • Гибкое питание – Совместим с логикой 3.3В и 5В, что удобно для ESP32 и Arduino.
  • Готов к установке – Встроенный резистор и LED облегчают отладку и монтаж.
Где купить

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

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

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

Полные технические характеристики модуля KY-021 Mini Magnetic Reed Switch.

Напряжение питания
3.3В – 5В
Тип выхода
Digital
Размеры
19 × 18.5 × 9 мм
Детектор
Reed switch
Скачать полный даташит
Конфигурация пинов

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

Распиновка KY-021 состоит из трёх выводов: питание (VCC), земля (GND) и цифровой выход (S). Герконовый переключатель внутри модуля замыкается при наличии магнитного поля, что даёт LOW на выводе S (при подтяжке к VCC).

Визуальная диаграмма распиновки
Основное
Распиновка KY-021
Всего выводов
3
Типы
Питание + Digital
Быстрые советы
  • Логика: при магните — замкнуто (LOW), иначе HIGH (подтяжка).
  • Подтяжка: на плате обычно уже стоит резистор.
  • GPIO: любой цифровой вход microcontroller.
Описание выводов
Название Тип Описание Примечания
1 (-) Питание Земля (GND) Общая земля
2 (middle) Питание Питание 3.3В–5В Любое в диапазоне
3 S Digital Цифровой выход LOW при магните, иначе HIGH
Руководство по подключению

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

Подключите модуль KY-021 к GPIO микроконтроллера. Поскольку модуль содержит подтягивающий резистор, никаких дополнительных компонентов не требуется. Подайте питание 3.3В (рекомендуется для ESP32) или 5В.

Схема подключения
Рекомендуемая (любой GPIO)
Подключение KY-021 к ESP32
Подключений
3
Статус
Все обязательны
Протокол
Digital (GPIO)
Подключения пинов
Вывод KY-021 Подключение Вывод ESP32 Описание
(-) обязательно GND Общая земля
(middle) обязательно 3.3V Питание (3.3В рекомендуется)
S обязательно GPIO4 Цифровой вход (любой GPIO)
📍 Режим: цифровой вход (подтяжка внутри) ⚡ Питание: 3.3В (рекомендуется) 🧲 Детектор: геркон (reed switch) 💡 LED-индикация на плате 🎯 Диапазон срабатывания: ~10–20 мм
Помощь и поддержка

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

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

Датчик всегда показывает HIGH
Нет реакции на магнит

Проблема: цифровой вход всегда HIGH, даже когда магнит рядом.

Возможные причины: модуль не получил питание, проводка не соответствует схеме, неисправен reed switch.

Решение: проверьте, подаётся ли 3.3В/5В на вывод питания, убедитесь что магнит достаточно близко (10–20 мм), проверьте мультиметром замыкание контактов reed switch при поднесении магнита. Удостоверьтесь, что GPIO настроен как INPUT (или INPUT_PULLUP в зависимости от логики).

Случайные срабатывания (дребезг)
Один импульс — много регистраций

Причина: механический reed switch может «дребезжать» при переключении. Также возможны вибрации или помехи на линии.

Решение: добавьте аппаратный debounce-конденсатор (допустим 0.1 мкФ параллельно выводу S) или программную debounce-задержку (например, 50 мс после обнаружения перепада).

Неправильная логика
Модуль ведёт себя наоборот

Комментарий: Некоторые версии модуля могут иметь обратную логику (reed switch между S и GND, без подтяжки к VCC). Если ваш модуль показывает HIGH при магните и LOW без, попробуйте использовать INPUT_PULLUP или измените логику кода на обратную.

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

Serial Monitor
Просмотр состояния датчика
Добавьте в код печать значения digitalRead(pin) с периодом 200–500 мс. Это позволит увидеть, как меняется состояние при движениях магнита.
Проверка мультиметром
Замкнулся/разомкнут контакт
Переставьте щупы мультиметра на контакты reed switch. При поднесении магнита сопротивление должно падать до нескольких Ом (замкнуто). Вдали — огромное сопротивление (разомкнуто).

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

Примеры кода

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

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

Пример для Arduino

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

C++
int reed_magnet = 10;  // Пин, к которому подключен вывод S KY-021
int value;             // Временная переменная

void setup() {
    pinMode(reed_magnet, INPUT);           // Инициализация пина как входа
    Serial.begin(9600);                    // Инициализация Serial Monitor
    Serial.println("KY-021 Magnetic field detection");
}

void loop() {
    // Считываем текущее состояние пина
    value = digitalRead(reed_magnet);

    // Если обнаружен магнит (LOW), выводим сообщение
    if (value == LOW) {
        Serial.println("Magnetic field detected");
        delay(100);  // Пауза 100 мс
    }
}

Этот Arduino скетч подключает KY-021 к цифровому пину 10. При поднесении магнита геркон замыкается, и пин становится LOW (так как на модуле есть подтяжка к VCC). Код периодически опрашивает пин и выводит сообщение в Serial Monitor при обнаружении магнитного поля. Задержка 100 мс снижает нагрузку.

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

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

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

#define REED_SWITCH_PIN GPIO_NUM_4  // Пин подключения вывода S KY-021

void app_main(void) {
    // Конфигурация пина как входа с подтяжкой к VCC (Internal pull-up)
    gpio_config_t io_conf = {
        .pin_bit_mask = (1ULL << REED_SWITCH_PIN),
        .mode = GPIO_MODE_INPUT,
        .pull_up_en = GPIO_PULLUP_ENABLE,    // Внутренняя подтяжка к 3.3В
        .pull_down_en = GPIO_PULLDOWN_DISABLE,
        .intr_type = GPIO_INTR_DISABLE      // Прерывания не используем
    };
    gpio_config(&io_conf);

    printf("KY-021 Magnetic Field Detection Test\n");

    while (1) {
        int level = gpio_get_level(REED_SWITCH_PIN);
        // При наличии магнита геркон замыкается, напряжение LOW (0)
        if (level == 0) {
            printf("Magnetic field detected\n");
            vTaskDelay(pdMS_TO_TICKS(100));  // Задержка 100 мс
        }
        vTaskDelay(pdMS_TO_TICKS(100));      // Основной опрос 100 мс
    }
}

Пример на ESP-IDF настраивает GPIO4 как цифровой вход с внутренней подтяжкой к 3.3В (эквивалент INPUT_PULLUP в Arduino). Когда магнит подносится к модулю, геркон замыкается и пин становится LOW. Программа непрерывно опрашивает пин и выводит сообщение при обнаружении поля. Задержка 100 мс в цикле снижает нагрузку на CPU.

Пример для ESPHome

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

YAML
# Пример конфигурации ESPHome для KY-021
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP  # Подтяжка к 3.3В
    name: "KY-021 Magnetic Reed Switch"
    filters:
      - delayed_on: 50ms    # Фильтр дребезга включения
      - delayed_off: 50ms   # Фильтр дребезга выключения
    on_press:
      - then:
          - lambda: |- 
              ESP_LOGD("sensor", "Magnetic field detected!");

ESPHome конфигурация определяет binary_sensor на GPIO4 с режимом INPUT_PULLUP. При срабатывании reed switch (замыкании) пин становится LOW, и бинарный сенсор переходит в состояние «ON». Фильтры задержек (50 мс) убирают дребезг. Событие логируется в Home Assistant.

Пример для PlatformIO

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

C++

platformio.ini

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

src/main.cpp

#define REED_SWITCH_PIN 4

void setup() {
    pinMode(REED_SWITCH_PIN, INPUT_PULLUP);  // Вход с подтяжкой к 3.3В
    Serial.begin(115200);
    Serial.println("KY-021 Magnetic Field Detection Test");
}

void loop() {
    if (digitalRead(REED_SWITCH_PIN) == LOW) {
        Serial.println("Magnetic field detected");
        delay(100);
    }
    delay(100);
}

Проект PlatformIO настраивается для ESP32 на фреймворке Arduino. Пин GPIO4 задаётся как INPUT_PULLUP. При замыкании reed switch (магнит рядом) пин становится LOW, и выводится сообщение. Задержка 100 мс в основном цикле.

Пример для MicroPython

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

Python
import machine
import time

REED_SWITCH_PIN = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP)

while True:
    if REED_SWITCH_PIN.value() == 0:
        print("Magnetic field detected")
        time.sleep(0.1)
    time.sleep(0.1)

MicroPython скрипт настраивает GPIO4 как вход с внутренней подтяжкой к 3.3В (machine.Pin.PULL_UP). При замыкании reed switch пин становится LOW (0), что вызывает вывод сообщения. Двойная задержка 0.1 секунды (~100 мс) между опросами снижает нагрузку.

Итоги KY-021

Модуль KY-021 — это простой и дешёвый цифровой датчик магнитного поля на базе reed switch. Он работает с напряжениями 3.3В–5В и совместим с Arduino, ESP32, Raspberry Pi через любой GPIO. Благодаря встроенной подтяжке и LED-индикации, модуль готов к использованию «из коробки».

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

Убедитесь, что используется сильный неодимовый магнит и расстояние до датчика не превышает 15–20 мм. Для защиты от дребезга добавьте программную или аппаратную фильтрацию (50–100 мс).

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

Проверьте полярность питания (VCC 3.3В/5В). Не замыкайте выводы S на землю или питание вручную — это может повредить пин microcontroller. Используйте стабильный источник питания.

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

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