Обзор
KY-010 — это фотоинтерруптор (оптический датчик прохождения), который обнаруживает объекты, прерывая инфракрасный луч. Идеально подходит для задач, требующих бесконтактного обнаружения объектов, таких как подсчёт или измерение скорости.
KY-010 — цифровой фотоинтерруптор с инфракрасным излучением и приёмником. Он обнаруживает присутствие объекта в слоте путём прерывания луча. Выходной сигнал меняет состояние при обнаружении. Работает от 3.3В до 5В, что делает его совместимым с Arduino, ESP32 и другими микроконтроллерами. Применяется для подсчёта объектов, определения краёв и измерения скорости вращения.
О фотоинтеррупоре KY-010
Фотоинтерруптор KY-010 — это цифровой модуль, который обнаруживает прохождение объекта через оптический слот. В его основе — инфракрасный светодиод и фотоприёмник, направленные друг на друга. Когда объект проходит между ними, луч прерывается, и выходной сигнал меняет состояние. Модуль работает от 3.3В до 5В, что обеспечивает совместимость с большинством микроконтроллеров, включая Arduino и ESP32. Типичные применения: подсчёт объектов на конвейере, определение краёв и измерение скорости вращения.
Приобретите KY-010
Характеристики KY-010
Полные технические характеристики фотоинтеррупора KY-010.
Распиновка KY-010
Распиновка KY-010 включает три вывода: ** Ground** (земля), VCC (питание) и S (цифровой выход).
- Выход — цифровой (HIGH/LOW при прерывании луча).
- Питание — совместим с 3.3В и 5В.
- Подтяжка — внутренний подтягивающий резистор включается программно.
| № | Название | Тип | Описание | Примечания |
|---|---|---|---|---|
| 1 | - | Питание | земля (GND) | Общая земля |
| 2 | + | Питание | Питание (3.3V или 5V) | Универсальное напряжение |
| 3 | S | Digital | Цифровой выход | Меняет состояние при прерывании луча |
Подключение KY-010 к ESP32
Подключите KY-010 к ESP32, используя цифровой GPIO пин. Датчик работает от 3.3В, что делает его полностью совместимым с ESP32.
| Вывод KY-010 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| - обязательно | → | GND | Общая земля |
| + обязательно | → | 3.3V | Питание (3.3V или 5V) |
| S обязательно | → | GPIO15 | Цифровой вход (любой GPIO) |
Устранение неполадок KY-010
Распространённые проблемы и решения, которые помогут запустить фотоинтерруптор.
Датчик не реагирует на объекты
Нет изменения сигнала при прохождении объекта
Проблема: выход датчика не меняет состояние при прохождении объекта через слот.
Возможные причины: неправильное питание, оставшаяся защитная плёнка на датчике, объект неподходящего размера или цвета (слишком прозрачный).
Решение: проверьте подключение питания (3.3V или 5V), убедитесь что слот чистый, объект непрозрачный и достаточно крупный для полного перекрытия луча. Проверьте логику в коде: pinMode(sensorPin, INPUT_PULLUP).
Случайные срабатывания без объекта
Ложные триггеры из-за помех
Проблема: датчик периодически меняет выход без прохождения объекта.
Возможные причины: внешний инфракрасный шум (солнечный свет, пульты), неустойчивое питание, слишком высокая частота опроса.
Решение: экранируйте датчик от внешнего ИК-излучения (например, обмотайте чёрной изолентой), стабилизируйте питание, добавьте задержку в опросе или используйте аппаратную подтяжку 10kΩ вместо программной.
Неправильная логика (инвертированный сигнал)
Сигнал всегда HIGH, а должен меняться
Причины: KY-010 использует NPN-транзистор, который замыкает выход на GND при обнаружении. При включённом внутреннем подтягивающем резисторе (INPUT_PULLUP) выход будет HIGH в нормальном состоянии и LOW при срабатывании.
Решение: если вы ожидаете HIGH при срабатывании, инвертируйте логику в коде: `if (sensorValue == LOW) { /* объект обнаружен */ }`. Проверьте настройку пина: `pinMode(sensorPin, INPUT_PULLUP)`.
Обнаруживает только очень близкие объекты
Оптимальная работа на небольшом расстоянии
Причина: фотоинтерруптор рассчитан на прохождение объекта непосредственно через узкий слот (5 мм), а не на обнаружение на расстоянии.
Решение: размещайте объект так, чтобы он физически проходил через паз между ИК-излучателем и приёмником. Для дальнего обнаружения используйте другие типы сенсоров (ультразвуковые, ИК-датчики расстояния).
Советы по отладке
Serial монитор
Проверка логики
Проверка напряжений
Мультиметр и целостность проводов
Дополнительные ресурсы
Примеры программирования KY-010
Готовые к использованию примеры кода для различных платформ и фреймворков
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
// KY-010 Photo Interrupter — Arduino пример
// Датчик подключён к пину 10, LED — к пину 13
const int sensorPin = 10; // пин сигнала датчика
const int ledPin = 13; // пин светодиода
int sensorValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT);
digitalWrite(sensorPin, HIGH); // внутренний подтягивающий резистор
Serial.begin(9600);
}
void loop() {
sensorValue = digitalRead(sensorPin);
if (sensorValue == HIGH) {
digitalWrite(ledPin, HIGH); // включить LED
Serial.println("Объект обнаружен");
} else {
digitalWrite(ledPin, LOW); // выключить LED
}
delay(100);
}
Этот скетч Arduino подключает фотоинтерруптор KY-010 к цифровому пину 10 и LED — к пину 13. Внутренний подтягивающий резистор включается для пина датчика. Когда объект прерывает инфракрасный луч, LED загорается, а в Serial Monitor выводится сообщение «Объект обнаружен».
⚠️ Важно: KY-010 использует NPN-транзистор, поэтому выход LOW означает обнаружение, а HIGH — свободный луч при включённом подтягивающем резисторе.
Пример для 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 SENSOR_PIN GPIO_NUM_15
#define LED_PIN GPIO_NUM_2
void app_main(void) {
// Настройка пина датчика как вход с подтяжкой
gpio_config_t sensor_io_conf = {
.pin_bit_mask = (1ULL << SENSOR_PIN),
.mode = GPIO_MODE_INPUT,
.pull_up_en = GPIO_PULLUP_ENABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE
};
gpio_config(&sensor_io_conf);
// Настройка пина LED как выход
gpio_config_t led_io_conf = {
.pin_bit_mask = (1ULL << LED_PIN),
.mode = GPIO_MODE_OUTPUT,
.pull_up_en = GPIO_PULLUP_DISABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE
};
gpio_config(&led_io_conf);
printf("Тест KY-010 Photo Interrupter\n");
while (1) {
int sensor_value = gpio_get_level(SENSOR_PIN);
if (sensor_value == 1) {
gpio_set_level(LED_PIN, 1); // включить LED
printf("Объект обнаружен\n");
} else {
gpio_set_level(LED_PIN, 0); // выключить LED
}
vTaskDelay(pdMS_TO_TICKS(100));
}
}
Этот ESP-IDF пример настраивает GPIO15 как вход с внутренней подтяжкой для KY-010 и GPIO2 как выход для LED. При свободном луче вход получает HIGH (из-за подтяжки), при прерывании — LOW. В зависимости от состояния включается LED и выводится сообщение.
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
YAML
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
# Конфигурация ESPHome для KY-010
binary_sensor:
- platform: gpio
pin:
number: GPIO15
mode: INPUT_PULLUP
name: "KY-010 Photo Interrupter"
filters:
- delayed_on: 10ms
- delayed_off: 10ms
on_press:
- then:
- lambda: 'ESP_LOGD("sensor", "Объект обнаружен");'
Эта конфигурация создаёт бинарный сенсор на GPIO15 с внутренней подтяжкой. Фильтры delayed_on/off добавляют debounce 10 мс. При обнаружении объекта (переход LOW→HIGH с учётом подтяжки) в лог выводится сообщение.
Пример для PlatformIO
Профессиональная среда разработки
C++
Пример для PlatformIO
Профессиональная среда разработки
platformio.ini
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
src/main.cpp
#define SENSOR_PIN 15
#define LED_PIN 2
void setup() {
pinMode(SENSOR_PIN, INPUT_PULLUP); // подтяжка к VCC
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
Serial.println("Тест KY-010 Photo Interrupter");
}
void loop() {
// KY-010: LOW = объект в слоте, HIGH = луч свободен
if (digitalRead(SENSOR_PIN) == LOW) {
Serial.println("Объект обнаружен");
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
delay(100);
}
PlatformIO проект для ESP32 на Arduino фреймворке. Пин датчика настраивается с внутренней подтяжкой (INPUT_PULLUP). Логика та же: при LOW на пине (луч прерван) LED включается и выводится сообщение.
Пример для MicroPython
Python для микроконтроллеров
Python
Пример для MicroPython
Python для микроконтроллеров
import machine
import time
SENSOR_PIN = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_UP)
LED_PIN = machine.Pin(2, machine.Pin.OUT)
while True:
if SENSOR_PIN.value() == 0: # LOW = объект обнаружен
print("Объект обнаружен")
LED_PIN.on()
else:
LED_PIN.off()
time.sleep(0.1)
MicroPython скрипт для ESP32. Пин 15 настраивается как цифровой вход с внутренней подтяжкой (PULL_UP). При значении 0 (LOW) — луч прерван, LED на пине 2 включается и выводится сообщение. При HIGH — LED выключен.
Итоги KY-010
Фотоинтерруптор **KY-010** для ESP32 — это надёжный и простой цифровой модуль для бесконтактного обнаружения объектов. Он совместим с Arduino, ESP-IDF, ESPHome, PlatformIO и MicroPython, что делает его универсальным выбором для проектов с микроконтроллерами.
Рекомендации
Для стабильной работы используйте стабильное питание 3.3V или 5V, размещайте датчик вдали от ярких источников ИК-излучения, обеспечивайте точное прохождение объекта через оптический слот. При необходимости настройте debounce в коде (задержку или аппаратную RC-фильтрацию).
Безопасность прежде всего
Перед подключением проверьте совместимость напряжения (3.3V для ESP32, 5V для Arduino). Не превышайте максимальное напряжение питания. Избегайте коротких замыканий в проводках, особенно при питании 5V.
Готовы начать создавать?
Теперь, когда у вас есть вся необходимая информация, пора интегрировать KY-010 в проект на ESP32 и воплотить идеи в жизнь!
Изучите альтернативные датчики
Ищете альтернативы **KY-010**? Посмотрите эти похожие датчики — возможно, они лучше подойдут под задачи вашего проекта.

KY-009 RGB Full Color LED SMD Module
KY-009 — это RGB-модуль, который позволяет создавать различные цвета за счёт независимой регулировки яркости трёх светодиодов...

KY-001 Temperature Sensor Module
KY-001 — это температурный датчик на базе DS18B20 с широким диапазоном измерений. Поддерживает 1-Wire шину...

KY-027 Magic Light Cup Module
KY-027 — модуль обнаружения движения с ртутным контактным выключателем. Активируется при наклоне или изменении ориентации...