Обзор
HC-SR04 — это универсальный ультразвуковой датчик расстояния, способный измерять расстояния до 4 метров с высокой точностью. Он широко используется в робототехнике и системах автоматизации благодаря низкой стоимости и простой работе.
HC-SR04 — ультразвуковой датчик расстояния с диапазоном измерения от 2 до 400 см. Использует ультразвуковые волны частотой 40 кГц для точного определения расстояния до объектов.
О датчике HC-SR04
HC-SR04 — это бюджетный ультразвуковой датчик расстояния, использующий ультразвуковые волны для определения расстояния до объектов. Он широко применяется в робототехнике, системах обнаружения препятствий и автоматизации.
⚡ Ключевые особенности
- Широкий диапазон — измеряет расстояния от 2 см до 400 см.
- Высокая точность — погрешность всего ±3 мм.
- Протокол Trigger/Echo — простой интерфейс с цифровыми импульсами.
- Рабочая частота — 40 кГц ультразвуковые волны.
- Низкое энергопотребление — идеален для батарейных проектов.
Приобретите HC-SR04
Характеристики HC-SR04
Полные технические характеристики ультразвукового датчика HC-SR04.
Распиновка HC-SR04
Датчик HC-SR04 имеет 4 вывода: питание (VCC), землю (GND), вход триггера (TRIG) и выход эхо (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 нужно использовать делитель напряжения.
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) |
Устранение неполадок 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++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
#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
Пример для ESPHome
Конфигурация для Home Assistant
sensor:
- platform: ultrasonic
trigger_pin: 5
echo_pin: 18
name: "Расстояние HC-SR04"
update_interval: 1s
Примечание: ESPHome автоматически создаёт делитель напряжения, если указать пины в конфигурации.
Пример для MicroPython
Python для микроконтроллеров
Python
Пример для MicroPython
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кОм.