Arduino, датчик движения и релейный модуль

Датчик движения ардуино

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

Описание датчика движения ардуино

Конструкция ПИР датчика движения не очень сложна – он состоит из пироэлектрического элемента, отличающегося высокой чувствительностью (деталь цилиндрической формы, в центре которой расположен кристалл) к наличию в зоне действия определенного уровня инфракрасного излучения. Чем выше температура объекта, тем больше излучение. Сверху PIR-датчика устанавливается полусфера, разделенная на несколько участков (линз), каждый из которых обеспечивает фокусировку излучения тепловой энергии на различные сегменты датчика движения. Чаще всего в качестве линзы применяют линзу Френеля, которая за счет концентрации теплового излучения позволяет расширить диапазон чувствительности инфракрасного датчика движения Ардуино.

PIR-sensor конструктивно разделен на две половины. Это обусловлено тем, что для устройства сигнализации важно именно наличие движения в зоне чувствительности, а не сам уровень излучения. Поэтому части установлены таким способом, что при улавливании одной большего уровня излучения, на выход будет подаваться сигнал со значением high или low.

Основными техническими характеристиками датчика движения Ардуино являются:

  • Зона обнаружения движущихся объектов составляет от 0 до 7 метров;
  • Диапазон угла слежения – 110°;
  • Напряжение питания – 4.5-6 В;
  • Рабочий ток – до 0.05 мА;
  • Температурный режим – от -20° до +50°С;
  • Регулируемое время задержки от 0.3 до 18 с.

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

Принцип работы датчика движения на Arduino следующий:

  • Когда устройство установлено в пустой комнате, доза излучения, получаемая каждым элементом постоянна, как и напряжение;
  • При появлении в комнате человека, он первым делом попадает в зону обозрения первого элемента, на котором появляется положительный электрический импульс;
  • Когда человек перемещается по комнате, вместе с ним перемещается и тепловое излучение, которое попадает уже на второй сенсор. Этот PIR-элемент генерирует уже отрицательный импульс;
  • Разнонаправленные импульсы регистрируются электронной схемой датчика, которая делает вывод, что в поле зрения Pir-sensor Arduino находится человек.

Для надежной защиты от внешних шумов, перепадов температуры и влажности, элементы Pir-датчика на Arduino устанавливаются в герметичный металлический корпус. На верхней части корпуса по центру находится прямоугольник, выполненный из материала, который пропускает инфракрасное излучение (чаще всего на основе силикона). Чувствительные элементы устанавливаются за пластиной.

Схема подключения датчика движения к Ардуино

Подключение Pir-датчика к Ардуино выполнить не сложно. Чаще всего модули с сенсорами движения оснащены тремя коннекторами на задней части. Распиновка каждого устройства зависит от производителя, но чаще всего возле выходов есть соответствующие надписи. Поэтому, прежде чем выполнить подключение датчика к Arduino необходимо ознакомиться с обозначениями. Один выход идет к земле (GND), второй – обеспечивает выдачу необходимого сигнала с сенсоров (+5В), а третий является цифровым выходом, с которого снимаются данные.

  • «Земля» – на любой из коннекторов GND Arduino;
  • Цифровой выход – на любой цифровой вход или выход Arduino;
  • Питание – на +5В на Arduino.

Схема подключения инфракрасного датчика к Ардуино представлена на рисунке.

Пример программы

Скетч представляет собой программный код, который помогает проверить работоспособность датчика движения после его включения. В самом простом его примере есть множество недостатков:

  • Вероятность ложных срабатываний, за счет того, что для самоинициализации датчика требуется одна минута;
  • Отсутствие выходных устройств исполнительного типа – реле, сирены, светоиндикации;
  • Короткий временной интервал сигнала на выходе сенсора, который необходимо на программном уровне задержать, в случае появления движения.

Указанные недостатки устраняются при расширении функционала датчика.

Скетч самого простого типа, который может быть использован в качестве примера работы с датчиком движения на Arduino, выглядит таким образом:

Возможные варианты проектов с применением датчика

Пир-датчики незаменимы в тех проектах, где главной функцией сигнализации является определение нахождения или отсутствия в пределах определенного рабочего пространства человека. Например, в таких местах или ситуациях, как:

  • Включение света в подъезде или перед входной дверью автоматически, при появлении в нем человека;
  • Включение освещения в ванной комнате, туалете, коридоре;
  • Срабатывание сигнализации при появлении человека, как в помещении, так и на придомовой территории;
  • Автоматическое подключение камер слежения, которыми часто оснащаются охранные системы.

Пир-сенсоры просты в эксплуатации и не вызывают сложностей при подключении, имеют большую зону чувствительности и также могут быть с успехом интегрированы в любой из программных проектов на Ардуино. Но следует учитывать, что они не имеют технической возможности предоставить информацию о том, сколько объектов находится в зоне действия, и как близко они расположены к датчику, а также могут срабатывать на домашних питомцев.

Про датчик движения и подключение его к Arduino

Опубликовано: 25.10.2016 19:00

Всем привет, сегодня мы рассмотрим устройство под названием датчик движения. Многие из нас слышали об этой штуке, кто то даже имел дело с этим устройством. Что же такое датчик движения? Попробуем разобраться, итак:

Датчик движения, или датчик перемещения — устройство (прибор) обнаруживающий перемещение каких либо объектов. Очень часто эти устройства, используются в системах охраны, сигнализации и мониторинга. Форм факторов этих датчиков существует великое множество, но мы рассмотрим именно модуль датчика движения для подключения к платам Arduino, и именно от фирмы RobotDyn. Почему именно этой фирмы? Я не хочу заниматься рекламой этого магазина и его продукции, но именно продукция данного магазина была выбрана в качестве лабораторных образцов благодаря качественной подаче своих изделий для конечного потребителя. Итак, встречаем — датчик движения (PIR Sensor) от фирмы RobotDyn:

Эти датчики малы по габаритам, потребляют мало энергии и просты в использовании. Кроме того — датчики движения фирмы RobotDyn имеют еще и маркированные шелкографией контакты, это конечно мелочь, но очень приятная. Ну а тем кто использует такие же датчики, но только других фирм, не стоит беспокоиться — все они имеют одинаковый функционал, и даже если не промаркированы контакты, то цоколёвку таких датчиков легко найти в интернете.

Основные технические характеристики датчика движения(PIR Sensor):

Зона работы датчика: от 3 до 7 метров

Угол слежения: до 110 о

Рабочее напряжение: 4,5. 6 Вольт

Потребляемый ток: до 50мкА

Примечание: Стандартный функционал датчика можно расширить, подключив на пины IN и GND датчик освещенности, и тогда датчик движения будет срабатывать только в темноте.

Инициализация устройства.

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

Угол и область обнаружения.

Угол обнаружения(слежения) составляет 110 градусов, диапазон расстояния обнаружения от 3 до 7 метров, иллюстрация ниже показывает всё это:

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

На приведённой ниже таблице показаны основные регулировки датчика движения, слева находится регулятор временной задержки соответственно в левом столбце приведено описание возможных настроек. В правом столбце описание регулировок расстояния обнаружения.

Подключение датчика:

  • PIR Sensor[PIN GND] — Arduino Nano[PIN GND]
  • PIR Sensor[PIN 5V] — Arduino Nano[PIN 5V]
  • PIR Sensor[PIN OUT] — Arduino Nano[PIN A0]
  • PIR Sensor[PIN IN] — для датчика освещенности
  • PIR Sensor[PIN GND] — для датчика освещенности

Типичная схема подключения дана на схеме ниже, в нашем случае датчик показан условно с тыльной стороны и подключен к плате Arduino Nano.

Скетч демонстрирующий работу датчика движения(используем программу Serial Monitor Pro):

Скетч является обычной проверкой работы датчика движения, в нём есть много недостатков, таких как:

  1. Возможные ложные срабатывания, датчику необходима самоинициализация в течение одной минуты.
  2. Жесткая привязка к монитору порта, нет выходных исполнительных устройств(реле, сирена, светоиндикация)
  3. Слишком короткое время сигнала на выходе датчика, при обнаружении движения необходимо программно задержать сигнал на более долгий период времени.

Усложнив схему и расширив функционал датчика, можно избежать вышеописанных недостатков. Для этого потребуется дополнить схему модулем реле и подключить обычную лампу на 220 вольт через данный модуль. Сам же модуль реле будет подключен к пину 3 на плате Arduino Nano. Итак принципиальная схема:

Теперь пришло время немного усовершенствовать скетч, которым проверялся датчик движения. Именно в скетче, будет реализована задержка выключения реле, так как сам датчик движения имеет слишком короткое время сигнала на выходе при срабатывании. Программа реализует 10-ти секундную задержку при срабатывании датчика. При желании это время можно увеличить или уменьшить, изменив значение переменной DelayValue . Ниже представлен скетч и видео работы всей собранной схемы:

В программе присутствует конструкция:

unsigned long prevMillis = 0;

int interval = 1000;

unsigned long currMillis = millis();

if(currMillis — prevMillis > interval)

// Наши операции заключенные в тело конструкции

Чтобы внести ясность, было решено отдельно прокомментировать эту конструкцию. Итак, данная конструкция позволяет выполнить как бы параллельную задачу в программе. Тело конструкции срабатывает примерно раз в секунду, этому способствует переменная interval. Сначала, переменной currMillis присваивается значение возвращаемое при вызове функции millis(). Функция millis() возвращает количество миллисекунд прошедших с начала программы. Если разница currMillis — prevMillis больше чем значение переменной interval то это означает, что уже прошло более секунды с начала выполнения программы, и нужно сохранить значение переменной currMillis в переменную prevMillis затем выполнить операции заключенные в теле конструкции. Если же разница currMillis — prevMillis меньше чем значение переменной interval, то между циклами сканирования программы еще не прошло секунды, и операции заключенные в теле конструкции пропускаются.

Читайте также  Лампа дневного света на батарейках

Ну и в завершение статьи видео от автора:

Детектор движения с использованием Arduino и PIR датчика

Обнаружение движений требуется во многих радиоэлектронных проектах. Это легко сделать с помощью PIR датчика. В этом проекте мы рассмотрим подключение PIR датчика к плате Arduino и сконструируем простой детектор движения на его основе. При обнаружения движения в нашем устройстве будет загораться светодиод и зуммер будет издавать звуковой сигнал.

Необходимые компоненты

Плата Arduino Uno (или любая другая)
PIR датчик (PIR Sensor Module)
Светодиод
Зуммер (Buzzer)
Макетная плата
Соединительные провода
Резистор 330 Ом

PIR датчик

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

В PIR датчике присутствуют два важных элемента: пироэлектрический кристалл, который может обнаруживать тепловые сигнатуры от живого организма (человека/животных), и линзы Френеля, которые расширяют диапазон действия датчика. Также в PIR датчике доступно несколько вариантов опций, показанных на следующем рисунке.

Два потенциометра (оранжевый цвет) используются для управления чувствительностью и срабатывания по времени датчика. Основной контакт датчика (Dout) располагается между его контактами Vcc и Gnd. Датчик работает от напряжения 3.3 В, но также может работать и от напряжения 5 В. В левом верхнем углу датчик имеет переключатель режимов своей работы. Всего доступно два режима работы: “H” режим и “I” режим.

В “H” режиме на выходном контакте датчика Dout будет появляться напряжение высокого уровня (3.3V) когда в диапазоне действия датчика будет появляться человек. Спустя некоторое время, устанавливаемое с помощью потенциометра, напряжение на этом контакте становится низкого уровня. То есть в этом режиме напряжение высокого уровня на контакте Dout будет независимо от того присутствует ли еще человек в зоне действия датчика или покинул ее. Этот режим мы будем использовать в нашем проекте – в большинстве случаев он предпочтительней при работе с этим датчиком. Еще его называют режимом “с перезапуском”.

В режиме “I” напряжение высокого уровня (3.3V) на выходном контакте датчика Dout будет только тогда, когда человек находится в зоне действия датчика. Как только человек покинет ее, то спустя некоторое время, регулируемое с помощью потенциометра, на контакте Dout будет напряжение низкого уровня. То есть если вы будете ходить около датчика, то он будет постоянно срабатывать и выключаться. Этот режим еще называется режимом “без перезапуска”.

Примечание : местоположение контактов и потенциометров могут отличаться в зависимости от производителя PIR датчика.

Работа схемы

Схема устройства представлена на следующем рисунке.

Мы запитали PIR датчик от контакта 5V платы Arduino. Выходной контакт PIR датчика подключен к цифровому контакту 2 платы Arduino. Этот контакт Arduino будет работать в режиме ввода данных. Контакт 3 платы Arduino подключен к светодиоду и зуммеру. Он будет работать в режиме вывода данных. То есть когда на контакте 2 мы будем обнаруживать высокий уровень, мы будем подавать напряжение высокого уровня на контакт 3.

Объяснение работы программы

PIR датчик у нас подключен к контакту 2 платы Arduino, поэтому для этого контакта мы должны установить режим ввода данных. А для контакта 3, к которому подключены зуммер и светодиод, мы должны установить режим вывода данных. Режимы работы контактов мы должны задать в функции void setup().

void setup() <
pinMode(2, INPUT); //Pin 2 в режим ввода данных
pinMode(3, OUTPUT); //PIN 3 в режим вывода данных
>

Затем мы переходим к функции loop(). Как мы знаем, код внутри этой функции выполняется непрерывно (постоянно), пока на плату Arduino подано питание. Поэтому внутри данной функции мы постоянно будем проверять не появилось ли на контакте 2 напряжение высокого уровня с помощью следующей строчки кода:

if (digitalRead(2) == HIGH)

Если на этом контакте появилось напряжение высокого уровня это будет означать, что PIR датчик обнаружил движение (человека). При обнаружении этого события мы должны подать напряжение высокого уровня на контакт 3. Мы будем поочередно подавать на этот контакт высокий и низкий уровень с задержкой 100 мс, то есть светодиод будет мигать, а зуммер – издавать прерывистый сигнал.

void setup() <
pinMode(2, INPUT); //Pin 2 as INPUT
pinMode(3, OUTPUT); //PIN 3 as OUTPUT
>
void loop() <
if (digitalRead(2) == HIGH) // проверяем сработал ли PIR датчик
<
digitalWrite(3, HIGH); // включаем светодиод/зуммер
delay(100); // ждем 100 мс
digitalWrite(3, LOW); // выключаем светодиод/зуммер
delay(100); // ждем 100 мс
>
>

Работа проекта

После того как вы собрали схему рассматриваемого нами датчика движения на макетной плате и загрузили код программы (приведен в конце статьи) в плату Arduino вы можете приступать к тестированию работы проекта. Общий вид собранного устройства должен получиться примерно такой:

Подайте питание на плату Arduino и подождите 50-60 секунд пока PIR датчик откалибруется – не обращайте внимание на странности его срабатывания в течение этого времени. После этого попытайтесь двигаться напротив PIR датчика и вы будете наблюдать как будут срабатывать светодиод и зуммер. Более подробно весь этот процесс показан на видео в конце статьи.

Звучание зуммера/мигание светодиода должны прекратиться спустя некоторое время после того как прекратится движение напротив датчика. Вы можете поэкспериментировать с настройкой чувствительности датчика, вращая расположенный на нем потенциометр.

Исходный код программы

Код программы очень простой – я думая его понимание не вызовет у вас никаких затруднений. Как мы узнали из этой статьи, подключить PIR датчик к плате Arduino достаточно просто – не нужно подключать каких то дополнительных библиотек, работать с ШИМ-сигналом и АЦП как в случае с другими датчиками и т.д.

void setup() <
pinMode(2, INPUT); // Pin 2 в режим ввода данных
pinMode(3, OUTPUT); // PIN 3 в режим вывода данных
>
void loop() <
if (digitalRead(2) == HIGH)
<
digitalWrite(3, HIGH); // включаем светодиод/зуммер
delay(100); // ждем 100 мс
digitalWrite(3, LOW); // выключаем светодиод/зуммер
delay(100); // ждем 100 мс
>
>

Видео, демонстрирующее работу схемы

Подключаем датчик движения к Ардуино

  • Описание датчика движения
  • Базовые технические характеристики
  • Основные принципы работы
  • Общая схема подключения
  • Пример работы
  • Настройка
  • Соединение датчика с контроллером
  • Программная часть
  • Где можно применить
  • Недостатки
  • Заключение
  • Видео по теме

Датчик движения — устройство, позволяющее отследить перемещения в пределах досягаемости сенсора. Такие системы находят применение в проектах «умных» домов, в бизнесе и просто в быту, например, для включения света в доме, подъезде, комнате и так далее. Электронный конструктор Ардуино предоставляет удобную платформу для создания таких датчиков: благодаря небольшим габаритам, дешевизне, простоте и функциональности датчик движения Ардуино можно внедрять в самые различные электронные комплексы.

Описание датчика движения

Создаваемые на базе Ардуино сенсоры перемещения устроены довольно просто. Они работают на принципе регистрации инфракрасных излучений. Помимо контроллера, основной компонент устройства — высокочувствительный пассивный пироэлектрический (PIR) элемент, регистрирующий присутствие определенного уровня инфракрасного спектра. Чем теплее появившийся в радиусе действия сенсора объект, тем сильнее излучение.

Типичный PIR-датчик снабжается полусферой с фокусирующими поступающую на сегменты сенсора тепловую энергию линзами. Обычно применяется линза Френеля: она хорошо концентрирует тепло и существенно увеличивает чувствительность. В качестве платформы нередко берут Arduino Uno, но возможно создание датчика и на других версиях контроллера.

Конструктивно PIR-сенсор делится на две части. Поскольку для устройства принципиально важно улавливание движения в зоне покрытия, а не уровень тепловой эмиссии, части устанавливаются так, чтобы при появлении на одной из них большего уровня излучения на выход гаджета подавался сигнал low или high. Далее он обрабатывается микроконтроллером.

Интересно: существуют иные способы обнаружения движения. Так, сегодня постепенно распространяются системы машинного зрения, использующие нейросетевые алгоритмы для определения перемещений. Охранные комплексы могут использовать лазерные детекторы и тепловизионные датчики, реагирующие исключительно на тепло живых существ. Нередко ИК-датчики комбинируют с этими устройствами.

Базовые технические характеристики

Большинство PIR-датчиков соответствуют следующим параметрам:

  • зона уверенной детекции движения — до 7 м;
  • угол слежения — до 110 градусов;
  • рабочее напряжение — от 4.5 до 6 В;
  • диапазон температур — от -20 до +50 градусов;
  • время задержки 0.3–18 сек.

Модуль ИК-датчика несет на себе также электрическую обвязку с необходимыми компонентами: конденсаторами, предохранителями и резисторами.

Читайте также  Осветительные приборы для производственных помещений

Основные принципы работы

Пироэлектрик представляет собою материал, при изменении своей температуры генерирующий электрическое поле. В простом PIR-сенсоре два таких элемента, подключенных с разными полярностями.

Предположим, что гаджет смонтирован в помещении.

  1. Если комната пуста, все элементы получают одинаковую порцию теплового излучения, напряжение на них также постоянно (на левой части рисунка ниже).
  2. Когда в комнате появляется человек, он оказывается в зоне действия элемента 1. Тот генерирует положительный электроимпульс (на центральной части картинки).
  3. Перемещение человека приводит и к движению его «теплового пятна», улавливаемого элементом 2. Второй элемент создает отрицательный импульс (правая часть).
  4. Схема датчика регистрирует оба импульса, делая вывод о наличии человека в «поле зрения». А логика контроллера по этому сигналу выполняет заложенное пользователем действие — включает свет, активирует сигнализацию и так далее.

Как правило, для защиты соединений и компонентов от электронных и тепловых шумов, воздействия влаги и высокой температуры их помещают в герметичный корпус. Верхняя часть его содержит прямоугольное «окно» из ИК-прозрачного материала для свободного доступа теплового излучения.

Общая схема подключения

Большинство модулей снабжено тремя пинами для соединения с платой Ардуино. Распиновка может различаться в зависимости от производителя узла, но, как правило, выходы отмечаются поясняющими надписями.

Обычно выходов три: GND — заземление, второй — +5 В, он выдает сигнал с ИК-сенсоров. Третий — цифровой, для снятия данных

Принцип соединения с контроллером следующий:

  • GND — на любой доступный пин «земли» платы Arduino;
  • «цифра» — на любой свободный цифровой вход/выход;
  • коннектор питания следует подключить к выходу +5 В.

Пример работы

Рассмотрим ситуацию использования датчика на примере микроконтроллера Ардуино Уно и сенсора HC-SR501. Его характеристики:

  • рабочее напряжение постоянного тока — 4.5–20 В;
  • ток покоя — ≈ 50 мкА;
  • выходное напряжение — 3.3 В;
  • диапазон температур — от −15 до +70 градусов Цельсия;
  • габариты — 32×24 мм;
  • угол детектирования — 110 градусов;
  • дистанция срабатывания — до 7 метров.

Важно: при температурах от +30 градусов эффективное расстояние детекции может снизиться.

В указанном сенсоре установлены два пироэлектрических датчика IRA-E700.

Сверху они прикрыты сегментированной полусферой. Каждый сегмент — фокусирующая тепло на определенный участок ПИР-датчика линза.

Внешний вид устройства:

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

Настройка

ИК-модуль HC-SR501 весьма прост в настройке и дешев. У него есть перемычка для конфигурирования режима и пара подстроечных резисторов. Общая чувствительность настраивается первым потенциометром: чем она выше, тем шире зона «видимости» гаджета».

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

Другой потенциометр управляет временем срабатывания устройства: если обнаружено перемещение, на выходе создается положительный электрический импульс определенной длины (от 5 до 300 секунд).

Следующий управляющий элемент — перемычка. От нее зависит режим работы.

  • в позиции L время отсчитывается от первого срабатывания. То есть, к примеру, если человек зайдет в помещение, система среагирует и включит свет на указанное настройкой потенциометра время. Когда оно истечет, выходной сигнал возвращается к начальному показателю, и комплекс перейдет в режим ожидания следующей активации;
  • в позиции H обратный отсчет будет начинаться после каждого детектирования события движения, а любое перемещение станет обнулять таймер. В этом положении перемычка стоит по умолчанию.

Соединение датчика с контроллером

Подключение датчика движения к Ардуино следует выполнять по указанной схеме:

Пин OUT соединяется с пином 2 Уно, а VCC подсоединено к контакту +5 В. Принципиальная схема конструкции:

Программная часть

Помимо контроллера, для функционирования оборудования необходима управляющая аппаратным комплексом программа. Ниже приведен простой скетч:

В нем при обнаружении гаджетом движения на последовательный порт отправляется 1, а в ином случае уходит значение 0. Это простейшая программа, с помощью которой можно протестировать собранный датчик.

Модифицируем устройство добавлением реле, которое станет включать свет. Принципиальная схема подключения:

Программа для реализации данного функционала:

Теперь, если собрать компоненты по схеме, загрузить скетч в Ардуино и соединить систему с электросетью дома, по сигналу сенсора перемещения контроллер заставит сработать реле, а то, в свою очередь, включит свет.

Интересно: существует возможность соединения сенсора с реле напрямую, без контроллера. Но внедрение в схему Arduino делает ее более гибкой, функциональной и конфигурируемой.

Где можно применить

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

Датчики можно комбинировать: например, если не хватает максимальной длины импульса, в систему добавляется ультразвуковой или микроволновый сенсор присутствия.

Недостатки

