🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


📡 Проект: включение света по СВЧ-датчику движения RCWL-0516

Датчик движения RCWL-0516 и модуль реле

RCWL-0516 ловит движение по доплеровскому сдвигу микроволн — работает даже через тонкую дверь или гипсокартон, в отличие от PIR-датчиков. Модуль реле включает свет на заданное время.

Как это работает

RCWL-0516 излучает слабый СВЧ-сигнал на частоте около 3.2 ГГц и анализирует отражённый сигнал на эффект Доплера — любое движущееся тело в зоне обзора немного меняет частоту отражённой волны, и модуль это детектирует, выдавая HIGH на выходе. Так как радиоволны проходят через непроводящие материалы (дерево, гипсокартон, тонкое стекло), этот датчик продолжает «видеть» движение, даже если сам спрятан за дверью или внутри корпуса светильника — то, что недоступно PIR-датчикам, которым нужна прямая оптическая видимость.

Логика кода держит реле включённым определённое время (`onDuration`) после последнего зафиксированного движения, а не выключает свет мгновенно. Благодаря использованию `millis()` вместо `delay()`, каждое новое движение просто обновляет `lastTrigger` и сдвигает момент выключения дальше — свет гаснет только после периода полной тишины, а не рывками при каждом отдельном срабатывании.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Подключите RCWL-0516: OUT → D2, VIN → 5V, GND → GND (у этого модуля отдельный вывод VIN, не просто VCC).
  2. Подключите модуль реле KY-019: сигнал → D7, VCC → 5V, GND → GND.
  3. Подключите светильник к силовым контактам реле через отдельное питание (не напрямую к Arduino).
  4. Подберите `onDuration` под свою задачу — чем дольше коридор используется за один проход, тем больше нужно времени.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

const int sensorPin = 2;
const int relayPin = 7;
const unsigned long onDuration = 30000; // держать свет после последнего движения, мс

unsigned long lastTrigger = 0;

void setup() {
  Serial.begin(9600);
  pinMode(sensorPin, INPUT);
  pinMode(relayPin, OUTPUT);
}

void loop() {
  if (digitalRead(sensorPin) == HIGH) {
    lastTrigger = millis();
  }

  if (millis() - lastTrigger < onDuration) {
    digitalWrite(relayPin, HIGH);
  } else {
    digitalWrite(relayPin, LOW);
  }
}

Используется таймер на `millis()` вместо `delay()` — свет не гаснет резко, а продлевает время при каждом новом движении, пока датчик срабатывает.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🔴 лазерная растяжка на KY-008 и фоторезистор…🟢 индикатор присутствия на мини-PIR HC-SR505… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 175 ₽ 158 ₽ (экономия 17 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA