HC-SR04 ультразвуковой датчик расстояния

Узнайте всё о ультразвуковом датчике расстояния HC-SR04: технические характеристики, распиновка, схемы подключения, datasheet и примеры кода для ESP32, Arduino, Raspberry

Расстояние Trigger/Echo

Обзор

HC-SR04 — это универсальный ультразвуковой датчик расстояния, способный измерять расстояния до 4 метров с высокой точностью. Он широко используется в робототехнике и системах автоматизации благодаря низкой стоимости и простой работе.

HC-SR04 — ультразвуковой датчик расстояния с диапазоном измерения от 2 до 400 см. Использует ультразвуковые волны частотой 40 кГц для точного определения расстояния до объектов.

HC-SR04 датчик
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы

О датчике HC-SR04

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

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

  • Широкий диапазон — измеряет расстояния от 2 см до 400 см.
  • Высокая точность — погрешность всего ±3 мм.
  • Протокол Trigger/Echo — простой интерфейс с цифровыми импульсами.
  • Рабочая частота — 40 кГц ультразвуковые волны.
  • Низкое энергопотребление — идеален для батарейных проектов.
Где купить

Приобретите HC-SR04

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

Характеристики HC-SR04

Полные технические характеристики ультразвукового датчика HC-SR04.

Интерфейс
Trigger/Echo
Точность
±3 мм
Диапазон
2–400 см
Питание
5В DC
Разрешение
0.3 см
Частота
40 кГц
Скачать полный даташит
Конфигурация пинов

Распиновка HC-SR04

Датчик HC-SR04 имеет 4 вывода: питание (VCC), землю (GND), вход триггера (TRIG) и выход эхо (ECHO).

Визуальная диаграмма распиновки
Основное
Распиновка HC-SR04
Всего выводов
4
Типы
Питание + Trigger/Echo
Быстрые советы
  • Питание: требуется 5В
  • ECHO: выдаёт 5В — нужен делитель для ESP32!
  • TRIG: принимает 3.3В напрямую
  • Измерение: 10-25мс
Описание выводов
Название Тип Описание Примечания
1 VCC Питание Вход питания Требуется 5В
2 GND Земля Заземление Общая земля
3 TRIG Вход Триггер измерения Импульс 10мкс
4 ECHO Выход Выход эхо 5В — нужен делитель!
Руководство по подключению

Подключение HC-SR04 к ESP32

Подключите HC-SR04 к ESP32. Важно: выход ECHO даёт 5В, поэтому для защиты GPIO ESP32 нужно использовать делитель напряжения.

Схема подключения
С делителем напряжения
Подключение HC-SR04 к ESP32
Подключений
5
Статус
Все обязательны
Протокол
Trigger/Echo
Внимание!

ECHO выдаёт 5В — используйте делитель 1кОм + 2кОм для защиты GPIO ESP32!

Подключения пинов
Вывод HC-SR04 Подключение Вывод ESP32 Описание
VCC обязательно 5V Питание (требуется 5В)
GND обязательно GND Общая земля
TRIG обязательно GPIO5 Вход триггера (принимает 3.3В)
ECHO обязательно GPIO18 (через делитель) Выход эхо (5В → делитель → 3.3В)
Делитель 1кОм + 2кОм R1=1кОм (ECHO→GPIO), R2=2кОм (GPIO→GND)
📍 Протокол: Trigger/Echo ⚡ Питание: 5В 📏 Диапазон: 2-400 см 🎯 Точность: ±3 мм 🔧 Делитель для ECHO
Помощь и поддержка

Устранение неполадок HC-SR04

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

Датчик не измеряет расстояние
Всегда возвращает 0 или максимум

Причины: неправильное подключение, недостаточное питание (менее 5В), неправильная логика работы.

Решение: проверьте подключение VCC к 5В (не 3.3В!), убедитесь что делитель напряжения установлен правильно, проверьте что TRIG получает импульс 10мкс.

Показания нестабильны
Значения скачут

Причины: шумные сигналы, длинные провода, недостаточное питание.

Решение: используйте конденсатор 100мкФ между VCC и GND, укоротите провода, усредняйте несколько измерений в коде.

ESP32 сгорел/не работает после подключения
Повреждение GPIO

Причина: вывод ECHO даёт 5В, а GPIO ESP32 рассчитаны на 3.3В — без делителя напряжения происходит пробой.

Решение: обязательно используйте делитель напряжения (1кОм + 2кОм) для преобразования 5В в 3.3В. Или используйте датчики с логикой 3.3В (HC-SR04+).

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

Примеры кода

Примеры программирования HC-SR04

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

Пример для Arduino

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

C++
#define TRIG_PIN 5
#define ECHO_PIN 18

void setup() {
    Serial.begin(115200);
    pinMode(TRIG_PIN, OUTPUT);
    pinMode(ECHO_PIN, INPUT);
}

void loop() {
    digitalWrite(TRIG_PIN, LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN, LOW);
    
    long duration = pulseIn(ECHO_PIN, HIGH);
    float distance = duration * 0.034 / 2;
    
    Serial.print("Расстояние: ");
    Serial.print(distance);
    Serial.println(" см");
    
    delay(500);
}

Примечание: Для ESP32 используйте делитель напряжения на ECHO! Функция pulseIn работает на ESP32.

Пример для ESPHome

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

YAML
sensor:
  - platform: ultrasonic
    trigger_pin: 5
    echo_pin: 18
    name: "Расстояние HC-SR04"
    update_interval: 1s

Примечание: ESPHome автоматически создаёт делитель напряжения, если указать пины в конфигурации.

Пример для MicroPython

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

Python
from machine import Pin, time_pulse_us
import time

TRIG = Pin(5, Pin.OUT)
ECHO = Pin(18, Pin.IN)

while True:
    TRIG.off()
    time.sleep_us(2)
    TRIG.on()
    time.sleep_us(10)
    TRIG.off()
    
    duration = time_pulse_us(ECHO, 1, 30000)
    distance = duration * 0.034 / 2
    
    print("Расстояние: {:.2f} см".format(distance))
    time.sleep(0.5)

В заключение о HC-SR04

HC-SR04 — это популярный и недорогой ультразвуковой датчик расстояния, идеально подходящий для проектов на ESP32 и Arduino. Благодаря простому интерфейсу Trigger/Echo и широкому диапазону измерений он широко применяется в робототехнике и системах автоматизации.

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

Всегда используйте делитель напряжения для вывода ECHO! Без него ESP32 выйдет из строя.

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

Не подключайте ECHO напрямую к ESP32! Используйте делитель 1кОм + 2кОм.

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