Подключение датчика движения HC-SR501 к ESP32

Датчик движения (PIR)

HC-SR501 к ESP32 — три провода: питание от VIN (5 В с USB), земля и OUT на любой GPIO. Выход датчика около 3,3 В, поэтому подключать его к ESP32 можно напрямую.

Схема подключения датчика движения HC-SR501 к ESP32

HC-SR501ESP32
OUTGPIO27
VCCVIN
GNDGND

Схема из примера «Датчик движения HC-SR501: свет по движению».

Датчик движения 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

Частые ошибки при подключении к ESP32

Другие детали для ESP32