Мікрохвильовий датчик руху RCWL-0516: бачить крізь стіни, але вірити йому треба обережно
Доплерівський радар на 3.2 ГГц за ціною PIR-датчика: реагує на рух крізь пластик і тонкі стіни, не залежить від температури. Але вентилятор чи штора теж для нього «людина». Збираємо світло, яке вмикається, лише коли радар і PIR згодні.
Про проєкт
PIR-датчик реагує на тепло, тому його сліпить сонце, а в спеку він майже не бачить людину. RCWL-0516 працює інакше: випромінює слабкий сигнал на ~3.2 ГГц і ловить доплерівський зсув від рухомих предметів. Він бачить крізь пластиковий корпус, двері й гіпсокартон на 5–7 м. Зворотний бік — він реагує на будь-який рух: вентилятор, штору на протязі, навіть людину за стіною в сусідній кімнаті.
Що потрібно
- ESP32 DevKit
- Модуль RCWL-0516
- PIR-датчик HC-SR501 (для перехресної перевірки)
- Світлодіод і резистор 220 Ом або модуль реле
Схема
| Модуль | Вивід | ESP32 |
|---|---|---|
| RCWL-0516 | VIN | 5V (4–28 В) |
| GND | GND | |
| OUT | GPIO16 | |
| HC-SR501 | VCC | 5V |
| OUT | GPIO17 | |
| GND | GND | |
| Світлодіод | GPIO26 → 220 Ом → GND |
Вивід 3V3 на RCWL-0516 — це вихід вбудованого стабілізатора (до 100 мА), а не вхід живлення. Живлять модуль через VIN. Вихід OUT дає 3.3 В навіть при живленні 12 В, тож його можна під'єднати до ESP32 напряму. Вивід CDS призначений для фоторезистора: якщо притягнути його до GND, датчик вимикається (для «нічного» режиму).
Налаштування на платі
- C-TM — конденсатор, що задає тривалість сигналу (за замовчуванням ~2 с). Більша ємність дає довший імпульс.
- R-GN — резистор дальності. Якщо припаяти 1 МОм, радіус зменшиться з ~7 до ~5 м.
Пам'ятайте про «сліпу» зону за антеною: з боку компонентів датчик теж бачить, але гірше. Метал поруч (корпус, радіатор) ламає діаграму спрямованості.
Два датчики — одна правда
Надійний прийом — вмикати світло, лише коли обидва датчики бачать рух: радар відсікає хибні спрацювання PIR від сонця й батарей, а PIR — хибні спрацювання радара від вентилятора і руху за стіною. У симуляторі в радара ввімкнено властивість «Поруч працює вентилятор»: він спрацьовує сам кожні 6–16 секунд, і в моніторі порту видно, що такі сигнали ігноруються.
Код
// Світло за рухом: радар RCWL-0516 + PIR — вмикаємо, лише коли згодні обидва
const int RADAR_PIN = 16;
const int PIR_PIN = 17;
const int LAMP_PIN = 26;
const unsigned long HOLD_MS = 10000; // скільки світити після останнього руху
unsigned long lastMotion = 0;
bool lampOn = false;
bool lastRadar = false;
void setup() {
Serial.begin(115200);
pinMode(RADAR_PIN, INPUT);
pinMode(PIR_PIN, INPUT);
pinMode(LAMP_PIN, OUTPUT);
}
void loop() {
bool radar = digitalRead(RADAR_PIN) == HIGH;
bool pir = digitalRead(PIR_PIN) == HIGH;
if (radar && !lastRadar) {
Serial.println(pir ? "Радар + PIR: рух" : "Лише радар: ігноруємо (вентилятор? штора?)");
}
lastRadar = radar;
if (radar && pir) lastMotion = millis();
bool on = lastMotion != 0 && millis() - lastMotion < HOLD_MS;
if (on != lampOn) {
lampOn = on;
digitalWrite(LAMP_PIN, on ? HIGH : LOW);
Serial.println(on ? "Світло увімкнено" : "Світло вимкнено");
}
delay(50);
}
У симуляторі клацніть по PIR-датчику, а потім по радару — світло ввімкнеться. Спрацювання одного радара від «вентилятора» світло не вмикають.
Корисно знати
- Живлення. Від 3.3 В модуль нестабільний; підключайте VIN до 5V.
- Два радари поруч заважають один одному (биття частот). Розносьте їх на 1 м і більше.
- Wi-Fi. Сам радар не заважає Wi-Fi (інший діапазон), але антена ESP32 впритул до модуля може давати хибні спрацювання. Кілька сантиметрів відстані зазвичай вистачає.