ESP8266 NodeMCU с микроволновым радарным датчиком приближения RCWL-0516 (Arduino IDE)
В этом руководстве вы узнаете, как использовать микроволновый радарный датчик приближения RCWL-0516 для обнаружения движения с помощью ESP8266 NodeMCU. Мы покажем вам, как подключить датчик к плате ESP8266, и напишем скетч Arduino для обнаружения движения. RCWL-0516 является отличной альтернативой популярному PIR-датчику движения.
У нас есть аналогичное руководство для платы ESP32: ESP32 с микроволновым радарным датчиком приближения RCWL-0516 (Arduino IDE).
Содержание:
В этом руководстве мы рассмотрим следующие темы:
Знакомство с микроволновым радарным датчиком приближения RCWL-0516
Распиновка микроволнового радарного датчика приближения RCWL-0516
Микроволновый радарный датчик приближения и PIR-датчик движения
Подключение микроволнового радарного датчика приближения RCWL-0516 к ESP8266
Знакомство с микроволновым радарным датчиком приближения RCWL-0516
RCWL-0516 – это небольшой недорогой датчик, который использует микроволновый радар для обнаружения присутствия движущихся объектов. Датчик работает, излучая луч микроволн, а затем обнаруживая доплеровский сдвиг в отражённых волнах при движении объектов.
Обычно эти датчики продаются в упаковке по пять штук и не поставляются с штырьковыми разъёмами. Поэтому вам может потребоваться приобрести штырьковые разъёмы отдельно и припаять их самостоятельно.
Где купить?
Вы можете проверить следующую ссылку на Maker Advisor и сравнить цены в различных магазинах.
Вы можете использовать приведённые выше ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все детали для ваших проектов по лучшей цене!
Как это работает?
Датчик RCWL-0516 имеет встроенный генератор, который создаёт микроволновый сигнал на частоте 3,18 ГГц. Затем датчик излучает этот сигнал в формате 360 градусов.
Когда объект движется в зоне действия датчика, отражённые волны улавливаются приёмником датчика. Затем приёмник измеряет частоту отражённых волн и сравнивает её с частотой исходного сигнала. Если частота отражённых волн изменилась, датчик определяет, что объект переместился.
Датчик RCWL-0516 имеет один выходной пин, который переходит в состояние HIGH при обнаружении движения. Он выдаёт LOW, когда движение не обнаружено.
Характеристики датчика RCWL-0516
RCWL-0516 имеет дальность обнаружения до 7 метров и может обнаруживать объекты, движущиеся со скоростью до 2 метров в секунду. Он также имеет встроенную регулируемую задержку, которая может использоваться для предотвращения повторного срабатывания датчика на одном и том же объекте.
Примечание: хотя указана дальность обнаружения до 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.
Когда выходное напряжение LDR больше 0,7 В, пин OUT будет выдавать сигнал HIGH при обнаружении движения. Если движение обнаружено, но выходное напряжение LDR меньше 0,7 В, выход будет LOW. Это означает, что при подключении LDR датчик будет обнаруживать движение только в темноте.
Вы можете настроить чувствительность LDR, подключив резистор на площадки R-CDS (см. следующий раздел), или добавив подтягивающий резистор параллельно с пином CDS.
В моём случае я добавил подтягивающий резистор 22 кОм к пину 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 имеет пять пинов:
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-датчику движения, в зависимости от области применения проекта. В следующей таблице сравниваются оба датчика:
Микроволновый радар RCWL-0516 |
PIR-датчик движения |
|
|---|---|---|
Как работает? |
Активный датчик (излучает микроволновые сигналы и обнаруживает отражения). |
Пассивный датчик (обнаруживает инфракрасное излучение, испускаемое объектами). |
Дальность обнаружения |
Большая дальность, обычно до 7+ метров. |
Меньшая дальность, обычно несколько метров, в зависимости от модели. |
Обнаружение через препятствия |
Может обнаруживать через неметаллические материалы. |
Блокируется определёнными материалами (например, стеклом) |
Чувствительность к движению |
Высокая чувствительность, возможны ложные срабатывания. |
Не столь чувствителен, может пропускать незначительные движения. Обнаруживает только живые объекты, излучающие тепло. |
Зона покрытия |
Широкое покрытие с широкой радарной диаграммой. |
Узкий угол обзора. |
Подключение микроволнового радарного датчика приближения RCWL-0516 к ESP8266
Следуйте приведённой ниже таблице или схеме для подключения микроволнового радарного датчика приближения RCWL-0516 к ESP8266:
Датчик RCWL-0516 |
ESP8266 |
|---|---|
3V3 |
не подключать |
GND |
GND |
OUT |
GPIO12 (или любой другой GPIO по вашему выбору) |
VIN |
VIN (или напряжение от 4 до 28 В) |
CDS |
не подключать |
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. Перезагрузите плату.
Поднесите руку к датчику движения. Вы должны получить сообщение «Motion detected», за которым через две секунды последует сообщение «Motion stopped». Кроме того, встроенный светодиод на плате будет загораться при обнаружении движения.
Если у вас подключён LDR, вам нужно уменьшить освещённость, чтобы получить положительные результаты.
Заключение
В этом руководстве вы узнали, как использовать микроволновый радарный датчик приближения RCWL-0516 для обнаружения движения в вашем окружении. RCWL-0516 может быть хорошей альтернативой PIR-датчику движения в зависимости от требований вашего проекта.
Мы надеемся, что это руководство было вам полезно. Если вы хотите попробовать PIR-датчик движения, прочитайте это руководство: ESP8266 с PIR-датчиком движения.
У нас есть руководства для более чем 20 различных датчиков и модулей с ESP8266. Ознакомьтесь со следующей ссылкой:
Хотите узнать больше об ESP8266? Ознакомьтесь со всеми нашими ресурсами:
Спасибо за чтение.