Главная → Датчики

Ультразвуковой дальномер HC-SR04: обзор и подключение

5 сентября 2026 · Датчики

Для чего он нужен

HC-SR04 — ультразвуковой дальномер, с которого начинается почти каждый проект про роботов и умные вещи. Два «глаза» на плате: левый излучатель посылает пакет ультразвука, правый ловит отражение. Модуль возвращает длительность полёта звука, а пересчёт в сантиметры занимает одну строчку кода. Стоит копейки и есть почти в каждом стартовом наборе Arduino. Типовые применения: парковочный ассистент, робот, объезжающий препятствия, контроль уровня воды в баке, высотомер дрона на малой высоте.

Подключение ультразвукового дальномера HC-SR04 к Arduino: TRIG, ECHO и расчёт расстояния
Подключение ультразвукового дальномера HC-SR04 к Arduino: TRIG, ECHO и расчёт расстояния

Как работает измерение

Вы подаёте на вывод Trig импульс 10 микросекунд. Модуль выстреливает восемь ультразвуковых импульсов частотой 40 кГц и поднимает вывод Echo. Пока Echo держится в высоком уровне, звук летит до препятствия и обратно. Дальше школьная формула: расстояние = скорость звука × время / 2. Скорость звука в воздухе — около 343 м/с, то есть 0,0343 см за микросекунду. Делим пополам, потому что путь звук проходит дважды: туда и обратно.

Нюанс: скорость звука зависит от температуры воздуха, поэтому зимой и летом показания уедут на несколько процентов. Для точных приборов вводят поправку, для робота или парковочного сигнализатора хватает заводской точности.

Характеристики по паспорту

Параметр Значение
Рабочее напряжение 5 В постоянного тока
Рабочий ток 15 мА
Ультразвуковая частота 40 кГц
Частота измерений до 40 раз в секунду
Минимальная дальность 2 см
Максимальная дальность 4 м
Угол измерения 15°
Импульс на входе Trig 10 мкс, уровень TTL
Размеры 45 × 20 × 15 мм

Выводов четыре, шаг 2,54 мм: VCC, Trig, Echo, GND. Питание — строго 5 вольт: при 3,3 В модуль запускается, но дальность резко падает и показания врут.

Подключение к Arduino

С Arduino Uno или Nano всё тривиально: VCC — к 5V, GND — к GND, Trig — к пину 9, Echo — к пину 10. Логика у платы пятивольтовая, согласовывать уровни не нужно.

Подключение к ESP32

Питание берите с пина VIN (там 5 В от USB), а вот Echo требует осторожности: он выдаёт 5 вольт, а входы ESP32 рассчитаны на 3,3. Прямое подключение — верный способ сжечь GPIO. Ставим делитель напряжения: Echo → резистор 1 кОм → пин ESP32, и от этой же точки резистор 2 кОм на GND. На входе получится 5 × 2/3 ≈ 3,3 В. Trig ведите напрямую — порог срабатывания у модуля TTL-совместимый, и 3,3 В для него достаточно.

Код для Arduino

// Дальномер HC-SR04 на Arduino Uno
const int TRIG_PIN = 9;   // Trig — командный вход
const int ECHO_PIN = 10;  // Echo — выход длительности эха

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

void loop() {
  // Стартовый импульс: 2 мкс тишины, затем 10 мкс HIGH
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // Ждём эхо: сколько микросекунд Echo был в HIGH
  long duration = pulseIn(ECHO_PIN, HIGH, 30000); // таймаут 30 мс

  // Пересчёт в сантиметры: 0,0343 см/мкс, пополам за путь туда-обратно
  float distance = duration * 0.0343 / 2;

  Serial.print("Расстояние: ");
  Serial.print(distance);
  Serial.println(" см");
  delay(500); // не чаще пары замеров в секунду
}

Таймаут 30 мс подобран под паспортный максимум: звуку до препятствия на 4 метрах и обратно нужно около 23 мс. Всё, что дольше, — модуль честно отвечает «не увидел», и pulseIn вернёт ноль.

На ESP32 код тот же, меняются только номера пинов: Trig на GPIO 5, Echo — на GPIO 18 через делитель. Функции pulseIn и delayMicroseconds в ESP32-ядре работают без переделок.

Частые ошибки

Что дальше

Дальномер хорошо дружит с остальной периферией: добавьте реле-модуль — и получится автодолив бака или включение света, когда кто-то подходит к двери. А если задача — не измерять расстояние, а фиксировать присутствие человека, загляните в обзор датчика движения HC-SR501: он ловит инфракрасное излучение тела и стоит ещё дешевле.

Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.

Читайте дальше

Датчики

Датчик DHT22 (AM2302): характеристики, подключение к Arduino и частые ошибки

DHT22 — самый простой способ научить устройство измерять температуру и влажность. Один датчик, один сигнальный провод, готовая библиотека — и через десять…

Читать обзор →
Связь

MAX485 и промышленный RS-485 в проекте на Arduino: обзор и подключение

Где заканчивается TTL и начинается RS-485 На коротком проводе от Arduino до датчика UART-уровни 3,3–5 В живут спокойно. Но стоит сигналу уйти…

Читать обзор →
Датчики

Ёмкостный датчик влажности почвы v1.2: почему резистивный датчик сгнивает за месяц

Если у вас когда-то сгнил резистивный датчик влажности почвы — вы не одиноки. Разберёмся, почему это происходит, чем лучше ёмкостный датчик v1.2…

Читать обзор →