Урок 7 Начинающий 45 минут

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

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

1

Подготовка оборудования

Компоненты для урока

ESP32 DevKit

Любая версия (30/38 пинов)

🔊

HC-SR04 датчик

Ультразвуковой 2-400см

🔔

Buzzer (опц.)

Звуковая сигнализация

🔌

Макетная плата

400 точек + джамперы

2

Принцип эхолокации

Как работает датчик

Принцип работы ультразвукового датчика

HC-SR04 излучает ультразвук (40 кГц), который отражается от препятствий. Датчик измеряет время возвращения эха и рассчитывает расстояние.

Trig

Передатчик

Echo

Приёмник

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

Параметр Значение
Напряжение 5V DC
Ток 15mA
Частота 40 кГц
Диапазон 2-400 см
Точность ±3 мм
Угол обзора 15°

💡 Формула расчёта

Расстояние = (Время × Скорость звука) / 2

Скорость звука = 343 м/с (при 20°C)
Distance (см) = Duration (мкс) / 58

2.1

Временная диаграмма

Временная диаграмма сигналов Trig и Echo
🔴

10мкс импульс

Короткий HIGH импульс на Trig запускает измерение расстояния.

🟢

Echo HIGH

Длительность пропорциональна расстоянию. Измеряется через pulseIn().

🔵

Расчёт

duration / 58 = расстояние в см. Деление на 2 — туда и обратно.

📊 Таблица расстояний

2 см

116 мкс

50 см

2900 мкс

200 см

11600 мкс

3

Схема подключения

Схема подключения HC-SR04 к ESP32
1

VCC Подключите 5V к красному проводу

2

GND Общая земля с ESP32 к чёрному проводу

3

Trig Жёлтый провод → GPIO 5 (OUTPUT)

4

Echo Зелёный провод → GPIO 18 (INPUT)

ℹ️ Примечание

HC-SR04 работает от 5V, но сигнальные пины совместимы с 3.3V логикой ESP32. Echo напрямую подключается к GPIO.

4

Программирование

Библиотеки не требуются

HC-SR04 использует стандартные функции Arduino: digitalWrite(), pulseIn()

📝

Для работы нужны только pinMode() и pulseIn()

🚀

Код работает без внешних библиотек — всё встроено в Arduino IDE

HC_SR04_Simple.ino
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const int trigPin = 5;
const int echoPin = 18;
void setup() {
  Serial.begin(115200);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}
void loop() {
  // Запуск импульса
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Измерение расстояния
  long duration = pulseIn(echoPin, HIGH);
  int distance = duration / 58;
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  delay(500);
}

Код в Arduino IDE

Код программы в Arduino IDE

Монитор порта

Данные о расстоянии в мониторе порта
4.1

Точность измерений

График точности измерений HC-SR04
Измерение расстояния в реальном времени

Визуализация работы датчика: измерение расстояния до препятствия в реальном времени

📏

Оптимальный диапазон

2-200 см — высокая точность (±3 мм). Идеально для парктроников.

⚠️

Ограниченная точность

200-400 см — точность падает. Подходит для грубых измерений.

🚫

Мёртвая зона

0-2 см — физическое ограничение. Датчик не измеряет.

5

Возможные проблемы

Всегда показывает 0 см

Проверьте подключение Echo — должен быть на GPIO 18. Убедитесь, что датчик получает 5V (не 3.3V). Проверьте, что Trig подключён к GPIO 5. Добавьте delay(60) между измерениями.

Неправильные значения расстояния

Возможно перепутаны Trig и Echo местами. Проверьте формулу: distance = duration / 58. Убедитесь, что используется pulseIn(echoPin, HIGH).

Случайные скачки значений

Добавьте усреднение: делайте 5-10 измерений и вычисляйте среднее. Используйте конденсатор 100мкФ параллельно питанию датчика. Проверьте надёжность контактов.

Не работает от 3.3V

HC-SR04 требует 5V для стабильной работы. Подключите VCC к 5V (VIN на ESP32). Сигнальные пины совместимы с 3.3V логикой ESP32.

Не измеряет ближе 2 см

Это физическое ограничение HC-SR04 — ультразвуку нужно время на затухание. Для ближних измерений используйте ИК-датчик (Sharp GP2Y0A21).

6

Цех Испытаний

Отточите мастерство измерения расстояния. Каждая задача — шаг к созданию умных систем.

Время прохождения
~105 минут суммарно
📏
Уровень: Start 10m

Простое измерение

Вывод расстояния в порт

Миссия

Подключите HC-SR04: TRIG→GPIO 5, ECHO→GPIO 18. Измеряйте расстояние и выводите в монитор порта каждые 500мс строго в формате 'Distance: 23 cm'. Проверка: поднесите руку на 10см — значение ~10, отодвиньте на 50см — ~50. Значения > 400 или = 0 выводите как 'Out of range'.

01
🚗
Уровень: Easy 15m

Парктроник

Buzzer пищит при препятствии

Миссия

Подключите active buzzer к GPIO 21. Реализуйте парктроник: расстояние > 50см — тишина; 30–50см — одиночный писк 100мс каждые 500мс; 10–30см — двойной писк 100мс с паузой 100мс каждые 300мс; < 10см — непрерывный звук. Результат: чем ближе объект, тем чаще и интенсивнее сигнал.

02
🚦
Уровень: Normal 20m

Световая индикация

RGB светодиод: зелёный/жёлтый/красный

Миссия

Подключите RGB светодиод: R→GPIO 16, G→GPIO 17, B→GPIO 4. Реализуйте 3 зоны: расстояние > 50см — горит только зелёный; 20–50см — горит только жёлтый (R+G одновременно); < 20см — горит только красный. В любой момент горит ровно один цвет. Выводите зону в Serial: 'ZONE: GREEN/YELLOW/RED'.

03
📊
Уровень: Hard 25m

Усреднение значений

10 измерений для стабильности

Миссия

Делайте 10 измерений подряд с паузой 60мс между ними, вычисляйте среднее. Выводите в Serial одновременно: 'Raw: XX cm | Avg: YY cm' — чтобы было видно разницу. Проверка: рукой резко дёрните перед датчиком — Raw скачет, Avg остаётся стабильным.

04
Уровень: Expert 35m

Бесконтактный выключатель

Включение LED жестом руки

Миссия

Подключите LED к GPIO 2. Логика: рука появилась перед датчиком (расстояние < 10см) на > 200мс — переключить состояние LED (вкл/выкл). После переключения — игнорировать датчик 800мс (защита от повторного срабатывания). Выводите в Serial: 'LED ON' или 'LED OFF' при каждом переключении. Проверка: медленное движение рукой = одно переключение, не несколько.

05
🚀

Свой Проект

Создайте уникальное устройство: умный парктроник, робота-пылесоса, счётчик объектов... Ограничений нет!

Открыть Симулятор →

Поздравляем! 🎉

Вы освоили ультразвуковые датчики! Теперь вы можете создавать парктроники, системы обнаружения препятствий, бесконтактные выключатели и другие умные устройства.