
HC-SR04
Разные изготовители; спецификация ElecFreaks · HC-SR04, классический четырёхконтактный модуль 5 В
Ультразвуковой дальномер с отдельными TRIG/ECHO. Схема для классического 5-вольтового модуля и UNO R3.
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает HC-SR04, классический четырёхконтактный модуль 5 В
HC-SR04 определяет расстояние по времени возвращения ультразвукового эха. Подходит для учебных роботов и определения положения достаточно крупной отражающей поверхности.
Карточка относится к обычному HC-SR04 с VCC, TRIG, ECHO и GND, по документации ElecFreaks. Одноимённые платы разных изготовителей могут отличаться поведением при отсутствии эха, поэтому программа всегда ограничивает время ожидания.
Мягкие, маленькие или наклонённые предметы могут отражать сигнал плохо. Температура воздуха меняет скорость звука. Несколько ультразвуковых модулей запускайте по очереди, чтобы уменьшить взаимные помехи. Открытые преобразователи этого исполнения не предназначены для погружения в воду. Дальномер не является защитным устройством для опасных механизмов.
Фото: Suyash Dwivedi / Wikimedia Commons, CC BY-SA 4.0. Исходный фон удалён, модуль пропорционально масштабирован и размещён на фоне SLDV LAB; контакты, сетки излучателей, маркировка и форма не перерисованы. Лицензия адаптации фотографии — CC BY-SA 4.0. Производитель платы на фото не подтверждён.
Схема распиновки
Авторская схема SLDV LAB для классического четырёхконтактного HC-SR04 с питанием 5 В. Вид со стороны излучателей, разъём снизу: слева направо VCC, TRIG, ECHO, GND. Схема и электрические пределы не переносятся автоматически на HC-SR04P и другие 3,3-вольтовые исполнения.
Источники: спецификация ElecFreaks HC-SR04, с. 1–2 и руководство Adafruit по подключению HC-SR04.
Характеристики
- Заявленный диапазон
- 2–400 см
- Питание
- 5 В
- Частота ультразвукового пакета
- 40 кГц
- Минимальная длительность TRIG
- 10 мкс
- Рекомендованный период запуска
- Более 60 мс
- Интерфейс
- TRIG: вход запуска; ECHO: длительность импульса
- Питание модуля
- Классический HC-SR04 питается от 5 В; ECHO рассматривайте как 5-вольтовый выход. В примере UNO R3 допускает прямое соединение. К GPIO ESP32, Pico и Raspberry Pi ECHO напрямую не подключают: нужен рассчитанный делитель или преобразователь уровня. Варианты HC-SR04P и другие модули на 3,3 В имеют отдельные характеристики.
ПРАКТИКА
Подключение
| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| VCC | 5V | UNO R3; модуль 5 В. |
| GND | GND | Общая земля; подключать всё при снятом питании. |
| TRIG | D9 | Цифровой выход UNO R3, импульс HIGH 10 мкс. |
| ECHO | D10 | Цифровой вход UNO R3; прямое подключение допустимо только к совместимой 5-вольтовой логике. |
Подходит для Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги подключить классический HC-SR04 5 В. Уточни плату и измеряемые поверхности. Для UNO R3 используй TRIG D9, ECHO D10, VCC 5V и GND; дополнительные библиотеки не нужны. Дай полный скетч с импульсом 10 мкс, тайм-аутом ECHO и периодом более 60 мс. Отсутствие эха обозначай как ошибку, а не нулевое расстояние. Для платы 3,3 В сначала рассчитай согласование ECHO. Объясни влияние температуры и геометрии цели.
Библиотеки
Ссылки на библиотеки для этой модели ещё не добавлены.
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Пакет плат
Arduino AVR Boards 1.8.6UNO R3, ATmega328P; используется API ядра, библиотека датчика не нужна.
- TRIG / ECHO
D9 / D10Соответствуют константам скетча.
- Тайм-аут ECHO
30000Микросекунды, третий аргумент pulseIn().
- Пауза между попытками
100Миллисекунды; больше рекомендованных 60 мс.
Arduino UNO R3 · полный скетч
cppconst uint8_t TRIG_PIN = 9;
const uint8_t ECHO_PIN = 10;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
digitalWrite(TRIG_PIN, LOW);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
if (digitalRead(ECHO_PIN) == HIGH) {
Serial.println(F("ECHO stuck HIGH; check module"));
delay(100);
return;
}
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(3);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
unsigned long us = pulseIn(ECHO_PIN, HIGH, 30000UL);
if (us == 0) {
Serial.println(F("No echo before timeout"));
} else {
float cm = us / 58.0f;
if (cm < 2 || cm > 400) {
Serial.println(F("Outside nominal measurement range"));
} else {
Serial.print(F("Distance_cm=")); Serial.println(cm, 1);
}
}
delay(100);
}
Полный скетч UNO R3, Arduino AVR Boards 1.8.6; API pulseIn и распиновка проверены по исходникам и документации. Компиляция и аппаратный тест не выполнялись. Serial Monitor: 115200 бод. Поставьте перед датчиком крупную плоскую цель, затем изменяйте расстояние. Деление на 58 — приближённый пересчёт из документации, без температурной компенсации. Тайм-аут ограничивает ожидание программы; некоторые клоны после пропущенного эха требуют перезапуска питания модуля. Ноль от pulseIn не означает 0 см.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.
