KY-050 Ультразвуковой датчик расстояния

Узнайте всё о характеристиках, распиновке, схемах подключения, даташите и примерах кода для модуля ультразвукового датчика расстояния KY-050 для ESP32 и Arduino.

Датчики Дистанция Цифровой

Где купить

Приобретите KY-050 Ультразвуковой датчик расстояния

Обзор

Модуль KY-050 — это ультразвуковой датчик расстояния, способный измерять дистанцию от 2 см до 300 см с разрешением около 3 мм. Он излучает ультразвуковой импульс частотой 40 кГц и измеряет время, необходимое для возвращения эхо-сигнала, что позволяет точно рассчитывать расстояние до объектов.

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

KY-050 Ультразвуковой датчик расстояния

Где купить

KY-050
~ $2.50
Ориентировочная цена за модуль

Магазины

* Цены указаны для ознакомления и могут меняться в зависимости от продавца и региона доставки.

Технические параметры

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

Полные технические сведения о модуле KY-050.

Питание
5В DC
Диапазон
2 — 300 см
Разрешение
3 мм
Частота
40 кГц
Назначение выводов

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

Модуль имеет 4 вывода, стандартных для ультразвуковых датчиков типа HC-SR04:

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

Быстрые советы

  • 🔌 Протокол Trigger/Echo — время полёта звука.
  • Требует 5В для стабильной работы, 3.3В может быть недостаточно.
  • ⚠️ Вывод Echo выдает 5В, для ESP32 нужен делитель напряжения.
Pin Имя Описание
1 VCC Питание +5В
2 Trig Вход запуска (Триггер)
3 Echo Выход эха (Сигнал)
4 GND Общий (Земля)
Схема подключения

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

Для сопряжения модуля KY-050 с контроллером ESP32 используйте следующую схему:

Статус
Проверено
Протокол
Pulse Width
Сложность
Легко
Пин KY-050 Пин ESP32 Описание
VCC VIN / 5V Требуется 5В
Trig GPIO5 Любой GPIO (выход)
Echo GPIO18 Любой GPIO (вход)
GND GND Общий
Примечание по 5В логике: Так как ESP32 работает на 3.3В, а датчик выдает 5В на пине Echo, рекомендуется использовать резистивный делитель напряжения или логический преобразователь уровней для защиты GPIO.
Помощь и поддержка

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

Нет показаний расстояния
Проверьте питание (ровно 5В). Убедитесь, что триггерный импульс длится не менее 10 мкс. Проверьте надежность контактов на макетной плате.
⚠️
Неверные или «прыгающие» значения
Убедитесь, что в зоне видимости нет мягких поверхностей, поглощающих звук (ткани, ковры). Избегайте узких углов, которые могут вызвать повторные отражения звука.
Примеры программирования

Примеры кода KY-050

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

Arduino
Arduino IDE C++
Стандартный код для Arduino и ESP32

Этот скетч измеряет время возврата импульса и переводит его в сантиметры.

#define echoPin 7 // Пин для получения эхо-сигнала
#define triggerPin 8 // Пин для отправки триггерного импульса

// Определение переменных для хранения данных
int maximumRange = 300; 
int minimumRange = 2; 
long distance;
long duration;

void setup() {
  pinMode(triggerPin, OUTPUT); // Установка пина триггера как выход
  pinMode(echoPin, INPUT);    // Установка пина эхо как вход
  Serial.begin(9600);
  Serial.println("KY-050 Измерение расстояния начато");
}

void loop() {
  // Запуск измерения 10-микросекундным импульсом
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(triggerPin, LOW);

  // Измерение длительности HIGH сигнала на пине echo
  duration = pulseIn(echoPin, HIGH);

  // Расчет расстояния (звук проходит путь туда и обратно)
  // Скорость звука 340 м/с или 1 см за 29.1 мкс
  distance = duration / 58.2;

  // Проверка на нахождение в допустимом диапазоне
  if (distance >= maximumRange || distance <= minimumRange) {
    Serial.println("Вне диапазона измерения");
  } else {
    Serial.print("Расстояние: ");
    Serial.print(distance);
    Serial.println(" см");
  }
  
  delay(500); // Пауза полсекунды между замерами
}
MicroPython
MicroPython Python
Для ESP32 и Raspberry Pi Pico
import machine
import time

# Настройка пинов для ESP32
TRIGGER_PIN = machine.Pin(5, machine.Pin.OUT)
ECHO_PIN = machine.Pin(18, machine.Pin.IN)

def measure_distance():
    # Обеспечиваем чистый старт
    TRIGGER_PIN.off()
    time.sleep_us(2)
    # Посылаем триггерный импульс
    TRIGGER_PIN.on()
    time.sleep_us(10)
    TRIGGER_PIN.off()
    
    # Ждем начала эха
    while ECHO_PIN.value() == 0:
        start_time = time.ticks_us()
    
    # Ждем окончания эха
    while ECHO_PIN.value() == 1:
        end_time = time.ticks_us()
    
    # Считаем время и дистанцию
    duration = end_time - start_time
    distance = duration / 58.2
    return distance

while True:
    dist = measure_distance()
    if 2 <= dist <= 300:
        print("Расстояние: {:.2f} см".format(dist))
    else:
        print("Вне диапазона")
    time.sleep(0.5)

Итоги

Модуль KY-050 является незаменимым инструментом для измерения расстояния в бюджетных проектах. Его простота подключения и высокая точность в пределах 3 метров делают его отличным выбором для начинающих и профессионалов.

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

Для повышения точности проводите несколько измерений подряд и вычисляйте среднее значение. Используйте библиотеку NewPing для Arduino, чтобы избежать блокировок кода.

🛡️ Безопасность

Не забывайте про защиту GPIO ESP32 при подключении к пину Echo. Контакт с 5В может необратимо повредить контроллер.

Готовы начать сборку?

Используйте все преимущества KY-050 в ваших DIY проектах прямо сейчас!

Похожие варианты