Raspberry Pi Pico: микроволновый радарный датчик приближения RCWL-0516 (Arduino IDE)
В этом руководстве вы узнаете, как использовать микроволновый радарный датчик приближения RCWL-0516 для обнаружения движения с помощью Raspberry Pi Pico, запрограммированного в Arduino IDE. Мы покажем, как подключить датчик и написать скетч Arduino для обнаружения движения. RCWL-0516 является отличной альтернативой популярному PIR-датчику движения.
Впервые работаете с Raspberry Pi Pico? Прочитайте следующее руководство: Начало работы с Raspberry Pi Pico (и Pico W).
В этом руководстве мы рассмотрим следующие темы:
Знакомство с микроволновым радарным датчиком приближения RCWL-0516
Микроволновый радарный датчик приближения vs PIR-датчик движения
У нас есть аналогичное руководство с использованием Raspberry Pi Pico на прошивке MicroPython: Raspberry Pi Pico: микроволновый радарный датчик приближения RCWL-0516 (MicroPython).
Необходимые условия
Вам необходимо установить платы Raspberry Pi Pico в Arduino IDE, и вы должны знать, как загружать код на плату. Ознакомьтесь со следующим руководством, если вы ещё этого не сделали:
Знакомство с микроволновым радарным датчиком приближения RCWL-0516
RCWL-0516 — это небольшой недорогой датчик, который использует микроволновый радар для обнаружения присутствия движущихся объектов. Датчик работает, излучая пучок микроволн и затем обнаруживая доплеровский сдвиг в отражённых волнах при прохождении объектов мимо.
Обычно эти датчики продаются упаковками по пять штук и не поставляются с штыревыми разъёмами. Поэтому вам может потребоваться приобрести штыревые разъёмы отдельно и затем припаять их самостоятельно.
Как это работает?
Датчик RCWL-0516 имеет встроенный генератор, который создаёт микроволновый сигнал на частоте 3,18 ГГц. Затем датчик излучает этот сигнал по круговой диаграмме направленности 360 градусов.
Когда объект перемещается в зоне действия датчика, отражённые волны улавливаются приёмником датчика. Приёмник затем измеряет частоту отражённых волн и сравнивает её с частотой исходного сигнала. Если частота отражённых волн изменилась, датчик определяет, что объект переместился.
Датчик RCWL-0516 имеет один выходной вывод, который устанавливается в HIGH при обнаружении движения. При отсутствии движения на выходе остаётся LOW.
Характеристики датчика RCWL-0516
RCWL-0516 имеет дальность обнаружения до 7 метров и может обнаруживать объекты, движущиеся со скоростью до 2 метров в секунду. Также он имеет встроенную регулируемую задержку, которая может использоваться для предотвращения повторного срабатывания датчика на один и тот же объект.
Вот краткое описание некоторых ключевых характеристик датчика RCWL-0516:
Использует микроволновый радар для обнаружения движущихся объектов
Дальность обнаружения до 7 метров
Может обнаруживать объекты, движущиеся со скоростью до 2 метров в секунду
Встроенная регулируемая задержка
Низкое энергопотребление
Недорогой
Технические характеристики датчика RCWL-0516:
Напряжение питания: 4–28 В постоянного тока
Рабочая частота: 3,18 ГГц
Дальность обнаружения: 5–7 м
Уровень выходного сигнала: 3,4 В (HIGH), < 0,7 В (LOW)
Выходной ток: 100 мА
Время срабатывания: 2 секунды повторного запуска при обнаружении движения
Дополнительную информацию о датчике можно найти на следующей странице GitHub:
Опциональный фоторезистор (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). Фоторезистор можно использовать для отключения датчика при ярком освещении.
В следующей таблице показана распиновка микроволнового радарного датчика приближения RCWL-0516:
Вывод |
Описание |
|---|---|
3V3 |
Выход 3,3 В (не для питания датчика) |
GND |
Вывод заземления |
OUT |
Выходной вывод (HIGH при обнаружении движения) |
VIN |
Входное напряжение для питания датчика (от 4 В до 28 В) |
CDS |
Выход фоторезистора (LDR) |
Микроволновый радарный датчик приближения vs PIR-датчик движения
Микроволновый радарный датчик приближения часто используется как альтернатива PIR-датчику движения, в зависимости от области применения проекта. В следующей таблице приводится сравнение обоих датчиков:
Микроволновый радар RCWL-0516 |
PIR-датчик движения |
|
|---|---|---|
Принцип работы |
Активный датчик (излучает микроволновые сигналы и обнаруживает отражения). |
Пассивный датчик (обнаруживает инфракрасное излучение, испускаемое объектами). |
Дальность обнаружения |
Большая дальность, обычно до 7+ метров. |
Меньшая дальность, обычно несколько метров, в зависимости от модели. |
Обнаружение сквозь препятствия |
Может обнаруживать объекты сквозь неметаллические материалы. |
Блокируется некоторыми материалами (например, стеклом). |
Чувствительность к движению |
Высокая чувствительность, возможны ложные срабатывания. |
Менее чувствительный, может пропускать незначительные движения. Обнаруживает только живые объекты, излучающие тепло. |
Зона покрытия |
Широкая зона покрытия с широкой диаграммой направленности радара. |
Узкое поле зрения. |
Подключение датчика RCWL-0516 к Raspberry Pi Pico
Следуйте приведённой ниже таблице или схеме для подключения микроволнового радарного датчика приближения RCWL-0516 к Raspberry Pi Pico:
Датчик RCWL-0516 |
Raspberry Pi Pico |
|---|---|
3V3 |
не подключайте |
GND |
GND |
OUT |
GPIO22 (или любой другой GPIO на ваш выбор) |
VIN |
VBUS (или предпочтительно внешний источник питания от 4 В до 28 В) |
CDS |
не подключайте |
Также мы подключим светодиод к GPIO 21 для визуальной индикации при обнаружении движения. Вы можете подключить светодиод к любому другому цифровому выводу.
Необходимые компоненты:
Raspberry Pi Pico
Микроволновый радарный датчик RCWL-0516
Светодиод
Резистор 220 Ом
Макетная плата
Соединительные провода
Мы используем вывод VBUS для питания датчика RCWL-0516, но для лучших результатов рекомендуем использовать внешний источник питания (от 4 В до 28 В).
Скетч Arduino — Raspberry Pi Pico с датчиком RCWL-0516
Скопируйте следующий код в вашу Arduino IDE. Этот пример очень простой. Он просто считывает выходной сигнал датчика и выводит в Serial Monitor сообщение при обнаружении движения, а также соответственно включает светодиод (светодиод включён при обнаружении движения).
int led = 21; // вывод, к которому подключён светодиод
int sensor = 22; // вывод, к которому подключён датчик
int state = LOW; // по умолчанию движение не обнаружено
int val = 0; // переменная для хранения состояния датчика (значения)
void setup() {
pinMode(led, OUTPUT); // инициализация светодиода как выхода
pinMode(sensor, INPUT); // инициализация датчика как входа
Serial.begin(115200); // инициализация Serial
}
void loop(){
val = digitalRead(sensor); // считывание значения датчика
if (val == HIGH) { // проверка: датчик в HIGH?
digitalWrite(led, HIGH); // включить светодиод
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // обновить переменную state на HIGH
}
}
else {
digitalWrite(led, LOW); // выключить светодиод
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // обновить переменную state на LOW
}
}
}
Как работает код
Начните с определения выводов для светодиода и выходного вывода датчика. Мы подключаем светодиод к GPIO 21, но вы можете использовать любой другой GPIO.
int led = 21; // вывод, к которому подключён светодиод
Мы подключаем выход датчика к GPIO 22, но вы можете использовать любой другой вывод.
int sensor = 22; // вывод, к которому подключён датчик
Затем инициализируем некоторые переменные. Переменная state хранит текущее состояние выходного вывода датчика и изначально установлена в LOW.
int state = LOW; // по умолчанию движение не обнаружено
Переменная val будет хранить состояние (значение) цифрового выхода датчика, либо HIGH, либо LOW.
int val = 0; // переменная для хранения состояния датчика (значения)
По сути, val используется для временного хранения значения выходного сигнала датчика в реальном времени, тогда как state используется для отслеживания того, было ли обнаружено движение или нет с течением времени.
В функции setup() установите светодиод как выход, а датчик как вход. Также инициализируйте Serial Monitor на скорости 115200 бод.
void setup() {
pinMode(led, OUTPUT); // инициализация светодиода как выхода
pinMode(sensor, INPUT); // инициализация датчика как входа
Serial.begin(115200); // инициализация Serial
}
В функции loop() мы начинаем со считывания цифрового выхода датчика (HIGH или LOW) и сохраняем значение в переменной val.
val = digitalRead(sensor); // считывание значения датчика
Если выход датчика HIGH (движение обнаружено), светодиод включается.
if (val == HIGH) { // проверка: датчик в HIGH?
digitalWrite(led, HIGH); // включить светодиод
Затем мы проверяем, было ли предыдущее состояние LOW. Если да, это означает, что состояние изменилось и движение было обнаружено. Мы выводим сообщение в Serial Monitor и изменяем переменную state на HIGH.
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // обновить переменную state на HIGH
}
Если выход датчика LOW (движение не обнаружено), мы выключаем светодиод.
else {
digitalWrite(led, LOW); // выключить светодиод
Если предыдущее состояние было HIGH, а теперь состояние LOW, это означает, что движение прекратилось, и мы можем установить переменную state в LOW.
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // обновить переменную state на LOW
}
Загрузка кода в Raspberry Pi Pico
Для загрузки кода в Raspberry Pi Pico плата должна находиться в режиме загрузчика (bootloader).
Если Raspberry Pi Pico в данный момент работает на прошивке MicroPython, вам необходимо вручную перевести его в режим загрузчика. Для этого подключите Raspberry Pi Pico к компьютеру, одновременно удерживая кнопку BOOTSEL.
При последующих загрузках с использованием Arduino IDE плата должна автоматически переходить в режим загрузчика без необходимости нажатия кнопки BOOTSEL.
Теперь выберите ваш COM-порт в Tools > Port. Возможно, COM-порт будет отображаться серым цветом. Если это так, не беспокойтесь — он автоматически найдёт порт, как только вы нажмёте кнопку загрузки.
Загрузите код.
Вы должны получить сообщение об успешной загрузке.
Демонстрация
После загрузки откройте Serial Monitor.
При обнаружении движения вы должны увидеть сообщение «Motion detected», а через две секунды — сообщение «Motion stopped».
Кроме того, светодиод будет загораться при обнаружении движения.
Если у вас подключён фоторезистор (LDR), вам необходимо уменьшить уровень освещённости, чтобы датчик обнаруживал движение.
Заключение
В этом руководстве вы узнали, как использовать микроволновый радарный датчик приближения RCWL-0516 с Raspberry Pi Pico для обнаружения движения в окружающем пространстве. RCWL-0516 может стать хорошей альтернативой PIR-датчику движения в зависимости от требований вашего проекта.