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

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

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

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

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

У нас есть аналогичное руководство по использованию Raspberry Pi Pico с Arduino IDE: Raspberry Pi Pico: ультразвуковой датчик HC-SR04 (Arduino IDE).

Необходимые условия – прошивка MicroPython

Для выполнения этого руководства вам необходимо установить прошивку MicroPython на плату Raspberry Pi Pico. Вам также потребуется IDE для написания и загрузки кода на плату.

Рекомендуемой IDE для MicroPython на Raspberry Pi Pico является Thonny IDE. Следуйте следующему руководству, чтобы узнать, как установить Thonny IDE, прошить прошивку MicroPython и загрузить код на плату.

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

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

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

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

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

Где купить?

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

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

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

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

Пин

Описание

3V3

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

GND

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

OUT

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

VIN

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

CDS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Raspberry Pi Pico — подключение микроволнового радарного датчика RCWL-0516

Следуйте следующей таблице или схеме подключения, чтобы подсоединить микроволновый радарный датчик приближения 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 В).

Raspberry Pi Pico с датчиком RCWL-0516 – скрипт MicroPython

С помощью MicroPython IDE по вашему выбору скопируйте следующий код в файл main.py. Этот скрипт считывает выходной сигнал датчика и включает светодиод, а также выводит сообщение в оболочку MicroPython при обнаружении движения. Датчик выдаёт сигнал HIGH при обнаружении движения и сигнал LOW в состоянии покоя.

from machine import Pin
import time

# Номера пинов для светодиода и датчика
led_pin = 21
sensor_pin = 22

# Настройка пина светодиода как выход и пина датчика как вход
led = Pin(led_pin, Pin.OUT)
sensor = Pin(sensor_pin, Pin.IN)

# Инициализация переменных состояния
state = 0
val = 0

while True:
    val = sensor.value()  # чтение значения датчика

    if val == 1:  # проверка, находится ли датчик в состоянии HIGH
        led.on()  # включение светодиода

        if state == 0:
            print("Motion detected!")
            state = 1  # обновление переменной state до HIGH
    else:
        led.off()  # выключение светодиода

        if state == 1:
            print("Motion stopped!")
            state = 0  # обновление переменной state до LOW

    # Небольшая задержка для избежания постоянного опроса датчика
    time.sleep(0.1)

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

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

Начинаем с импорта необходимых модулей: модуль machine используется для взаимодействия с аппаратными компонентами, и мы импортируем из него Pin для управления GPIO-пинами. Модуль time используется для введения задержек и контроля временных параметров программы.

# Импорт необходимых библиотек
from machine import Pin
import time

Далее определяем пины для светодиода и для выходного пина датчика. Мы подключаем светодиод к GPIO 21, а датчик к GPIO 22.

# Номера пинов для светодиода и датчика
led_pin = 21
sensor_pin = 22

Затем создаём два объекта Pin: один для светодиода (led) и другой для микроволнового радарного датчика (sensor). Светодиод определяется как выход с помощью Pin.OUT, а датчик как вход с помощью Pin.IN.

# Настройка пина светодиода как выход и пина датчика как вход
led = Pin(led_pin, Pin.OUT)
sensor = Pin(sensor_pin, Pin.IN)

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

# Инициализация переменных состояния
state = 0
val = 0

Программа входит в бесконечный цикл (while True), что означает, что она будет работать бесконечно, постоянно проверяя наличие движения.

while True:

Мы начинаем с чтения значения датчика движения с помощью sensor.value(). Метод возвращает 0, если движение не обнаружено, и 1, если движение обнаружено. Результат сохраняется в переменной val.

val = sensor.value()  # чтение значения датчика

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

if val == 1:  # проверка, находится ли датчик в состоянии HIGH
    led.on()  # включение светодиода

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

if state == 0:
    print("Motion detected!")
    state = 1  # обновление переменной state до HIGH

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

else:
    led.off()  # выключение светодиода

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

if state == 1:
    print("Motion stopped!")
    state = 0  # обновление переменной state до LOW

Код будет продолжать работать бесконечно, постоянно проверяя наличие движения и обновляя состояние светодиода и сообщения в оболочке MicroPython соответственно.

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

Сохраните код на плату Raspberry Pi Pico с помощью Thonny IDE или любой другой MicroPython IDE по вашему выбору.

Скопируйте предоставленный код в новый файл в Thonny IDE.

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

Скопировав код в файл, нажмите на значок Сохранить. Затем выберите Raspberry Pi Pico.

Сохранение файла на Raspberry Pi Pico в MicroPython IDE

Сохраните файл с именем: main.py.

MicroPython — сохранение файла main.py в Thonny IDE

Примечание: когда вы называете файл main.py, Raspberry Pi Pico будет автоматически запускать этот файл при загрузке. Если вы назовёте его по-другому, он всё равно будет сохранён в файловой системе платы, но не будет запускаться автоматически при загрузке.

Нажмите маленькую зелёную кнопку «Run Current Script» или нажмите F5.

Запуск скрипта в Thonny IDE

Вы получите сообщения в оболочке MicroPython при обнаружении движения.

Raspberry Pi Pico RCWL-0516 — тестирование в Thonny IDE, серийный монитор

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

Raspberry Pi Pico — тестирование датчика RCWL-0516

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

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

Заключение

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

Хотите узнать больше о Raspberry Pi Pico? Посмотрите следующие руководства: