Допустим, у нас есть помещение с такими габаритами. Нам необходимо обнаружить человека, который проходит мимо ЗАКРЫТОЙ двери в комнату.
Помочь в решении данной задачи нам поможет содержимое этого антистатического пакетика.
Это датчик присутствия миллиметрового диапазона C4001(25m) от компании DFRobot. Для своей работы он использует радиосигнал с длиной волны 24 ГГц. На передней панели находятся антенны для передачи и приема радиосигнала. Принцип работы аналогичен принципу работы обычного радара.
Светодиод RUN непрерывно мигает после подачи питания. Светодиод OUT светится в случае обнаружения в поле действия датчика любого живого объекта.
диапазон обнаружения:
- 100° по горизонтали;
- присутствия 16 метров;
- движения и измерения расстояния 25 метров.
Взаимодействие с внешним миром осуществляется через интерфейс UART
и/или выход OUT.
Ключевое отличия датчика присутствия от датчика движения
Все, кто пытались автоматизировать освещение с помощью недорого пассивного инфракрасного (PIR) датчика, знают, что он может обнаруживать теплые движущиеся объекты. Стоит замереть неподвижно, и PIR датчик ничего больше не увидит.
Для автоматизации управления освещением где-нибудь "на проходе" такая штука подойдет, но если установить его в туалете, то "сидя на горшке" придется время от времени интенсивно махать руками.
Обычно для решения этой проблемы PIR датчики содержат таймер, но если нужно точно знать, есть живой объект в помещении (вне зависимости от того шевелится он там или нет) PIR сенсор не подойдет.
Ультразвуковой датчик движения вообще можно легко обмануть с помощью обычной простыни:
В 4 сезоне сериала "Разрушители легенд" (серия 59 "Преступления и расследования 2") были неплохо разобраны и принципы работы систем безопасности, основанных на этих датчиках, и способы, как эти самые системы обойти. Но датчик от DFRobot работает в радиодиапазоне, поэтому звуко/тепло поглощающие материалы для его работы не помеха. Чувствительность тоже на порядок выше, поэтому независимо от того, сидит ли человек, спит или движется, датчик может обнаружить его присутствие.
Сравнительные характеристики смотрим в этой таблице:
Радарный датчик миллиметрового диапазона — это бесконтактная технология обнаружения, используемая для обнаружения объектов и предоставления информации о расстоянии до них, скорости и угле. Сигналы, излучаемые датчиками миллиметрового диапазона, попадают в высокочастотный спектр с длинами волн от 24 ГГц до 300 ГГц, также известный как миллиметровый (мм) диапазон.
Характеристики:
- Обнаружение человека: дальность обнаружения до 16 метров, дальность обнаружения движения до 25 метров.
- Расстояние обнаружения: от 1,2 метра до 25 метров.
- Определение скорости: диапазон от 0,1 метра в секунду до 10 метров в секунду.
- Высокая помехозащищенность, неподверженность влиянию снега, дымки, температуры, влажности, пыли, света, шума и т. д.
- Управление выходными сигналами высокого и низкого уровня через порты ввода/вывода.
- Управление входом и выходом через последовательный порт.
- Небольшой размер, простота интеграции.
Спецификация
- Рабочее напряжение: 3,3/5 В
- Максимальная дальность обнаружения: 25 м
- Угол луча: 100*40°
- Режим модуляции: FMCW
- Рабочая частота: 24 ГГц
- Рабочая температура: -40~85℃
- Скорость передачи данных: 9600 bod
- Размер: 26*30мм
Метод установки
Датчик миллиметровых волн чувствителен к способу установки: неправильная установка может повлиять на производительность и функциональность. Обычно используемые методы установки для этого модуля включают верхнюю установку, нижнюю установку, горизонтальную установку и установку с наклоном вниз.
Подключение и тестирование
Датчик подключается к UART интерфейсу, так что по идее может быть подключен к любому микроконтроллеру, где этот самый интерфейс есть.
Библиотека от DFRobot для среды Arduino IDE совместима со всеми популярными платами разработки.
Для плат(UNO/NANO/ESP8266), где аппаратный UART интерфейс один, можно использовать библиотеку для организации программного Serial интерфейса. Для плат (Leonardo/Mega2560/ESP32), где физических UART интерфейсов несколько, можно использовать аппаратный интерфейс UART.
Важно! Обмен данными с модулем осуществляется на скорости 9600, и эта скорость не может быть изменена.
Пример совместимый с любыми платами можно найти в примерах в среде Arduino IDE после установки библиотеки.
У меня тут завалялась плата Arduino MEGA в форм-факторе DIP с отладочной платой под пайку от проекта самодельного осциллографа, поэтому испытательный стенд я решил сделать на базе именно этой платы.
К датчику идут 4 провода:
- VCC - VIN;
- GND - GND;
- TX1 - RX;
- RX1 - TX
Используется 2-й аппаратный UART - в среде Arduino IDE класс "Serial1", ссылка на который передается в качестве параметра при создании объекта "radar"
1-й аппаратный UART (класс "Serial") используется для связи с компьютером (строка8), после чего в бесконечном цикле пытаемся подключиться к датчику.
Датчик может работать в двух режимах:
- режим обнаружения присутствия (eExitMode);
- режим измерения скорости (eSpeedMode).
Узнать состояние датчика можно, выгрузив данные в С++ структуру с помощью метода radar.getStatus();
Настройки датчика можно менять на лету - метод radar.setDetectionRange()
- минимальная дистанция обнаружения(см), диапазон 0.3~25m (30~2500)
- максимальная дальность обнаружения(см), диапазон 2.4~25m (240~2500)
- максимальная дальность обнаружения триггера,(см), по умолчанию trig = max (при использовании датчика как сенсора обнаружения)
Следующие четыре настройки относятся только к режиму присутствия (eExitMode)
- метод setTrigSensitivity(0...9) настраивает чувствительность первого срабатывания при появлении в зоне датчика чего-либо живого;
- метод setKeepSensitivity(0....9)) настраивает чувствительность проверки этого живого на предмет дальнейшего шевеления.
Примечание: настройте чувствительность в соответствии с фактическими условиями использования и требованиями. Более низкая чувствительность для обнаружения требует большей амплитуды движения и меньшего расстояния до цели. Более высокая чувствительность требует более высокого уровня вмешательства в окружающую среду. При наличии помех повышается вероятность ложных срабатываний. Установка чувствительности триггера на 8 или 9 может привести к появлению ложных срабатываний и в основном используется в сценариях, где ложные срабатывания некритичны. Обычно рекомендуется настраивать чувствительность триггера в диапазоне от 2 до 6 с диапазоном значений от 0 до 9.
Конфигурация задержки вывода - задержка подтверждения: используется для настройки времени подтверждения, когда «цель обнаружена»;
Задержка исчезновения: используется для настройки времени подтверждения после того, как «цель исчезает».
Примечание:
- Задержка подтверждения: настройка оптимального значения параметра может значительно сократить процент ложноположительных результатов. Хотя большее значение более надежно, модулю потребуется больше времени, чтобы сообщить об обнаружении цели. Для сценариев с низкими требованиями к скорости реагирования на обнаружение рекомендуется устанавливать ее больше 0,5 секунд, что поможет значительно снизить частоту ложных срабатываний.
- Задержка исчезновения: чем больше значение настроенного параметра, тем легче сократить количество пропущенных обнаружений, вызванных случайным исчезновением цели. Хотя большее значение более надежно, модулю потребуется больше времени, чтобы сообщить об исчезновении цели после того, как цель действительно исчезнет. Для сценариев с низкими требованиями к скорости реагирования после исчезновения цели рекомендуется устанавливать ее более 15 секунд, что может значительно снизить процент пропущенных обнаружений. Его также можно установить на более длительный срок, например, 30 секунд, 60 секунд, 90 секунд и т. д.
Все настройки модуля можно запросить, что может пригодиться для создания удаленного интерфейса управления модулем (не ползать же каждый раз в светильник или люстру с компьютером).
Основной цикл прост. С помощью метода motionDetection() проверяем состояние датчика каждую 0,1с
Собственно, пока я писал эту статью, устройство стояло напротив меня, и синий светодиод не погас ни разу, т.е. активных движений, чтобы эта штука тебя видела, не требуется. Огромное количество настроек позволят отстроить этот датчик таким образом, чтобы свет включался, когда в помещение заходит человек, но не включался, когда туда заходит домашнее животное (ну, или наоборот, поможет обнаружить домашнее животное). Проект, где это было нужно ("КотоФотоЛовушка"), на моем канале тоже был, и обычный PIR датчик справлялся с этой задачей не очень уверенно.
Полевые испытания
Небольшое замечание: выяснилось, что после первого обнаружения цели модуль не стоит опрашивать более 1 раза в секунду. Баг это или фича - не совсем понятно, но в таком виде код работает корректно.
Сам модуль размещаем на окне:
Отмеряем 2.5 метра
В скетче "подрезаем" максимальный радиус действия до 2.5м:
На планшет ставим RDP клиента от Microsoft и подключаемся к компьютеру, на котором запущено приложение Arduino IDE. Садимся на диван там, где лежит подушка N1. Объект обнаружен.
Перебираемся с планшетом на ту часть дивана, которая находится с правой стороны белой изоленты (подушка N2). Датчик нас потерял из виду.
Усложним задачу. До двери, через которую мы входим в комнату у нас 4 метра. Увеличиваем максимальное расстояние до 4 метров и перепрошиваем плату.
Теперь, пока мы стоим с планшетом в коридоре, датчик молчит.
Но стоит только перешагнуть порог (на него указывает стрелка), датчик моментально срабатывает.
Только что мы сделали датчик пересечения линии. При этом ни один дверной косяк от врезки фотодатчиков не пострадал.
Последний тест, который отвечает на вопрос, заданный в начале этой статьи. Закроем дверь и посмотрим, сможет ли этот датчик обнаружить человека, который находится за закрытой дверью в коридоре.
4000+1400 = 5400 Увеличиваем дальность и перепрошиваем плату.
Гипсокартонная перегородка и деревянная дверь препятствий для работы этого датчика не представляют. Даже если закрыть дверь в комнату, пройти незамеченным по коридору уже не выйдет.
С капитальной стеной данный модуль, разумеется, не справится, зато его можно смело размещать в любом герметичном пластиковом корпусе, и он сможет работать в любых неблагоприятных условиях.
Резюме. Попытка компании DFRobot скрестить радар с функционалом обычного датчика движения получилась удачной. Огромное количество гибких настроек позволяет адаптировать данное устройство практически под любые задачи, связанные с обнаружением присутствия человека или любого другого живого объекта.
Измерять скорость движущихся объектов эта штука тоже умеет. Пример такой прошивки можно посмотреть в Wiki производителя.
Купить модуль можно тут:
Реклама. ИП Семëнова ИНН 780518548815
Ссылки на статьи про другие высокотехнологичные модули:
Оглавление канала доступно тут
Всем удачи!