Обнаружение движения является одной из важнейших функций в системах охранной сигнализации, выключателях света и многих других домашних и промышленных применениях. Для обнаружения движения можно использовать несколько подходов, например, PIR датчик, который обнаруживает изменение инфракрасной энергии, выделяемой телом человека, и на основании этого способен обнаруживать наличие человека в контролируемой зоне.

В этой статье мы рассмотрим подключение доплеровского датчика движения (Doppler Radar Sensor) RCWL-0516 к плате Arduino Nano. RCWL-0516 представляет собой датчик обнаружения движения, который обнаруживает движение объектов, которые полностью или частично отражают радиоволны (даже если они находятся за стенами или другими материалами). Он способен обнаруживать не только людей, но и другие движущиеся объекты. Еще RCWL-0516 называют микроволновым датчиком движения или датчиком движения на эффекте Доплера.
Необходимые компоненты
- Плата Arduino Nano (купить на AliExpress).
- RCWL-0516 Doppler Radar Sensor (доплеровский датчик движения) (купить на AliExpress).
- Резистор 220 Ом (купить на AliExpress).
- Светодиод (купить на AliExpress).
Доплеровский датчик движения (Doppler Radar Sensor) RCWL-0516
Микроволновый радарный датчик RCWL-0516 был разработан как альтернатива обычным PIR датчикам движения, широко применяющимся в различных системах безопасности. Как и PIR датчики, он обнаруживает только движение в пределах своего радиуса действия. Но вместо обнаружения тепла от тела человека (или животного) он для обнаружения движения использует так называемую технологию микроволнового допплеровского радара (microwave Doppler radar). Принцип работы датчика показан в следующем видео.
Доплеровский датчик движения RCWL-0516 способен определять движение объектов (препятствий), которые полностью или частично отражают радиоволны (люди, животные, металлы и т.д.), даже если они находятся за деревом (дверью), стеной (гипс, бетон), пластиками, стеклами и т.д. В основе работы датчика лежит эффект Доплера — изменение частоты отражённой волны вследствие движения излучателя, приёмника или отражателя. В данном модуле частота излучаемой им радиоволны меняется вследствие движения отражателя (препятствия). Модуль построен на базе чипа RCWL-9196 который оснащён передатчиком и приёмником. Датчик сработает если приёмник примет сигнал, частота которого незначительно отличается от частоты сигнала передатчик. Датчик обнаруживает движение во всем диапазоне от 0 до 360 градусов - слепых зон нет.
Распиновка датчика показана на следующем рисунке.

Назначение контактов датчика RCWL-0516:
- OUT - выход датчика (устанавливается в «1» при наличии движений + задерживается на 2 секунды после их прекращения).
- VIN - вход напряжения питания, от +4 до +28 В постоянного тока.
- GND - вход питания (общий).
- 3V3 - выход стабилизированного напряжения питания 3,3 В (можно использовать для питания микроконтроллеров).
- COS - вход разрешения (подтянут внутренним сопротивлением чипа). Если на данном выводе установить уровень логического «0», то после сброса триггера, он не будет устанавливаться (датчик перестанет реагировать на движения).
Выход «OUT» можно подключать к любому контакту платы Arduino. Вход «COS» можно оставить не подключённым, т.к. он подтянут внутренним сопротивлением чипа, следовательно, разрешает работу триггера. Напряжение питания датчика составляет от 4 до 28 В постоянного тока, подаётся на выводы «VIN» и «GND» модуля.
Предупреждение: не подключайте питание к выходу «3V3» датчика! Контакт датчика «3V3» является выходом стабилизированного напряжения 3,3 В. От этого напряжения можно запитывать другие маломощные устройства, например, микроконтроллер.
Модуль датчика RCWL-0516 обладает высокой чувствительностью, большой дистанцией и углом обнаружения, высокой надежностью и широким диапазоном питающих напряжений. Он находит применение в разнообразных системах обнаружения движения. Датчик RCWL-0516 может получать питание от источников с напряжением от 4 до 28V DC и оснащен чипом RCWL-9196. Его диапазон работы составляет около 7 метров. При обнаружении движения датчик переключает свой выходной контакт OUT с состояния LOW (0 V) на состояние HIGH (3.3 V) на определенный промежуток времени (от 2 до 3 секунд) перед тем как снова вернуться в холостое (idle) состояние (LOW).
Когда датчик срабатывает, на его выходе «OUT» устанавливается уровень логической «1». Датчик снабжен триггером, который удерживает уровень логической «1» на выходе «OUT» в течении 2 сек ±30% после прекращения движения.
Если датчик многократно срабатывает, например, постоянно фиксирует движения в течении 10 секунд, то уровень логической «1» на выходе «OUT» будет установлен на 12 секунд с момента первого срабатывания (10 секунд во время фиксации движений + 2 секунды после их прекращения, пока не «сбросится» триггер).
Технические характеристики датчика RCWL-0516:
1. Входное напряжение питания (VIN): 4… 28 В постоянного тока.
2. Потребляемый ток: до 3 мА (номинально 2,8 мА).
3. Дальность обнаружения: до 9 м (номинально до 5 м).
4. Мощность передатчика: до 30 мВт (номинально до 20 мВт).
5. Частота передатчика: 3,181 ГГц.
6. Время задержки до сброса триггера: 2 сек ±30%.
7. Выходное напряжение питания (3V3): 3,2… 3,4 В (номинально 3,3 В).
8. Максимальный ток на выходе «3V3»: до 100 мА.
9. Рабочая температура: -20… +80 °С.
10. Температура хранения: -40… +100 °С.
11.Габариты: 17,3х35,9 мм
12. Вес: 4 гр.
Компоненты датчика RCWL 0516
Модуль датчика RCWL 0516 включает в себя ASIC чип RCWL9196 от компании RCWL, упакованного в 16-контактный корпус формата SOIC. Помимо ряда дополнительных компонентов (complimentary components) модуль датчика также содержит высокочастотный генератор на одном транзисторе, который генерирует микроволновый сигнал с частотой около 3,175 ГГц и длиной волны 9,45 см (соответственно, половина длины волны составляет 4, 725 см). Также в состав модуля датчика RCWL 0516 входит светодиод, который показывает подано ли на модуль питание.

На следующем рисунке, взятого из даташита на датчик RCWL 0516, показана его частотная характеристика.

А на следующем рисунке показана внутренняя структура чипа RCWL9196 с характеристиками режимов работы его контактов, а также вид чипа со снятой крышкой.

Схема датчика RCWL 0516
Схема датчика RCWL 0516 показана на рисунке ниже. Как уже было указано ранее, его основным компонентом является чип RCWL-9196. Напряжение 3.3V модуля датчика непосредственно берется с контакта VDD чипа RCWL-9196.
Напечатанная на печатной плате антенна работает в качестве излучателя. Вместе с транзистором она образует высокочастотный генератор, формирующий микроволновый сигнал на частоте 3,175 ГГц.
Наиболее часто задаваемые вопросы про датчик RCWL 0516
Как работает микроволновый датчик движения?
Датчик испускает маломощный непрерывный сигнал высокой частоты в заданную область пространства и затем анализирует отраженный сигнал. Детектор датчика обнаруживает изменение частоты отраженной волны при ее отражении от движущегося объекта.
Как блокировать работу датчика?
Накрыть его каким-нибудь материалом, блокирующим (отражающим) радиоволны, например, алюминиевой фольгой.
Какими преимуществами обладает микроволновый датчик движения?
Радиоволны высокой частоты, испускаемые датчиком, способны проникать сквозь стены и отверстия, что увеличивает его возможный диапазон обнаружения по сравнению с другими типами датчиков движения.
Регулировка дальности обнаружения датчика RCWL-0516
У датчика RCWL-0516 нет регулировки дальности обнаружения с помощью потенциометра, как, например, у некоторых ультразвуковых или инфракрасных датчиков.
Его чувствительность и, как следствие, дальность обнаружения зафиксирована на аппаратном уровне и зависит от номиналов установленных на плате компонентов (резисторов и конденсаторов).
Однако есть несколько рабочих способов косвенно повлиять на зону и эффективную дальность обнаружения. Давайте разберем их по порядку.
1. Основной фактор: Напряжение питания (VIN)
Это самый эффективный способ "регулировки".
Зависимость: дальность обнаружения напрямую зависит от напряжения питания.
Как работает:
- 5V: Максимальная заявленная дальность (около 5-7 метров).
- 3.3V: Дальность заметно снижается (до примерно 2-3 метров).
- < 3V: Дальность падает до минимума, датчик может перестать стабильно работать.
Как использовать:
Если вам не нужна максимальная дальность, вы можете запитать датчик не от 5V, а от 3.3V выхода вашего микроконтроллера (Arduino, ESP32 и т.д.). Это безопасно, так как датчик полностью совместим с этим напряжением.
Важно: Не используйте для этого резистор или диод — они не дадут стабильного напряжения и внесут помехи. Подавайте стабильное напряжение 3.3V непосредственно с источника.
2. Физическое экранирование и направление
Вы можете ограничить или сфокусировать зону обнаружения, создав импровизированный "козырек" или трубку.
-
Для уменьшения зоны: Наденьте на датчик короткую трубку (например, от ручки) или сделайте козырек из фольги. Это ограничит угол обзора и сделает датчик более направленным, "вырезав" из его зоны чувствительности ближние участки по бокам.
-
Материалы: Используйте материалы, не проводящие ток (пластик, картон). Металлический экран может нарушить работу антенны.
3. Программная фильтрация на стороне микроконтроллера
Это самый гибкий и мощный метод. Вы не меняете физическую дальность, но меняете реакцию системы на сигнал с датчика.
-
Задержка включения (Debounce): Датчик может ловить мелкие помехи. Добавляя задержку, вы игнорируете короткие срабатывания.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
const int sensorPin = 2; // Пин подключения OUT датчика bool sensorState = false; unsigned long lastTrigger = 0; const unsigned long cooldown = 2000; // Не реагировать 2 секунды после срабатывания void setup() { pinMode(sensorPin, INPUT); Serial.begin(9600); } void loop() { if (digitalRead(sensorPin) == HIGH) { if (millis() - lastTrigger > cooldown) { Serial.println("Обнаружено движение!"); // Ваш код (включить свет, звук и т.д.) lastTrigger = millis(); // Запомнить время последнего срабатывания } } } |
-
Калибровка по количеству срабатываний: Можно считать количество срабатываний за определенный промежуток времени и реагировать только если их было больше N. Это помогает отфильтровать случайные помехи.
4. Что НЕЛЬЗЯ делать (Важно!)
-
Не пытайтесь паять дополнительные компоненты (переменные резисторы, конденсаторы) в схему, не понимая ее досконально. Микроволновый датчик — это высокочастотное устройство, и любое вторжение в плату нарушит его работу, вплоть до полного отказа.
-
Не закрывайте датчик металлическим экраном — это собьет настройки антенны.
Итог
Прямой "крутилки" для регулировки дальности на RCWL-0516 нет. Лучший компромисс — это запитать его от 3.3V для умеренного снижения дальности и добавить программную задержку в код микроконтроллера для игнорирования повторных срабатываний. Для сложных задач используйте направляющие экраны.
Схема проекта
Схема подключения доплеровского датчика движения RCWL-0516 к плате Arduino представлена на следующем рисунке.

Как видите, схема подключения датчика RCWL-0516 к плате Arduino достаточно проста: его контакты VIN и GND соединяются с контактами 5V и GND платы Arduino Nano, а его выход (контакт OUT) соединяется с контактом D12 платы Arduino Nano. Светодиод подключен к контакту D3 платы Arduino Nano.
Внешний вид собранной на макетной плате конструкции проекта показан на следующем рисунке.

Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
В коде программы сначала объявим используемые контакты.
|
1 2 |
int Sensor = 12; int LED = 3; |
Затем, в функции setup() инициализируем последовательную связь со скоростью 9600 бод для целей отладки и установим режимы работы используемых контактов (на ввод или вывод данных).
|
1 2 3 4 5 6 |
void setup() { Serial.begin(9600); pinMode (Sensor, INPUT); pinMode (LED, OUTPUT); Serial.println("Waiting for motion"); } |
Далее, внутри функции loop(), мы будем считывать состояние контакта, к которому подключен датчик движения, с помощью функции digitalRead(). И если значение на данном контакте больше 0, мы будем включать светодиод, иначе мы будем выключать светодиод.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void loop() { int val = digitalRead(Sensor); //Read Pin as input if((val > 0) && (flg==0)) { digitalWrite(LED, HIGH); Serial.println("Motion Detected"); flg = 1; } if(val == 0) { digitalWrite(LED, LOW); Serial.println("NO Motion"); flg = 0; } |
После того как аппаратная часть проекта будет готова, загрузите программу в плату Arduino. Откройте окно монитора последовательного порта на скорости 9600 бод и совершайте какие-нибудь движения неподалеку от датчика – наблюдайте как будет включаться/выключаться светодиод и будут печататься соответствующие сообщения в окне монитора последовательной связи.

PIR датчик против доплеровского датчика движения RCWL-0516 - что лучше
PIR датчики обнаруживают движение с помощью обнаружения тепла, излучаемого человеческим телом. Они идеально подходят для случаев, когда заранее известны образцы (шаблоны) движения, например, на дорожке (аллее). Чтобы иметь хорошую площадь покрытия PIR датчик необходимо располагать на некотором возвышении и под правильным углом, соответственно, его легко может обнаружить и сломать злоумышленник.
С другой стороны, микроволновые датчики (подобные RCWL-0516) идеальны для больших площадей. Они имеют значительно лучшую чувствительность по сравнению с PIR датчиками, но они могут иногда ложно срабатывать, например, из-за деревьев, качающихся под действием ветра. Но зато они могут обнаруживать движение сквозь некоторые препятствия: пластик, стекло, тонкие стены.
Большинство PIR датчиков подвержено влиянию климата, особенно высоких температур. Их чувствительность оставляет желать лучшего в случае если температура окружающей среды превышает 35 градусов Цельсия. В то же время микроволновые датчики обеспечивают устойчивую работу в диапазоне температур от -20°C до 45°C. По сравнению с PIR датчиками микроволновые датчики имеют больший жизненный цикл и могут корректно работать даже после 100 тыс. часов непрерывной работы.
То есть, каждый из этих датчиков хорош по своему, нельзя сказать, что какой то из них во всем лучше чем другой. Но если вам нужен всепогодный датчик для обнаружения движения на большой площади с высокой точностью, то вам лучше использовать микроволновый датчик (подобный RCWL-0516).
Исходный код программы (скетча)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
int Sensor = 12; int LED = 3; int flg = 0; void setup() { Serial.begin(9600); pinMode (Sensor, INPUT); pinMode (LED, OUTPUT); Serial.println("Waiting for motion"); } void loop() { int val = digitalRead(Sensor); //Read Pin as input if((val > 0) && (flg==0)) { digitalWrite(LED, HIGH); Serial.println("Motion Detected"); flg = 1; } if(val == 0) { digitalWrite(LED, LOW); Serial.println("NO Motion"); flg = 0; } } |





А как подключить к esp32 у вас не написано. Только про Ардуино хотя ардуино давно морально устарела
Она не устарела, для обучения она до сих пор хорошо подходит. А для более продвинутых проектов в последнее время вышли и продвинутые модели плат Ардуино.
А подключить датчик движения RCWL-0516 к ESP32 довольно просто. Этот датчик использует микроволновое излучение для обнаружения движения и выдает простой цифровой сигнал (HIGH при обнаружении движения, LOW в состоянии покоя).
Схема подключения
У RCWL-0516 есть 5 контактов, но для базовой работы с ESP32 понадобятся только три из них . Важно подключать питание именно к контакту VIN, так как это вход для питания датчика. Контакт 3V3 на датчике является выходом для питания других устройств (например, Arduino) и не предназначен для питания самого датчика.
RCWL-0516 ESP32 Примечание
VIN VIN (или 5V) Питание датчика. Допустимо от 4 до 28В. На большинстве плат ESP32 есть выход 5В, который подходит идеально .
GND GND Общий "минус" или "земля" схемы.
OUT GPIO 15 (или любой другой) Выходной сигнал. При обнаружении движения здесь будет 3.3В (HIGH). Можно использовать любой удобный GPIO, например 4, 12, 14 .
Остальные контакты (3V3 и CDS) оставьте неподключенными.
Код для Arduino IDE
Программа очень простая: мы читаем состояние с выбранного пина и выводим сообщение в монитор порта.
Запустите Arduino IDE.
Убедитесь, что выбрана ваша плата ESP32. Для этого в меню выберите Инструменты -> Плата -> ESP32 Arduino -> (ваша плата, например, NodeMCU-32S).
Выберите порт, к которому подключена ESP32: Инструменты -> Порт.
Скопируйте и вставьте следующий код в новое окно:
// Номер пина ESP32, к которому подключен выход OUT датчика
const int motionSensorPin = 15;
// Переменная для хранения состояния датчика
int motionDetected = LOW;
void setup() {
// Запуск последовательной связи для вывода сообщений
Serial.begin(115200);
// Настройка пина датчика на ВХОД
pinMode(motionSensorPin, INPUT);
Serial.println("Датчик движения RCWL-0516 готов.");
Serial.println("Ожидание движения...");
}
void loop() {
// Считываем текущее состояние с датчика
motionDetected = digitalRead(motionSensorPin);
// Если на пине HIGH (обнаружено движение)
if (motionDetected == HIGH) {
Serial.println("ДВИЖЕНИЕ ОБНАРУЖЕНО!");
// Здесь вы можете добавить свой код, например, включить светодиод, реле или отправить уведомление
delay(100); // Небольшая задержка, чтобы не заспамить монитор порта
}
// Если движение не обнаружено, ничего не делаем
// Раскомментируйте следующую строку, чтобы видеть состояние "НЕТ движения"
// else {
// Serial.println("Нет движения.");
// delay(500);
// }
}
Нажмите кнопку Загрузить (стрелка вправо) и дождитесь окончания компиляции и загрузки кода.
Откройте Монитор порта (Инструменты -> Монитор порта). Убедитесь, что скорость установлена в 115200 бод, как в коде.
Помашите рукой перед датчиком, и вы увидите сообщение "ДВИЖЕНИЕ ОБНАРУЖЕНО!" .
Важные советы и нюансы
1. Чувствительность и дальность: RCWL-0516 может обнаруживать движение на расстоянии до 5-7 метров и даже сквозь стены или пластиковые корпуса. Это следует учитывать при размещении датчика .
2. Совместимость напряжений: Сигнал на выходе OUT имеет напряжение 3.3В, что полностью совместимо с логикой ESP32, поэтому дополнительное согласование уровней не требуется .
3. Защита от ложных срабатываний: После обнаружения движения датчик имеет небольшую "мертвую зону" (время восстановления). Также на плате есть контакт CDS, к которому можно подключить фоторезистор. Это позволит автоматически отключать датчик в светлое время суток, если такая функция нужна .
4. Продвинутые проекты: Этот датчик часто используется в более сложных проектах, например, для отправки уведомлений в Telegram , управления умным домом через Blynk или даже для управления Bluetooth-колонкой.
Здравствуйте! Я новичок, подскажите как сделать чтобы RCWL0516 работал без ардуино от батарейки или любого другого источника питания. С уважением к вам профессионалам!
Добрый день. А куда в этом случае вы хотите считывать данные с RCWL0516?
Как снизить чуйку чтоб не более 2 метров работало?
Я добавил в текст статьи описание способов как это можно сделать
flg переменная не обьявлена. Поправьте.
Хорошо, спасибо, поправил
Скетч не работает..
Что конкретно не работает? Выдается ошибка при компиляции или датчик не обнаруживает движение?
А на кой болт тут вообще ардуина?
Конкретно в этой простой схеме плату Ардуино можно исключить и сигнал с выхода датчика подавать напрямую на светодиод, но если вы будете делать какой-нибудь реальный проект на основе этого датчика, то есть при обнаружении им движения выдавать какую-нибудь информацию на ЖК дисплей, передавать эту информацию куда-нибудь в другое место, включать какие-нибудь исполнительные механизмы и т.д., то в них без Ардуино или другой аналогичной платы (или микроконтроллера) уже не обойтись. Статья то учебная, которая просто объясняет что такое датчик движения RCWL-0516 и как его подключить к плате Arduino
Ардуина может сделать любую задержку программно а не только 2 секунды. И выполнить еще что нибудь например отправить смс через GSM модуль или управлять внешними устройствами
Да, определенно