Подключение датчика движения HC-SR501 к ESP32
Датчик движения (PIR)
HC-SR501 к ESP32 — три провода: питание от VIN (5 В с USB), земля и OUT на любой GPIO. Выход датчика около 3,3 В, поэтому подключать его к ESP32 можно напрямую.
Схема подключения датчика движения HC-SR501 к ESP32
| HC-SR501 | ESP32 |
|---|---|
| OUT | GPIO27 |
| VCC | VIN |
| GND | GND |
Схема из примера «Датчик движения HC-SR501: свет по движению».
Выводы HC-SR501
| Вывод | Назначение |
|---|---|
| OUT | цифровой выход: высокий уровень при движении |
| VCC | питание модуля, 5 В |
| GND | общий провод |
Код для ESP32
// Свет по движению.
//
// Выход HC-SR501 цифровой: есть движение — высокий уровень, нет — низкий.
// Питается модуль от 5 В (вывод VIN платы), а выход у него 3,3 В, так что
// напрямую подходит ESP32.
//
// В симуляторе нажатие на линзу переключает «движение есть / нет».
const int PIR = 27;
const int LED = 2;
const unsigned long HOLD_MS = 5000; // сколько держать свет после последнего движения
unsigned long lastMotion = 0;
bool lit = false;
void setup() {
Serial.begin(115200);
pinMode(PIR, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
if (digitalRead(PIR) == HIGH) {
lastMotion = millis();
if (!lit) {
lit = true;
digitalWrite(LED, HIGH);
Serial.println("движение — свет включён");
}
}
// Выключаем только после паузы: датчик сам коротко «гаснет» между
// движениями, и без паузы свет дёргался бы.
if (lit && millis() - lastMotion > HOLD_MS) {
lit = false;
digitalWrite(LED, LOW);
Serial.println("тихо — свет выключен");
}
delay(20);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на ESP32
- Питание модуля берите с вывода VIN (5 В), а не с 3V3. Сигнал OUT читается как обычный цифровой вход.
- Чтобы разбудить ESP32 из глубокого сна по движению, нужен RTC-вывод (например, GPIO27 или GPIO33) и пробуждение по высокому уровню.
Частые ошибки при подключении к ESP32
- Питание датчика от 3V3 ESP32: модуль не включается как следует.
- OUT на GPIO6–11: эти выводы заняты флеш-памятью платы.
- Питание от 3,3 В: модуль не включается или срабатывает хаотично. Нужны 5 В.
- Скетч не ждёт прогрева: в первую минуту датчик срабатывает сам по себе. Игнорируйте выход первые 30–60 секунд.
- Подсчёт срабатываний по уровню, а не по фронту: пока выход высокий, счётчик растёт на каждом проходе
loop(). - Датчик у обогревателя, кондиционера или на сквозняке: он видит изменение тепла и срабатывает без людей.
Ещё по теме
Другие детали для ESP32
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637MPU6050 (GY-521)Модуль релеWS2812B (NeoPixel)KY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595ИК-приёмник (VS1838B)TFT ST7735 1,8″Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодDS18B20Ползунковый переключательTTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21DSN65HVD230