Обзор
KY-017 — это модуль датчика наклона с ртутным выключателем, который обнаруживает изменения ориентации. При наклоне за определённый угол внутренний ртутный выключатель замыкается, отправляя цифровой сигнал. Он подходит для проектов, требующих простого обнаружения наклона или движения.
KY-017 — цифровой модуль датчика наклона с ртутным выключателем. При наклоне за пороговый угол контакт замыкается и на выходе появляется LOW-сигнал. Простой бинарный сенсор для систем антикражной защиты, датчиков положения и аварийных отключений.
О датчике наклона KY-017
KY-017 Mercury Tilt Switch Module — это датчик, который обнаруживает наклон или отклонение. Он содержит ртутный выключатель, который замыкает цепь при наклоне до определённого угла, позволяя току протекать. Этот модуль работает в диапазоне напряжения 3.3В–5.5В и обеспечивает цифровой выходной сигнал. Он часто используется в приложениях, таких как обнаружение наклона, датчики движения и мониторинг ориентации.
🔹 Ключевые особенности:
- Простой бинарный выход (LOW при наклоне)
- Рабочее напряжение: 3.3В–5.5В
- Малые габариты
- Подходит для антикражных систем, датчиков положения
Приобретите KY-017
Характеристики KY-017
Полные технические характеристики модуля датчика наклона KY-017.
Распиновка KY-017
KY-017 — это 3-пиновый модуль датчика наклона:
- Выход: цифровой (LOW при наклоне).
- Ртутный выключатель — осторожно, содержит ртуть.
- Порог срабатывания: обычно ~45° от вертикали.
| № | Название | Тип | Описание | Примечания |
|---|---|---|---|---|
| 1 | - (GND) | Питание | Земля | Общая земля |
| 2 | Middle (VCC) | Питание | Питание 3.3В–5.5В | Любой из двух центральных пинов |
| 3 | S (Signal) | Цифровой выход | Сигнал наклона (LOW при активации) | Требует внешний подтягивающий резистор (если нет на модуле) |
Подключение KY-017 к ESP32
Для интерфейса KY-017 с ESP32 используйте цифровой вход. Модуль уже содержит подтягивающий резистор, поэтому дополнительная настройка не требуется.
| Вывод KY-017 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| - (GND) обязательно | → | GND | Общая земля |
| Middle (VCC) обязательно | → | 3.3V | Питание (3.3В или 5В) |
| S (Signal) обязательно | → | GPIO4 | Цифровой сигнал (LOW при наклоне) |
Устранение неполадок KY-017
Распространённые проблемы и решения, которые помогут запустить датчик.
Датчик всегда показывает HIGH
Сигнал не меняется при наклоне
Проблема: цифровой вход постоянно HIGH, даже при наклоне.
Возможные причины: отсутствует подтягивающий резистор (если модуль без него), неисправность ртутного выключателя, неправильная логика полярности.
Решение: проверьте мультиметром целостность ртутного контакта при наклоне, подключите внешний подтягивающий резистор 10кОм между сигнальным выводом и VCC, убедитесь в правильности кода (LOW = активация).
Ложные срабатывания
Датчик срабатывает без явного наклона
Проблема: модуль даёт сигнал при малейшей вибрации или без причины.
Решение: закрепите модуль жёстко, чтобы избежать микродвижений. В коде добавьте debounce (игнорировать изменения в течение 50–200 мс). Проверьте, что порог срабатывания соответствует углу наклона вашего применения.
Нет реакции на изменение угла
Датчик не срабатывает при наклоне
Возможные причины: порог наклона слишком мал, датчик установлен близко к вертикали, или ртутный выключатель залипает.
Решение: увеличьте угол наклона до рекомендаций производителя (~45°), проверьте механическую свободу ртутного переключателя, протестируйте мультиметром (сопротивление должно меняться при наклоне).
Советы по отладке
Serial монитор
Логирование состояния датчика
Проверка мультиметром
Замкнутость контактов ртутного переключателя
Примеры программирования KY-017
Готовые к использованию примеры кода для различных платформ и фреймворков
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
int tiltPin = 10; // Датчик наклона на цифровом пине 10
int ledPin = 13; // Светодиод на пине 13
int sensorValue = 0;
void setup() {
pinMode(tiltPin, INPUT); // Вход (уже есть подтяжка на модуле)
pinMode(ledPin, OUTPUT); // Выход для светодиода
Serial.begin(9600);
Serial.println("Тест датчика наклона KY-017");
}
void loop() {
sensorValue = digitalRead(tiltPin);
if (sensorValue == LOW) { // LOW = наклон обнаружен
digitalWrite(ledPin, HIGH);
Serial.println("Наклон обнаружен");
} else {
digitalWrite(ledPin, LOW);
}
delay(1000); // Проверка каждую секунду
}
Этот Arduino-скетч использует датчик наклона KY-017 на цифровом пине 10 и встроенный светодиод на пине 13. При наклоне датчика (выход становится LOW) светодиод зажигается и выводится сообщение в Serial Monitor. Проверка осуществляется каждую секунду.
Пример для 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 TILT_SENSOR_PIN GPIO_NUM_4 // Пин датчика наклона
#define LED_PIN GPIO_NUM_2 // Встроенный светодиод ESP32
void app_main(void) {
// Конфигурация пинов
gpio_config_t io_conf = {
.pin_bit_mask = (1ULL << TILT_SENSOR_PIN) | (1ULL << LED_PIN),
.mode = GPIO_MODE_INPUT_OUTPUT,
.pull_up_en = GPIO_PULLUP_ENABLE, // Подтяжка к VCC
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE
};
gpio_config(&io_conf);
printf("Тест датчика наклона KY-017\n");
while (1) {
int sensor_value = gpio_get_level(TILT_SENSOR_PIN);
if (sensor_value == 0) { // LOW = наклон
gpio_set_level(LED_PIN, 1);
printf("Наклон обнаружен\n");
} else {
gpio_set_level(LED_PIN, 0);
}
vTaskDelay(pdMS_TO_TICKS(1000)); // Задержка 1 с
}
}
Этот пример ESP-IDF настраивает GPIO4 как цифровой вход с подтяжкой к питанию для датчика KY-017, а GPIO2 — как выход для светодиода. При наклоне (выход датчика LOW) светодиод зажигается и выводится сообщение в консоль. Проверка происходит каждую секунду.
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
YAML
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
binary_sensor:
- platform: gpio
pin:
number: GPIO4
mode: INPUT_PULLUP
name: "KY-017 Tilt Sensor"
device_class: vibration
filters:
- delayed_on: 50ms
- delayed_off: 50ms
on_press:
- then:
- lambda: |-'
ESP_LOGD("sensor", "Tilt detected!");
ESPHome конфигурация для KY-017 на GPIO4 с использованием встроенной подтяжки INPUT_PULLUP. Датчик объявлен как бинарный сенсор класса vibration. Фильтры задержки 50 мс предотвращают ложные срабатывания. При наклоне в логах появляется сообщение «Tilt detected!».
Пример для PlatformIO
Профессиональная среда разработки
C++
Пример для PlatformIO
Профессиональная среда разработки
platformio.ini
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
arduino-libraries/Wire
main.cpp
#define TILT_SENSOR_PIN 4 // Пин датчика наклона
#define LED_PIN 2 // Встроенный светодиод
void setup() {
Serial.begin(115200);
pinMode(TILT_SENSOR_PIN, INPUT_PULLUP); // Подтяжка к VCC
pinMode(LED_PIN, OUTPUT);
Serial.println("Тест датчика наклона KY-017");
}
void loop() {
if (digitalRead(TILT_SENSOR_PIN) == LOW) {
Serial.println("Наклон обнаружен");
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
delay(1000);
}
PlatformIO проект для ESP32 на фреймворке Arduino. Датчик подключён к GPIO4 с внутренней подтяжкой, светодиод — на GPIO2. При наклоне (LOW) выводится сообщение и зажигается светодиод. Проверка каждую секунду.
Пример для MicroPython
Python для микроконтроллеров
Python
Пример для MicroPython
Python для микроконтроллеров
from machine import Pin
import time
tilt_sensor = Pin(4, Pin.IN, Pin.PULL_UP) # GPIO4 с подтяжкой
led = Pin(2, Pin.OUT) # Светодиод на GPIO2
while True:
if tilt_sensor.value() == 0: # LOW = наклон
print("Наклон обнаружен")
led.on()
else:
led.off()
time.sleep(1)
Скрипт MicroPython для датчика KY-017 на GPIO4 (с внутренней подтяжкой) и светодиода на GPIO2. При наклоне (значение 0) выводится сообщение и включается светодиод. Интервал проверки — 1 секунда.
Итоги KY-017
Датчик наклона KY-017 Mercury Tilt Switch — простой и надёжный бинарный сенсор для обнаружения изменения ориентации. Подходит для антикражных систем, датчиков положения и аварийных отключений. Поддерживается на всех популярных платформах: Arduino, ESP-IDF, ESPHome, PlatformIO и MicroPython.
Рекомендации
Используйте стабильное питание 3.3В или 5В. Закрепите модуль жёстко, чтобы избежать ложных срабатываний от вибраций. Добавьте программный debounce (50–200 мс) для фильтрации дребезга контактов. Храните и обращайтесь осторожно — датчик содержит ртуть.
Безопасность прежде всего
Не разбирайте модуль и не повреждайте корпус — внутри находится элемент с ртутью. Утилизируйте отработанный датчик как опасные отходы. Не подвергайте модуль экстремальным температурам или ударам.
Готовы начать создавать?
Теперь, когда у вас есть вся необходимая информация, пора интегрировать KY-017 в проект на ESP32 и воплотить идеи в жизнь!
Изучите альтернативные датчики
Ищете альтернативы KY-017? Посмотрите эти похожие датчики — возможно, они лучше подойдут под задачи вашего проекта.

KY-017 Датчик наклона (ртутный)
Модуль KY-017 с ртутным выключателем обнаруживает изменения ориентации. Простой бинарный сенсор для систем защиты...

KY-002 Датчик вибрации
Датчик вибрации KY-002 предназначен для обнаружения ударов или тряски. На выходе цифровой сигнал...

KY-020 Шариковый датчик наклона
Модуль KY-020 использует металлический шарик для замыкания контактов при наклоне. Безопасная альтернатива ртутным датчикам...