Raspberry Pi Pico: микроволновый радарный датчик приближения RCWL-0516 (MicroPython)
В этом руководстве вы узнаете, как использовать микроволновый радарный датчик приближения RCWL-0516 для обнаружения движения с помощью Raspberry Pi Pico, запрограммированного с использованием прошивки MicroPython. Мы покажем, как подключить датчик и написать Python-скрипт для обнаружения движения. RCWL-0516 является отличной альтернативой популярному PIR-датчику движения.
Впервые работаете с Raspberry Pi Pico? Прочитайте следующее руководство: Начало работы с Raspberry Pi Pico (и Pico W).
В этом руководстве мы рассмотрим следующие темы:
Знакомство с микроволновым радарным датчиком приближения RCWL-0516
Распиновка микроволнового радарного датчика приближения RCWL-0516
Микроволновый радарный датчик приближения vs PIR-датчик движения
У нас есть аналогичное руководство по использованию 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 — это маленький, недорогой датчик, который использует микроволновый радар для обнаружения присутствия движущихся объектов. Датчик работает, излучая пучок микроволн, а затем обнаруживая доплеровский сдвиг в отражённых волнах, когда объекты проходят мимо.
Обычно эти датчики продаются в комплекте из пяти штук и не поставляются с штыревыми разъёмами. Поэтому вам может потребоваться приобрести штыревые разъёмы отдельно и припаять их самостоятельно.
Где купить?
Вы можете проверить следующую ссылку на Maker Advisor и сравнить цены в различных магазинах.
Как это работает?
Датчик 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. В качестве альтернативы вы также можете подключить 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 |
Выход фоторезистора |
Микроволновый радарный датчик приближения 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 В).
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.
Сохраните файл с именем: main.py.
Примечание: когда вы называете файл main.py, Raspberry Pi Pico будет автоматически запускать этот файл при загрузке. Если вы назовёте его по-другому, он всё равно будет сохранён в файловой системе платы, но не будет запускаться автоматически при загрузке.
Нажмите маленькую зелёную кнопку «Run Current Script» или нажмите F5.
Вы получите сообщения в оболочке MicroPython при обнаружении движения.
Кроме того, светодиод будет загораться при обнаружении движения.
Если у вас подключён LDR, вам нужно уменьшить уровень освещённости, чтобы датчик мог обнаруживать движение.
Заключение
В этом руководстве вы узнали, как использовать микроволновый радарный датчик приближения RCWL-0516 с Raspberry Pi Pico (запрограммированным с прошивкой MicroPython) для обнаружения движения в вашем окружении. RCWL-0516 может быть хорошей альтернативой PIR-датчику движения в зависимости от требований вашего проекта.
Хотите узнать больше о Raspberry Pi Pico? Посмотрите следующие руководства: