Raspberry Pi Pico: микроволновый радарный датчик приближения RCWL-0516 (Arduino IDE)

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

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

Впервые работаете с Raspberry Pi Pico? Прочитайте следующее руководство: Начало работы с Raspberry Pi Pico (и Pico W).

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

У нас есть аналогичное руководство с использованием Raspberry Pi Pico на прошивке MicroPython: Raspberry Pi Pico: микроволновый радарный датчик приближения RCWL-0516 (MicroPython).

Необходимые условия

Вам необходимо установить платы Raspberry Pi Pico в Arduino IDE, и вы должны знать, как загружать код на плату. Ознакомьтесь со следующим руководством, если вы ещё этого не сделали:

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

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

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

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

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

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

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

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

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

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

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

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

Вот краткое описание некоторых ключевых характеристик датчика 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.

Датчик RCWL-0516 и опциональный фоторезистор (LDR)

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

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

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

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

Регулировочные компоненты

Микроволновый радарный датчик RCWL-0516 - регулировочные компоненты на задней стороне

На задней стороне датчика расположены три контактные площадки для дополнительных 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). Фоторезистор можно использовать для отключения датчика при ярком освещении.

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

Вывод

Описание

3V3

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

GND

Вывод заземления

OUT

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

VIN

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

CDS

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

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

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

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

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

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

Принцип работы

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

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

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

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

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

Обнаружение сквозь препятствия

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

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

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

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

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

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

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

Узкое поле зрения.

Подключение датчика RCWL-0516 к Raspberry Pi Pico

Подключение микроволнового радарного датчика 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 Ом

  • Макетная плата

  • Соединительные провода

Схема подключения датчика RCWL-0516 к Raspberry Pi Pico

Мы используем вывод 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.

Raspberry Pi Pico режим загрузчика (bootloader)

При последующих загрузках с использованием Arduino IDE плата должна автоматически переходить в режим загрузчика без необходимости нажатия кнопки BOOTSEL.

Теперь выберите ваш COM-порт в Tools > Port. Возможно, COM-порт будет отображаться серым цветом. Если это так, не беспокойтесь — он автоматически найдёт порт, как только вы нажмёте кнопку загрузки.

Raspberry Pi Pico - COM-порт не найден в Arduino IDE

Загрузите код.

Вы должны получить сообщение об успешной загрузке.

Raspberry Pi Pico успешная загрузка кода в Arduino IDE

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

После загрузки откройте Serial Monitor.

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

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

Кроме того, светодиод будет загораться при обнаружении движения.

Тестирование Raspberry Pi Pico с RCWL-0516

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

Обнаружение движения RCWL-0516 с LDR и Raspberry Pi Pico

Заключение

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