Ардуино: инфракрасный датчик движения, ПИР

Тема сегодняшнего урока — датчик движения на основе пироэлектрического эффекта (PIR, passive infrared motion sensor). Такие датчики часто используются в охранных системах и в быту для обнаружения движения в помещении. Например, на принципе детектирования движения основано автоматическое включение света в подъезде или в ванной. Пироэлектрические датчики достаточно простого устроены, недороги и неприхотливы в установке и обслуживании.

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

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

Список необходимых компонентов

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

В корзину
В корзину
В корзину
В корзину
В корзину
В корзину

Принцип действия пироэлектрических датчиков движения

Пироэлектрики — это диэлектрики, которые создают электрическое поле при изменении их температуры. На основе пироэлектриков делают датчики измерения температуры, например, LHI778 или IRA-E700. Каждый такой датчик содержит два чувствительных элемента размером 1×2 мм, подключенных с противоположной полярностью. И как мы увидим далее, наличие именно двух элементов поможет нам детектировать движение.

Вот так выглядит датчик IRA-E700 компании Murata.

IRA-E700ST0

На этом уроке мы будем работать с датчиком движения HC-SR501, в котором установлен один такой пироэлектрический датчик. Сверху пироэлектрик окружен полусферой, разбитой на несколько сегментов. Каждый сегмент этой сферы представляет собой линзу, которая фокусирует тепловое излучение на разные участки ПИР-датчика. Часто в качестве линзы используют линзу Френеля.

irmodule_1

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

Drawing1

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

Человек движется, и его тепловое излучение через линзы попадает уже на второй PIR-элемент, который генерирует отрицательный импульс. Электронная схема датчика движения регистрирует эти разнонаправленные импульсы и делает выводы о том, что в поле зрения датчика попал человек. На выходе датчика генерируется положительный импульс (правый рисунок).

Настройка HC-SR501

На этом уроке мы будем использовать модуль HC-SR501. Этот модуль очень распространен и применяется во множестве DIY проектов в силу своей дешевизны.

У датчика имеется два переменных резистора и перемычка для настройки режима. Один из потенциометров регулирует чувствительность прибора. Чем она больше, тем дальше «видит» датчик. Также чувствительность влияет на размер детектируемого объекта. К примеру, можно исключить из срабатывания собаку или кошку.

SENS-IR-HC-SR501_sh

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

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

В положении H датчик начинает отсчет времени T каждый раз после обнаружения движения. Другими словами, любое шевеление человека вызовет обнуление таймера отсчета Т. По-умолчанию, перемычка находится в состоянии H.

Подключение HC-SR501 к Ардуино Уно

Для соединения с микроконтроллером или напрямую с реле у HC-SR501 имеется три вывода. Подключаем их к Ардуино по следующей схеме:

HC-SR501GNDVCCOUT
Ардуино УноGND+5V2

Принципиальная схема

IR_motion_схема

Внешний вид макета

IR_motion_bb

Программа

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

const int movPin = 2

void setup() {
    Serial.begin(9600);
    pinMode(movPin, INPUT);
}

void loop(){
    int val = digitalRead(movPin);
    Serial.println(val);
    delay(100);
}

Загружаем программу на Ардуино и проверяем работу датчика. Можно покрутить настройки датчика и посмотреть как это отразится на его работе.

Управление светом при помощи датчика движения

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

Будем использовать модуль реле с защитой на основе опторазвязки, о котором мы уже писали в одном и уроков (урок про реле).

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

Принципиальная схема

IR_motion_relay_схема

Внешний вид макета

IR_motion_relay_bb

Программа

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

const int movPin = 2;
const int relPin = 3;

void setup() {
    Serial.begin(9600);
    pinMode(movPin, INPUT);
    pinMode(relPin, OUTPUT);
}

void loop(){
    int val = digitalRead(movPin);
    if (val)
        digitalWrite(relPin, HIGH);
    else
        digitalWrite(relPin, LOW);
}

Загружаем программу на Ардуино, аккуратно подключаем схему к бытовой сети и проверяем работу датчика.

Заключение

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

Вот несколько ситуаций и мест, где может пригодиться датчик движения:

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

Как уже говорилось в самом начале, существуют и другие способы детектирования движения. О них мы поговорим на следующих уроках!


Изменено:

Ардуино: инфракрасный датчик движения, ПИР: 18 комментариев

  1. В туалете не вариант, т.к. пока стоишь, он выключает свет. Чтобы не выключал свет, приходится махать руками. Когда машешь руками, точность попадания ухудшается. Так что не вариант, ребята.

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

      • тоже не вариант… минуту в толкане сидишь, читаешь газету и вырубается )) и не вариант увеличивать тайм-аут… т.к. вышел с комнаты и свет еще горит N-ное время. По умолчанию кстати перемычка в положении H стоит ))
        Нужно комбинировать датчики, если хотите, чтобы свет сразу вырубился после ухода с комнаты и не вырубался в вашем присутствии…
        Комбинировать PIR и микроволновый датчик, либо использовать еще ультразвуковой датчик, но с условием изменения постоянного расстояния (при изменении постоянного расстояния выдавать true)

    • А энкодер поставить не вариант? Или теряется то «волшебство» без контактного управления?

  2. А если нужно датчик на включение USB гирлянды например — просто надо другое реле?

    • Да реле не принципиально какую нагрузку переключать. С вашим вариантом (USB), проще все же переключать 220В, но после реле блок с USB выходом что бы был… и все.

  3. Вопрос, для чего тут ардуина? Неужели пир датчик не может управлять реле?

    • Дык на выходе датчика же импульсный сигнал, т.е. напрямую всегда будет мигание.
      Хотя если ёмкость большую туда ставить, что б сгладить импульсы, но не факт что прокатит.

    • Сам не может. 3,3 В мало, но он спокойно может открывать транзистор, который сам может комутировать нагрузку или твердотельное реле. Либо открывает транзистор, а транзистор запускает обычное реле. Так что контроллер можно не ставить если просто для света.

  4. Ещё бы усложнить схему (а именно — скетч), так что бы датчик функционировал при определенных событиях!
    Например, датчик включался при условии отсутствия сотрудников на территории (данные через RFID по ID) и выключался при наличии таковых.
    В случае обнаружения отправлял оповещение через интернет.

  5. В скече пропущена «;»
    Имеется
    const int movPin = 2

    void setup() {
    Serial.begin(9600);
    pinMode(movPin, INPUT);
    }

    void loop(){
    int val = digitalRead(movPin);
    Serial.println(val);
    delay(100);
    }
    Должно быть
    const int movPin = 2;

    void setup() {
    Serial.begin(9600);
    pinMode(movPin, INPUT);
    }

    void loop(){
    int val = digitalRead(movPin);
    Serial.println(val);
    delay(100);
    }

  6. Там на плате есть еще две пары контактов:RT и RL. RT — для впайки терморезистора. RL — для впайки фоторезистора.
    Для чего может понадобиться терморезистор, как «участник» процесса, я так и не придумал. А вот при наличии фоторезистора датчик становится еще «умнее», а именно — включает освещение только в полной темноте. Очень ценная фича. Фоторезисторы на али продаются на полтинник — пучок. И еще, лепить Обдурино там, где можно обойтись четырьмя копеечными деталями (резистор 1-2к, любой маломощный транзистор N-P-N, диод и реле.
    Детально можно посмотреть здесь://mysku.ru/blog/aliexpress/43007.html

  7. Необходимость ардуины относительна. Вот у меня например проект дачного сортира. Там ик для света только малая часть автоматики. Еще лазерный датчик уровня говна в яме, датчик температуры, датчик освещенности на фоторезисторе, чтоб днем не включало свет, ну и плата с 5 релюхами, включать свет, отопление, компрессор продувки говна, насос мешалку, и фекальник на откачку говна в лес при превышении заданного уровня, но исключительно ночью. Можно еще датчик дождя добавить, чтоб откачка только ночью в дождь происходила, но это уже лишнее.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.