Как подключить HC-SR04 к ESP32

Echo через делитель 1 кОм и 2 кОм, питание 5 В.

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

Открыть в конструкторе

Соединения

ШагОткудаКудаЦвет
1ESP32 DOIT GNDHC-SR04 GNDчёрный
2ESP32 DOIT VINHC-SR04 Vccкрасный
3ESP32 DOIT D18HC-SR04 Trigбелый
4HC-SR04 EchoРезистор 1 кОм 2белый
5ESP32 DOIT D19Резистор 1 кОм 1белый
6Резистор 1 кОм 1Резистор 2 кОм 1белый
7ESP32 DOIT GNDРезистор 2 кОм 2чёрный

Проверка питания и проводов

  • Проверка схемы, та же, что в конструкторе, не нашла ошибок: напряжения выводов совпадают, земля общая, шины подключены целиком.
  • HC-SR04 берёт около 15 мА с вывода VIN ESP32 DOIT, вывод даёт около 300 мА: USB даёт 500 мА, часть берёт сама плата.

Ток всей схемы и сколько она проработает от аккумулятора: расчёт питания. Где что втыкать: схема на макетке.

Пример кода

Arduino IDE, без библиотек, ядро ESP32 для Arduino 3.x.

const int TRIG = 18, ECHO = 19;

void setup() {
  Serial.begin(115200);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
}

void loop() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  // нет эха за 30 мс: дальше 5 м или впереди пусто
  unsigned long us = pulseIn(ECHO, HIGH, 30000);
  if (us) Serial.printf("%.1f см\n", us / 58.0);
  delay(200);
}

Распиновки деталей

Как подключено

HC-SR04 питается от 5 В: у ESP32 DevKit это вывод VIN, на нём 5 В от USB. Trig получает импульс 10 мкс от GPIO18. Echo отдаёт ответ уровнем 5 В, а пины ESP32 рассчитаны на 3,3 В. Echo идёт на GPIO19 через делитель: 1 кОм сверху и 2 кОм к земле дают 5 × 2 / 3 = 3,3 В.

Длительность импульса на Echo в микросекундах делят на 58 и получают сантиметры: так написано в руководстве к модулю (ElecFreaks HC-SR04 User Guide). pulseIn с пределом 30 000 мкс возвращает 0, если эхо не вернулось.

Частые ошибки

  • Подключают Echo к ESP32 напрямую. Конструктор ставит на такой провод ошибку: 5 В на пине 3,3 В. Пин может проработать какое-то время и выйти из строя.
  • Меняют резисторы местами: 2 кОм сверху и 1 кОм к земле дают 1,7 В. По даташиту ESP32 высокий уровень начинается от 0,75 × 3,3 = 2,5 В, и импульс Echo пин не увидит.

Частые вопросы

Работает ли Trig от 3,3 В?
Производители модуля этого не пишут. На большинстве модулей импульса 3,3 В хватает. Если не хватает, есть HC-SR04P и RCWL-1601, они работают от 3,3 В целиком.
Какие пины ESP32 брать для HC-SR04?
Любые GPIO с выходом для Trig и любой вход для Echo, кроме strapping-пинов 0, 2, 5, 12 и 15 и пинов flash 6-11. GPIO34-39 годятся только для Echo: они работают лишь на вход.

Пригодится ещё