Ультразвуковой датчик HC-SR04
Научитесь измерять расстояние с помощью эхолокации и создавайте парктроники и системы обнаружения препятствий.
Подготовка оборудования
ESP32 DevKit
Любая версия (30/38 пинов)
HC-SR04 датчик
Ультразвуковой 2-400см
Buzzer (опц.)
Звуковая сигнализация
Макетная плата
400 точек + джамперы
Принцип эхолокации
Как работает датчик
HC-SR04 излучает ультразвук (40 кГц), который отражается от препятствий. Датчик измеряет время возвращения эха и рассчитывает расстояние.
Trig
Передатчик
Echo
Приёмник
Характеристики HC-SR04
| Параметр | Значение |
|---|---|
| Напряжение | 5V DC |
| Ток | 15mA |
| Частота | 40 кГц |
| Диапазон | 2-400 см |
| Точность | ±3 мм |
| Угол обзора | 15° |
💡 Формула расчёта
Расстояние = (Время × Скорость звука) / 2
Скорость звука = 343 м/с (при 20°C)
Distance (см) = Duration (мкс) / 58
Временная диаграмма
10мкс импульс
Короткий HIGH импульс на Trig запускает измерение расстояния.
Echo HIGH
Длительность пропорциональна расстоянию. Измеряется через pulseIn().
Расчёт
duration / 58 = расстояние в см. Деление на 2 — туда и обратно.
📊 Таблица расстояний
2 см
116 мкс
50 см
2900 мкс
200 см
11600 мкс
Схема подключения
VCC Подключите 5V к красному проводу
GND Общая земля с ESP32 к чёрному проводу
Trig Жёлтый провод → GPIO 5 (OUTPUT)
Echo Зелёный провод → GPIO 18 (INPUT)
ℹ️ Примечание
HC-SR04 работает от 5V, но сигнальные пины совместимы с 3.3V логикой ESP32. Echo напрямую подключается к GPIO.
Программирование
Библиотеки не требуются
HC-SR04 использует стандартные функции Arduino: digitalWrite(), pulseIn()
Для работы нужны только pinMode() и pulseIn()
Код работает без внешних библиотек — всё встроено в Arduino IDE
Код в Arduino IDE
Монитор порта
Точность измерений
Визуализация работы датчика: измерение расстояния до препятствия в реальном времени
Оптимальный диапазон
2-200 см — высокая точность (±3 мм). Идеально для парктроников.
Ограниченная точность
200-400 см — точность падает. Подходит для грубых измерений.
Мёртвая зона
0-2 см — физическое ограничение. Датчик не измеряет.
Возможные проблемы
Всегда показывает 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).
Цех Испытаний
Отточите мастерство измерения расстояния. Каждая задача — шаг к созданию умных систем.
Простое измерение
Вывод расстояния в порт
Подключите HC-SR04: TRIG→GPIO 5, ECHO→GPIO 18. Измеряйте расстояние и выводите в монитор порта каждые 500мс строго в формате 'Distance: 23 cm'. Проверка: поднесите руку на 10см — значение ~10, отодвиньте на 50см — ~50. Значения > 400 или = 0 выводите как 'Out of range'.
Парктроник
Buzzer пищит при препятствии
Подключите active buzzer к GPIO 21. Реализуйте парктроник: расстояние > 50см — тишина; 30–50см — одиночный писк 100мс каждые 500мс; 10–30см — двойной писк 100мс с паузой 100мс каждые 300мс; < 10см — непрерывный звук. Результат: чем ближе объект, тем чаще и интенсивнее сигнал.
Световая индикация
RGB светодиод: зелёный/жёлтый/красный
Подключите RGB светодиод: R→GPIO 16, G→GPIO 17, B→GPIO 4. Реализуйте 3 зоны: расстояние > 50см — горит только зелёный; 20–50см — горит только жёлтый (R+G одновременно); < 20см — горит только красный. В любой момент горит ровно один цвет. Выводите зону в Serial: 'ZONE: GREEN/YELLOW/RED'.
Усреднение значений
10 измерений для стабильности
Делайте 10 измерений подряд с паузой 60мс между ними, вычисляйте среднее. Выводите в Serial одновременно: 'Raw: XX cm | Avg: YY cm' — чтобы было видно разницу. Проверка: рукой резко дёрните перед датчиком — Raw скачет, Avg остаётся стабильным.
Бесконтактный выключатель
Включение LED жестом руки
Подключите LED к GPIO 2. Логика: рука появилась перед датчиком (расстояние < 10см) на > 200мс — переключить состояние LED (вкл/выкл). После переключения — игнорировать датчик 800мс (защита от повторного срабатывания). Выводите в Serial: 'LED ON' или 'LED OFF' при каждом переключении. Проверка: медленное движение рукой = одно переключение, не несколько.
Свой Проект
Создайте уникальное устройство: умный парктроник, робота-пылесоса, счётчик объектов... Ограничений нет!
Поздравляем! 🎉
Вы освоили ультразвуковые датчики! Теперь вы можете создавать парктроники, системы обнаружения препятствий, бесконтактные выключатели и другие умные устройства.