В силу отработанности аппаратной платформы, хорошо документированных схем, простоты разработки ПО и дешевизны PIR-датчики на Ардуино не обладают особыми недостатками в рамках возлагаемых на них задач. Возможности их применения ограничиваются естественными пределами ИК-технологии, периферийным оборудованием и заложенными в прошивку контроллера функциями.

Из недостатков отметим долгую инициализацию: многим образцам на переход в рабочий режим после первого включения требуется около минуты, на протяжении которой велик шанс ложных срабатываний. Кроме того, они не способны отличить человека от другого теплого объекта; для этого требуется иной класс устройств.

Заключение

Созданный на платформе Arduino датчик движения — простое и функциональное устройство, помогающее быстро и с минимальными усилиями решить задачу автоматического выполнения действий при появлении человека в радиусе действия. Очень часто такие комплексы можно встретить в квартирах и домах, на улицах и в парках — там они включают свет по детекции движения.

Находят они применение и в системах сигнализации и видеонаблюдения: по сигналу включается оповещение или запись события. Гибкость Arduino позволяет реализовать даже очень сложные проекты, например, включения сенсора в экосистему «умного дома». Хотя существуют и более продвинутые лазерные, ультразвуковые и тепловизионные варианты, ИК-детекторы в данной сфере остаются самым доступным и простым решением.

Видео по теме

Arduino и HC-SR501 (датчик движения)

Сегодня мы будем знакомиться с модулем, позволяющим отслеживать движение – пироэлектрическим инфракрасным (PIR) датчиком движения. Для примера будем использовать модуль HC-SR501, как один из самых популярных и совместимых с Arduino. Чаще всего он используется в устройствах, предназначенных для управления освещением, и для этого может использоваться вкупе с датчиком освещённости.

Этот модуль небольшой по размерам, потребляет малый ток и очень простой в использовании, благодаря чему его можно использовать и в устройствах с автономным питанием.

Характеристики датчика по даташиту:

  1. Широкий диапазон рабочего напряжения: 4,5 – 20 В постоянного тока;
  2. Потребляемый ток покоя: ≈50 мкА;
  3. Напряжение на выходе: 3.3 В;
  4. Рабочая температура: от -15° C до 70° C;
  5. Размеры: 32*24 мм;
  6. Два режима работы;
  7. Максимальный угол обнаружения – 110°;
  8. Максимальная дистанция срабатывания – от 3 до 7 м (регулируется); При температуре более 30° C это расстояние может уменьшаться.

На модуль установлена линза Френеля, которая фокусирует инфракрасные сигналы на пироэлектрический датчик под названием 500BP. Датчик называется PIR (Passive Infra-Red). Пассивный он потому, что для обнаружения движения не используется какая-либо дополнительная энергия, кроме той, что испускается самими объектами.

500BP состоит из двух чувствительных элементов. Управляющая микросхема модуля регистрирует изменения сигналов от обоих элементов и по характеру их изменения обнаруживает движение объектов, испускающих инфракрасные сигналы (живых организмов).

Характеристики HC-SR501

Модуль HC-SR501 имеет 3 вывода:

  • Питание (VCC);
  • Земля (GND);
  • Выход 3v3 (OUT).

Сразу после подачи питания несколько секунд модуль будет калиброваться, в это время возможны ложные срабатывания. Примерно через минуту он перейдёт в режим ожидания. При срабатывании датчика на выходе появляется логическая единица, напряжение – 3.3 вольта.

Изменения этого сигнала зависят от выбранного режима работы. Он меняется перемычкой (отмечена на фото с подписями какой режим будет выбран). Если выбран H– при нескольких срабатываниях подряд на выходе датчика остаётся высокий уровень, при L– для каждого срабатывания будет подан свой импульс.

Также на самом модуле можно найти два переменных резистора, регулирующих дистанцию обнаружения движения (Distance Adjust) и время, в течение которого на выходе будет логическая единица (Delay Time Adjust). Дистанция регулируется в пределах 3 – 7 метров, задержка от 5 до 300 секунд.

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

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

Подключение HC-SR501 к Arduino

Итак, мы прошли теорию, настало время проверить датчик в работе. Первым этапом станет его подключение к Arduino:

  • GND подключаем к одноимённому выводу Arduino;
  • VCC к 5V;
  • OUT подключим к A0.
Читайте также  Фонарь на мощном светодиоде и литиевых аккумуляторах

Подключение выхода модуля к аналоговому пину связано с тем, что цифровые пины Arduino работают с пятивольтовой логикой, а наш модуль рассчитан на 3.3 В. В скетче за логическую единицу мы примем значение более 500 на аналоговом порту. Это будет около 2.44 В и более.

Схема подключения hc-sr501:

Подключение в Arduino IDE

Теперь загружаем в Arduino следующий скетч и открываем монитор порта.

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

Теперь расширим функционал устройства, добавив реле и лампу на 220 В.

Реле подключим к 3 цифровому пину Arduino. Питание – 5V.

Общий провод (COM) реле подключаем к фазе 220 В, NO (Normally Open, нормально разомкнутый контакт, пока через реле не потечёт ток, он будет разомкнут) подключаем к лампе, другой контакт лампы – к нолю 220 В.

Теперь немного переделаем скетч, убрав отправку данных в последовательный порт и добавив управление реле.

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

При желании датчик можно подключать напрямую к реле без использования микроконтроллера. Однако в варианте с микроконтроллером возможна более гибкая настройка и простое расширение функциональности.

Товары, используемые в материале

Arduino NANO V3 (ATmega 328P / CH340G)

HC-SR501 – Инфракрасный датчик движения (PIR)

KY-019 – Одноканальное реле 250В / 10А

Шлейф проводов «Мама — Мама» (30см, 40шт.)

Самые популярные материалы в блоге

За все время

  • BMS – обзор контроллеров защиты аккумуляторов
  • Установка ESP32 в Arduino IDE (руководство для ОС Windows)
  • Arduino и адресная светодиодная лента WS2812B
  • Веб-сервер потокового видео ESP32-CAM (работает с Home Assistant)
  • LED индикатор TM1637 и Arduino – схема подключения

За сегодня

  • DS1302 – схема подключения к Arduino
  • OLED I2C 128 x 64 px – схема подключения к Arduino
  • Установка ESP32 в Arduino IDE (руководство для ОС Windows)
  • Простой веб-сервер метеостанции на ESP8266 и BME280
  • LED индикатор TM1637 и Arduino – схема подключения

6 комментариев . Оставить новый

Добрый день! Собираю себе небольшую охранную систему состоящую из камеры видеонаблюдения, ПИР-Датчика, прожектора подключенного к Ардуино через реле как в вашей схеме. Устанавливать собираюсь под окном, что бы отпугивать всяких моргинальных личностей из полисадника под окном, которые занимаются всяческими хулиганскими и противоправными действиями. Собрал схему, написал код. Код работает, но никак не могу реализовать в нем интервал задержки в 5 секунд (так называемый период охлаждения) необходимый мне для того, что бы система не срабатывала если объект находится в зоне видимости датчика менее 5 секунд. И наоборот активировала систему, если объект находится в зоне видимости более заданного времени. Перепробовал разные варианты, но результат один и тот же, датчик при получении логической единицы, либо сразу активирует систему, либо система работает некорректно, либо по и стечении заданного интервала датчик активирует систему вне зависимости выполено ли условие или нет. Подскажите пожалуйста, как можно реализовать подобный алгоритм?
У меня уже фантазии на исходе. Делал вариант с флажком, как на вашей схеме с счетчика заданием интервала. Система работает корректно только на отключение. Подойдет ли вариант приравнять датчик к кнопке и использовать этот аргумент как смену режима работы датчика?

Здравствуйте! Проверяйте переменную два раза, один по срабатыванию триггера, а второй – через 5 секунд. На самом датчике выставите потенциометром минимально короткую задержку. После 5 секунд проверяйте переменную на наличие логической единицы еще раз, а уже после этого – щелкайте актуаторами

Добрый день уважаемый Вольтик,
помогите пожалуйста в моём случае. У меня есть код и все прекрасно работает. Свет для коридора.
Но я хочу добавить ещё 2 датчика движения на пин. 2 и 4. Понимаю что нужно прописывать для каждого пина свой код и на этом всё! Код оигинальный который работает:
#include

#define piro 8
#define mosfet 9
#define foto A0
#define pot A1
#define switch1 7

#define nightVAL 200
#define minPWM 5
#define smooth 7

Bounce debouncer = Bounce();

pinMode (piro, INPUT);
pinMode (mosfet, OUTPUT);
pinMode (switch1, INPUT_PULLUP);

TCCR1A = TCCR1A & 0xe0 | 1;
TCCR1B = TCCR1B & 0xe0 | 0x09;

pwm = map (analogRead (pot), 0, 1023, 0, 255);

if (digitalRead (switch1) == LOW)
if (debouncer.fell())
<
for (int i1 = 0; i1 = 0; i2–)
<
analogWrite (mosfet, i2);
delay (smooth);
>
>
else if (debouncer.read() == HIGH)
<
if ((analogRead (foto) Arduino Nano[PIN GND]
* PIR Sensor[PIN 5V] -> Arduino Nano[PIN 5V]
* PIR Sensor[PIN OUT] -> Arduino Nano[PIN A0]
* Relay Module[PIN IN] -> Arduino Nano[PIN 3]
*/
//relout – пин модуля реле
const int relout = 3;
//trigger – флаг срабатывания датчика движения
boolean trigger = false;

void setup()
<
/*Стандартная процедура инициализации порта на который подключен модуль реле.
ВАЖНО. – чтобы модуль реле оставался в первоначально выключенном состоянии,нужно записать в порт входа/выхода значение HIGH, это позволит избежать ложных “перещелкиваний”,
и сохранит состояние реле таким, каким оно было до включения всей схемы в работу*/
pinMode(relout, OUTPUT);
digitalWrite(relout, HIGH);

//задержка в минуту для инициализации датчика
delay(60000);
>

void loop()
<
//Считать значение с аналогового порта А0
//Если значение выше 500
if(analogRead(A0) > 500)
<
//Установить флаг срабатывания датчика движения
if(!trigger)
<
trigger = true;
>
>
else
<
//Снять флаг срабатывания датчика движения
trigger = false;
//Выключить реле
digitalWrite(relout, HIGH);
>

//Пока флаг срабатывания датчика движения установлен
while(trigger)
<
//Включить реле
digitalWrite(relout, LOW);
if(analogRead(A0) > 500)
<
//Установить флаг срабатывания датчика движения
if(!trigger)
<
trigger = true;
>
>
else
<
//Снять флаг срабатывания датчика движения
trigger = false;
//Выключить реле
digitalWrite(relout, HIGH);
>
>
>

Зачем нужен тригер и цикл while, когда достаточно одного условия вначале loop ? и потом, логика неверная, реле замкнуто когда нет движений а когда есть – размыкает, там либо менять местами HIGH с LOW, либо проводок в реле перекинуть. Не написано какой режим установлен на датчике H или L.

Инфракрасный датчик движения (Zelo-модуль)

Инфракрасный датчик движения зафиксирует любое перемещения тёплых объектов: людей, животных и даже лунных рыб.

Видеообзор

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

Каждый теплокровный объект является источником теплового излучения. Длина волны теплового излучения зависит от температуры и находится в инфракрасной части спектра. ИК излучение невидимо для глаза, но улавливается пироэлектрическими датчиками.

Примеры работы

Простой датчик движения

Инфракрасный датчик может работать даже без микроконтроллера. Соберите простой детектор движения объекта.

Что вам понадобится?

Схема устройства

При появлении объекта в зоне видимости датчика, лампочка загорится.

Используйте инфракрасный датчик движения как одно из зёрен в своём умном доме. Тут уже не обойтись без Arduino, Raspberry Pi или Iskra JS.

Пример для Arduino

Подключим датчик движения к Arduino Uno через Troyka Shield к 4 цифровому пину.

Схема устройства

Код программы

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

После прошивки платы, вы увидите бегущие нули. А как только появится живой объект на горизонте — нули сменятся на единицы.

Пример для Iskra JS

Скоммутируем PIR-сенсор к Iskra JS через Troyka Shield к 4 цифровому пину.

Схема устройства

Код программы

Зафиксируем движение объекта с помощью Espruino и языка JavaScript.

В результате вы увидите сообщение в консоле, при обнаружении живого объекта в зоне видимости сенсора.

Пример для Raspberry Pi

Поймаем живой объект одноплатником Raspberry Pi, например, Raspberry Pi 4. Подключите сенсор движения к пину 4 Raspberry. Для избежания макеток и проводов используйте плату расширения Troyka Cap.

Схема устройства

Код программы

После запуска скрипта вы увидите текущие показатели сенсора. Пока движения нет — в консоли выводятся нули, при обнаружении живого объекта — единицы.

Элементы платы

Пироэлектрический сенсор с линзой Френеля

Модуль выполнен на пироэлектрическом сенсоре RD-624 в металлическом герметичном корпусе. Внутри компонента расположено два чувствительных элемента, которые смотрят на внешний мир через прямоугольное окно, которое пропускает инфракрасное излучение.

На пироэлектрический сенсор одевается Линза Френеля, которая концентрируют излучение, значительно расширяя диапазон чувствительности датчика.

Микросхема управления

Мозгом сенсора является микросхема BISS0001. Чип считывает и обрабатывает сигналы с PIR-сенсора. В итоге на выходе модуля бинарный цифровой. Есть движение — единица, нет — ноль.

Выбор режима работы

Режим работы модуля задается перемычкой . Есть два режима — режим H и режим L. На фото выше в модуле установлен режим H.

Режим H — в этом режиме при срабатывании датчика несколько раз подряд на его выходе (на OUT) остается высокий логический уровень.

Режим L — в этом режиме на выходе при каждом срабатывании датчика появляется отдельный импульс.

Регулировка режимов работы

На модуле расположено три потенциометра отвечающие за подстройку режима работы:

Световой индикатор

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

Датчик освещённости

Датчик освещённости на фоторезисторе GL5528, подкорректирует чувствительность модуля на солнечный свет. Это удобно при необходимости отключение работы сенсора в дневное время суток.

Troyka-контакты

На модуле выведена группа Troyka-контактов: