Как подключить HC-SR04 к ESP32
Echo через делитель 1 кОм и 2 кОм, питание 5 В.
Схема подключения
Открыть в конструктореСборка по шагам
7 шагов- 7 проводов по порядку: земля, питание, сигналы, детали.Нажмите на провод на схеме или строку таблицы, чтобы открыть его шаг.Стрелки ← → листают шаги.
- Шаг 1: GND датчика на GND платы
- Шаг 2: Vcc датчика на VIN платы5 В, датчик берёт около 15 мА, вывод даёт около 300 мА.
- Шаг 3: Trig датчика на D18 платы
- Шаг 4: вывод 2 резистора 1 кОм на Echo датчикаДелитель 1 кОм и 2 кОм: 5 В с Echo станут 3,3 В на D19.
- Шаг 5: вывод 1 резистора 1 кОм на D19 платыДелитель 1 кОм и 2 кОм: 5 В с Echo станут 3,3 В на D19.
- Шаг 6: вывод 1 резистора 1 кОм на вывод 1 резистора 2 кОмДелитель 1 кОм и 2 кОм: 5 В с Echo станут 3,3 В на D19.
- Шаг 7: вывод 2 резистора 2 кОм на GND платыДелитель 1 кОм и 2 кОм: 5 В с Echo станут 3,3 В на D19.
- Готово: 7 проводов на месте.Сверьте с таблицей соединений ниже.
Соединения
| Шаг | Откуда | Куда | Цвет |
|---|---|---|---|
| 1 | ESP32 DOIT GND | HC-SR04 GND | чёрный |
| 2 | ESP32 DOIT VIN | HC-SR04 Vcc | красный |
| 3 | ESP32 DOIT D18 | HC-SR04 Trig | белый |
| 4 | HC-SR04 Echo | Резистор 1 кОм 2 | белый |
| 5 | ESP32 DOIT D19 | Резистор 1 кОм 1 | белый |
| 6 | Резистор 1 кОм 1 | Резистор 2 кОм 1 | белый |
| 7 | ESP32 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: они работают лишь на вход.