ДатчикиРасстояние

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 В имеют отдельные характеристики.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
VCC5VUNO R3; модуль 5 В.
GNDGNDОбщая земля; подключать всё при снятом питании.
TRIGD9Цифровой выход UNO R3, импульс HIGH 10 мкс.
ECHOD10Цифровой вход 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.6

UNO R3, ATmega328P; используется API ядра, библиотека датчика не нужна.

TRIG / ECHO
D9 / D10

Соответствуют константам скетча.

Тайм-аут ECHO
30000

Микросекунды, третий аргумент pulseIn().

Пауза между попытками
100

Миллисекунды; больше рекомендованных 60 мс.

Arduino UNO R3 · полный скетч

cpp
const 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 см.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты