ESP8266 NodeMCU с микроволновым радарным датчиком приближения RCWL-0516 (Arduino IDE)

В этом руководстве вы узнаете, как использовать микроволновый радарный датчик приближения RCWL-0516 для обнаружения движения с помощью ESP8266 NodeMCU. Мы покажем вам, как подключить датчик к плате ESP8266, и напишем скетч Arduino для обнаружения движения. RCWL-0516 является отличной альтернативой популярному PIR-датчику движения.

ESP8266 NodeMCU с микроволновым радарным датчиком приближения RCWL-0516 Arduino IDE

У нас есть аналогичное руководство для платы ESP32: ESP32 с микроволновым радарным датчиком приближения RCWL-0516 (Arduino IDE).

Содержание:

В этом руководстве мы рассмотрим следующие темы:

Знакомство с микроволновым радарным датчиком приближения RCWL-0516

Знакомство с микроволновым радарным датчиком приближения RCWL-0516

RCWL-0516 – это небольшой недорогой датчик, который использует микроволновый радар для обнаружения присутствия движущихся объектов. Датчик работает, излучая луч микроволн, а затем обнаруживая доплеровский сдвиг в отражённых волнах при движении объектов.

Обычно эти датчики продаются в упаковке по пять штук и не поставляются с штырьковыми разъёмами. Поэтому вам может потребоваться приобрести штырьковые разъёмы отдельно и припаять их самостоятельно.

Микроволновые радарные датчики приближения RCWL-0516

Где купить?

Вы можете проверить следующую ссылку на Maker Advisor и сравнить цены в различных магазинах.

Вы можете использовать приведённые выше ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все детали для ваших проектов по лучшей цене!

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

Датчик RCWL-0516 имеет встроенный генератор, который создаёт микроволновый сигнал на частоте 3,18 ГГц. Затем датчик излучает этот сигнал в формате 360 градусов.

Когда объект движется в зоне действия датчика, отражённые волны улавливаются приёмником датчика. Затем приёмник измеряет частоту отражённых волн и сравнивает её с частотой исходного сигнала. Если частота отражённых волн изменилась, датчик определяет, что объект переместился.

Датчик RCWL-0516 имеет один выходной пин, который переходит в состояние HIGH при обнаружении движения. Он выдаёт LOW, когда движение не обнаружено.

Характеристики датчика RCWL-0516

RCWL-0516 имеет дальность обнаружения до 7 метров и может обнаруживать объекты, движущиеся со скоростью до 2 метров в секунду. Он также имеет встроенную регулируемую задержку, которая может использоваться для предотвращения повторного срабатывания датчика на одном и том же объекте.

Характеристики датчика RCWL-0516

Примечание: хотя указана дальность обнаружения до 7 метров, я не смог получить такие результаты с моей конфигурацией. Тем не менее, я получил очень хорошие отзывы от некоторых наших читателей об этом датчике.

Вот краткое описание некоторых ключевых характеристик датчика RCWL-0516:

  • Использует микроволновый радар для обнаружения движущихся объектов

  • Дальность обнаружения до 7 метров

  • Может обнаруживать объекты, движущиеся со скоростью до 2 метров в секунду

  • Встроенная регулируемая задержка

  • Низкое энергопотребление

  • Недорогой

Технические характеристики датчика RCWL-0516:

  • Напряжение питания: 4–28 В постоянного тока

  • Рабочая частота: 3,18 ГГц

  • Дальность обнаружения: 5–7 м

  • Уровень выходного сигнала: 3,4 В HIGH, <0,7 В LOW

  • Выходной ток: 100 мА

  • Время выходного сигнала: 2 секунды повторного срабатывания при движении

Более подробную информацию о датчике можно получить на следующей странице GitHub:

Опциональный фоторезистор (LDR)

Датчик поставляется с возможностью припаять фоторезистор (датчик освещённости), если вы хотите, чтобы ваш датчик работал только в тёмных условиях, например. Вы можете получить выходной сигнал LDR на пине LDR. Альтернативно, вы также можете подключить LDR к пину CDS.

Датчик RCWL-0516 и опциональный LDR

Когда выходное напряжение LDR больше 0,7 В, пин OUT будет выдавать сигнал HIGH при обнаружении движения. Если движение обнаружено, но выходное напряжение LDR меньше 0,7 В, выход будет LOW. Это означает, что при подключении LDR датчик будет обнаруживать движение только в темноте.

Микроволновый радарный датчик RCWL-0516 с LDR

Вы можете настроить чувствительность LDR, подключив резистор на площадки R-CDS (см. следующий раздел), или добавив подтягивающий резистор параллельно с пином CDS.

В моём случае я добавил подтягивающий резистор 22 кОм к пину LDR, чтобы датчик мог обнаруживать движение при низкой освещённости. Без резистора даже в очень тёмных условиях я не получал положительного результата. Вам может потребоваться попробовать различные значения сопротивления, чтобы определить, какое из них лучше всего подходит для вашего сценария.

Компоненты настройки

Микроволновый радарный датчик RCWL-0516 с LDR, задняя сторона

На задней стороне датчика расположены три площадки для дополнительных SMD-компонентов (размер 0805):

Следующая информация взята с этой страницы GitHub.

  • C-TM: Регулирует время повторного срабатывания. Время по умолчанию (без компонента) составляет 2 с. SMD-конденсатор для увеличения времени повторного срабатывания. Пин 3 микросхемы излучает частоту (f), и время срабатывания в секундах определяется формулой (1/f) * 32678.

  • R-GN: Дальность обнаружения по умолчанию составляет 7 м, добавление резистора 1 МОм уменьшает её до 5 м.

  • R-CDS: Резистор параллельно с подтягивающим резистором 1 МОм. Без R-CDS наименьшее сопротивление LDR (т.е. наивысший уровень освещённости), при котором выход включен, составляет ~269 кОм (=0,7 В). Добавление сопротивления здесь уменьшает сопротивление LDR порога включения/выключения. Если сопротивление LDR при желаемом пороге освещённости <269 кОм, то можно добавить внешний резистор последовательно с LDR.

Распиновка микроволнового радарного датчика приближения RCWL-0516

Распиновка микроволнового радарного датчика приближения RCWL-0516

Микроволновый радарный датчик приближения RCWL-0516 имеет пять пинов:

  • 3V3: это выход встроенного стабилизатора напряжения (не пин питания)

  • VIN: это пин входного питания. Датчик может питаться напряжением от 4 до 28 В.

  • GND: это пин заземления.

  • OUT: это выходной пин. Выходной пин переходит в состояние HIGH при обнаружении движения и остаётся в состоянии LOW, когда движение не обнаружено.

  • CDS: этот пин используется для подключения фоторезистора (LDR). LDR может использоваться для отключения датчика при ярком освещении.

В следующей таблице показана распиновка микроволнового радарного датчика приближения RCWL-0516:

3V3

Выход 3,3 В (не для питания датчика)

GND

Пин заземления

OUT

Выходной пин (переходит в HIGH при обнаружении движения)

VIN

Входное напряжение для питания датчика (от 4 В до 28 В)

CDS

Выход фоторезистора

Микроволновый радарный датчик приближения и PIR-датчик движения

Микроволновый радарный датчик приближения и PIR-датчик движения

Микроволновый радарный датчик приближения часто используется в качестве альтернативы PIR-датчику движения, в зависимости от области применения проекта. В следующей таблице сравниваются оба датчика:

Микроволновый радар RCWL-0516

PIR-датчик движения

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

Активный датчик (излучает микроволновые сигналы и обнаруживает отражения).

Пассивный датчик (обнаруживает инфракрасное излучение, испускаемое объектами).

Дальность обнаружения

Большая дальность, обычно до 7+ метров.

Меньшая дальность, обычно несколько метров, в зависимости от модели.

Обнаружение через препятствия

Может обнаруживать через неметаллические материалы.

Блокируется определёнными материалами (например, стеклом)

Чувствительность к движению

Высокая чувствительность, возможны ложные срабатывания.

Не столь чувствителен, может пропускать незначительные движения. Обнаруживает только живые объекты, излучающие тепло.

Зона покрытия

Широкое покрытие с широкой радарной диаграммой.

Узкий угол обзора.

Подключение микроволнового радарного датчика приближения RCWL-0516 к ESP8266

Следуйте приведённой ниже таблице или схеме для подключения микроволнового радарного датчика приближения RCWL-0516 к ESP8266:

Датчик RCWL-0516

ESP8266

3V3

не подключать

GND

GND

OUT

GPIO12 (или любой другой GPIO по вашему выбору)

VIN

VIN (или напряжение от 4 до 28 В)

CDS

не подключать

Подключение микроволнового радарного датчика приближения RCWL-0516 к ESP8266

ESP8266 NodeMCU с датчиком RCWL-0516 – скетч Arduino

Скопируйте следующий код в вашу Arduino IDE. Этот пример очень простой. Он просто считывает выход датчика и выводит в Serial Monitor сообщение при обнаружении движения, а также зажигает встроенный светодиод ESP8266 соответственно (светодиод горит, когда обнаружено движение).

Альтернативно, вы также можете использовать прерывания и таймеры для обнаружения движения. Вы можете использовать код, аналогичный тому, который мы используем в следующем руководстве: Прерывания и таймеры ESP8266 с использованием Arduino IDE (NodeMCU).

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp8266-nodemcu-rcwl-0516-arduino/

  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/

// If you're using the built-in LED for testing, remember that it works with inverted logic
// (HIGH=LOW, and LOW=HIGH)
int led = 2;               // the pin that the LED is attached to
int sensor = 12;           // the pin that the sensor is attached to
int state = LOW;           // by default, no motion detected
int val = 0;               // variable to store the sensor status (value)

void setup() {
  pinMode(led, OUTPUT);       // initalize LED as an output
  pinMode(sensor, INPUT);     // initialize sensor as an input
  Serial.begin(115200);       // initialize serial
}

void loop(){
  val = digitalRead(sensor);   // read sensor value
  if (val == HIGH) {           // check if the sensor is HIGH
    digitalWrite(led, HIGH);   // turn LED ON

    if (state == LOW) {
      Serial.println("Motion detected!");
      state = HIGH;       // update variable state to HIGH
    }
  }
  else {
    digitalWrite(led, LOW); // turn LED OFF

    if (state == HIGH){
      Serial.println("Motion stopped!");
      state = LOW;       // update variable state to LOW
    }
  }
}

Просмотреть исходный код

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

Начните с определения пинов для светодиода и выходного пина датчика. Для простоты мы используем встроенный светодиод ESP8266, подключённый к GPIO2, но вы также можете подключить физический светодиод к любому другому GPIO, просто измените код соответственно.

int led = 2;                 // the pin that the LED is attached to

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

int sensor = 12;          // the pin that the sensor is attached to

Затем инициализируем некоторые переменные. Переменная state хранит текущее состояние выходного пина датчика и изначально установлена в LOW.

int state = LOW;         // by default, no motion detected

Переменная val будет хранить состояние (значение) цифрового выхода датчика, либо HIGH, либо LOW.

int val = 0;                 // variable to store the sensor status (value)

По сути, val используется для временного хранения значения выхода датчика в реальном времени, тогда как state используется для отслеживания того, было ли обнаружено движение или нет с течением времени.

В setup() установите светодиод как выход, а датчик как вход. Также инициализируйте Serial Monitor со скоростью 115200 бод.

void setup() {
  pinMode(led, OUTPUT);      // initalize LED as an output
  pinMode(sensor, INPUT);    // initialize sensor as an input
  Serial.begin(115200);        // initialize serial
}

В loop() мы начинаем с чтения цифрового выхода датчика (HIGH или LOW) и сохраняем его в переменной val.

val = digitalRead(sensor);   // read sensor value

Если выход датчика HIGH (обнаружено движение), светодиод включается.

if (val == HIGH) {               // check if the sensor is HIGH
  digitalWrite(led, HIGH);   // turn LED ON

Примечание: встроенный светодиод ESP8266 работает с инвертированной логикой, поэтому вам нужно записать LOW, чтобы включить его, и HIGH, чтобы выключить. Если вы используете обычный светодиод, подключённый к этому GPIO, он работает с «обычной» логикой.

Затем мы проверяем, было ли предыдущее состояние LOW. Если да, это означает, что state изменилось и что движение было обнаружено. Мы выводим сообщение в Serial Monitor и меняем переменную state на HIGH.

if (state == LOW) {
  Serial.println("Motion detected!");
  state = HIGH;       // update variable state to HIGH
}

Если выход датчика LOW (движение не обнаружено), мы выключаем светодиод.

else {
   digitalWrite(led, LOW); // turn LED OFF

Если предыдущее состояние было HIGH, а теперь состояние LOW, это означает, что движение прекратилось, и мы можем установить переменную state в LOW.

if (state == HIGH){
  Serial.println("Motion stopped!");
  state = LOW;       // update variable state to LOW
}

Демонстрация

Загрузите код на вашу плату ESP8266 и откройте Serial Monitor. Перезагрузите плату.

ESP8266 с микроволновым радарным датчиком RCWL-0516, демонстрация

Поднесите руку к датчику движения. Вы должны получить сообщение «Motion detected», за которым через две секунды последует сообщение «Motion stopped». Кроме того, встроенный светодиод на плате будет загораться при обнаружении движения.

Тестирование микроволнового радарного датчика RCWL-0516 Serial Monitor Arduino IDE

Если у вас подключён LDR, вам нужно уменьшить освещённость, чтобы получить положительные результаты.

ESP8266 с микроволновым радарным датчиком RCWL-0516

Заключение

В этом руководстве вы узнали, как использовать микроволновый радарный датчик приближения RCWL-0516 для обнаружения движения в вашем окружении. RCWL-0516 может быть хорошей альтернативой PIR-датчику движения в зависимости от требований вашего проекта.

Мы надеемся, что это руководство было вам полезно. Если вы хотите попробовать PIR-датчик движения, прочитайте это руководство: ESP8266 с PIR-датчиком движения.

У нас есть руководства для более чем 20 различных датчиков и модулей с ESP8266. Ознакомьтесь со следующей ссылкой:

Хотите узнать больше об ESP8266? Ознакомьтесь со всеми нашими ресурсами:

Спасибо за чтение.