Подключение pir датчика к ардуино

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HC-SR501 GND VCC OUT
Ардуино Уно GND +5V 2

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

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

Программа

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

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

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

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

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

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

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

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

Программа

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

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

Заключение

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

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

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

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

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

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

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

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

Обнаруживаем движения и жесты с помощью PIR сенсора и Ардуино

Используем датчик PIR и Arduino для обнаружения движения руки, чтобы потом использовать для работы с электронным оборудованием.

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

  • Объясняет применение PIR-датчиков и то, как они работают;
  • Показывает работу с PIR под названием TPA81
  • Использование датчика PIR для обнаружения движения и жестов с помощью Arduino;
  • Создание детектора для увеличения или уменьшения громкости динамика.

Компоненты

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

  • Arduino Nano R3 × 1
  • TPA81 Devantech 8 Pixal — Датчик температуры × 1
  • HC-SR505 Инфракрасный датчик движения PIR × 8
  • Модуль 0.96″ SPI 128X64 OLED дисплей × 1
  • Макетная плата × 1
  • Провода мама/папа × 1
  • Arduino Uno Rev3 × 1

Из программного обеспечения нам понадобится Arduino IDE.

Пассивный инфракрасный датчик: как он работает?

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

Термин «пассив» в этом случае относится к тому факту, что ПИР-устройства не генерируют или не излучают энергию для целей обнаружения. Они работают, обнаруживая инфракрасное излучение, излучаемое или отраженное от объектов. Они не обнаруживают и не измеряют тепло.

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

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

Другим типом датчика является массив термоэлементов. Они используются в бесконтактных инфракрасных термометрах. Они имеют очень широкий угол обзора или поле зрения (FOV) около 100° и нуждаются либо в устройстве сужения, либо в объективе, либо и то другое, для получения более полезного FOV около 12°.

У некоторых есть встроенный объектив. В последнее время стали доступны датчики с массивом термоэлементов, встроенной электроники и кремниевой линзы. Это тип, используемый в TPA81. Он имеет массив из восьми термополей, расположенных в ряд. TPA81 может одновременно измерять температуру 8 соседних точек. TPA81 также может управлять сервоприводом для панорамирования модуля и создания теплового изображения. TPA81 может обнаруживать пламя свечи на расстоянии 2 метров (6 футов) и не подвергается воздействию окружающего света.

Читайте также  Как подключить телефон к mitsubishi outlander?

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

В этом материале мы создадим детектор жестов с использованием PIR и Arduino. Мы использовали TPA81 как PIR, но это немного дорого, поэтому, если вы хотите сэкономить деньги, вы можете использовать 8 простых PIR-датчиков без белой головки (часть фокусировки). TPA81 поддерживает протокол I2C и совместим с Arduino Nano. Этот проект поможет вам узнать основы обработки изображений и обнаружения жестов.

Схема соединения

Если вы хотите использовать 8 датчиков PIR вместо TPA81, вы должны подключить 8 одиночных PIR-датчиков к плате Arduino и прочитать их один за другим. Таким образом, вы можете сэкономить деньги.

Не подключайте пины питания PIR к Ардуино 5В. В этой схеме выше вы должны отделить белую часть PIR и поставить их рядом друг с другом.

Используйте отдельные источники питания для PIR-сенсоров.

Для первой схемы (с использованием TPA81) скопируйте код в Arduino IDE. Но сначала вы должны добавить библиотеку, а затем загрузить код. Скачайте библиотеку TPA81 ниже.

Если вы впервые запускаете плату Arduino, не волнуйтесь. Просто выполните следующие действия:

  • Перейдите на страницу IDE на нашем сайте или на сайт www.arduino.cc/en/Main/Software и скачайте программное обеспечение для вашей ОС. Установите программное обеспечение Arduino IDE в соответствии с инструкциями.
  • Запустите среду разработки Arduino, очистите текстовый редактор и скопируйте код (ниже) в текстовый редактор.
  • Перейдите к эскизу и включите библиотеки (ссылки библиотеки выше). Теперь нажмите добавить ZIP-библиотеку и добавьте библиотеки.
  • Выберите плату в «инструменты — платы» — выберите Arduino Nano.
  • Подключите Arduino к компьютеру и установите COM-порт в «инструменты — порты».
  • Нажмите кнопку «Загрузить (стрелка)».
  • У вас все настроено!

После запуска этого кода откройте последовательный терминал в Arduino IDE и посмотрите на температуру массива 8, измеренную TPA81. Первое число в каждой строке относится к общей температуре. Теперь положите руку перед датчиком и посмотрите на температуру вашего тела. Чтобы определить жест вручную, вы должны знать свою ручную температуру и установить ее как смещение. Мы установили её на 29 градусов. Загрузите следующий код, чтобы увидеть движение вашей руки перед TPA81.

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

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

Детектор движения с использованием 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 мс
>
>

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

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.

Читайте также  Rcd 310 как подключить bluetooth?

Как работает PIR датчик HC-SR501, и его взаимодействие с Arduino

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

Рисунок 1 – Как работает PIR датчик HC-SR501, и его взаимодействие с Arduino

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

Как работает PIR датчик движения?

Если вы не знали, все объекты с температурой выше абсолютного нуля (0 Кельвинов / -273,15°C), включая человеческие тела, испускают тепловую энергию в виде инфракрасного излучения. Чем горячее объект, тем большее излучение он излучает.

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

Рисунок 2 – PIR датчик, пироэлектрический датчик, два слота обнаружения

Пироэлектрический датчик на самом деле имеет две прямоугольные прорези, выполненные из материала, который пропускает инфракрасное излучение. За ними находятся два отдельных инфракрасных сенсорных электрода: один из которых отвечает за создание положительного выходного сигнала, а другой – отрицательного. Причина такого решения заключается в том, что мы ищем изменение инфракрасных уровней, а не сами окружающие инфракрасные уровни. Два электрода подключены так, чтобы они подавляли друг друга. Если одна половина видит больше или меньше инфракрасного излучения, чем другая, выходной сигнал будет высоким или низким.

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

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

Рисунок 3 – Принцип действия PIR датчика

PIR детектор движения HC-SR501

Для большинства наших проектов на Arduino, которые должны определять, когда человек покинул или вошел в зону, или приблизился, PIR датчики HC-SR501 являются отличным выбором. Они имеют низкое энергопотребление и низкую стоимость, довольно прочные, имеют широкий диапазон линз, с ними легко взаимодействовать, и они безумно популярны среди любителей.

PIR датчик HC-SR501 имеет три вывода: питание VCC, выход и земля (показано на рисунке ниже). Он имеет встроенный стабилизатор напряжения, поэтому он может питаться от любого постоянного напряжения от 4,5 до 12 вольт, обычно используется 5В. Кроме этого, у него есть несколько настроек. Давайте проверим их.

Рисунок 4 – Распиновка PIR датчика. Расположение компонентов на плате.

На плате есть два потенциометра для настройки пары параметров:

  • Чувствительность – устанавливает максимальное расстояние, на котором может быть обнаружено движение. Оно варьируется от 3 до 7 метров. На реальное расстояние, которое вы получите, может влиять планировка вашего помещения.
  • Время – устанавливает время, в течение которого выходной сигнал останется на высоком логическом уровне после обнаружения. Минимум – 3 секунды, максимум – 300 секунд или 5 минут.

Наконец, на плате есть перемычка (на некоторых моделях перемычка не впаяна). У нее есть два варианта настройки:

  • H – это удержание / повтор / повторный запуск. В этом положении HC-SR501 будет продолжать выдавать высокий логический уровень, пока он продолжает обнаруживать движение. Рисунок 5 – Работа PIR датчика HC-SR501 в режиме повторного запуска
  • L – это прерывающийся или неповторяющийся / без повторного запуска. В этом положении выходной сигнал останется на высоком логическом уровне в течение времени, установленного регулировкой потенциометра TIME. Рисунок 6 – Работа PIR датчика HC-SR501 в режиме без повторного запуска

Повышение универсальности PIR датчика HC-SR501

Печатная плата HC-SR501 имеет площадки для двух дополнительных компонентов. Они обычно обозначаются как «RT» и «RL». Обратите внимание, что на некоторых платах обозначения могут быть закрыты «купольной» линзой на стороне, противоположной компонентам.

Рисунок 7 – PIR датчик. Площадки для фоторезистора и термистора

  • RT – предназначен для термистора или термочувствительного резистора. Его добавление позволяет использовать HC-SR501 при экстремальных температурах, а также в некоторой степени повышает точность детектора.
  • RL – это место для подключения светочувствительного резистора (LDR) или фоторезистора. При добавлении этого компонента HC-SR501 будет работать только в темноте, это обычное применение для систем освещения, чувствительных к движению.

Дополнительные компоненты могут быть припаяны непосредственно к плате или выведены в удаленные места с помощью проводов и разъемов.

Распиновка PIR датчика HC-SR501

HC-SR501 имеет 3-контактный разъем, который соединяет его с внешним миром. На него выведены следующие контакты:

Рисунок 8 – Распиновка PIR датчика HC-SR501

VCC – вывод питания для PIR датчика HC-SR501, к которому мы подключаем вывод 5V на Arduino.

Выходной контакт – логический выход с TTL уровнем 3,3 В. Низкий логический уровень означает, что движение не обнаружено, высокий логический уровень означает, что было обнаружено какое-то движение.

GND должен быть подключен к земле Arduino.

Использование PIR датчика в качестве автономного устройства

Одна из причин, по которой PIR датчик HC-SR501 является чрезвычайно популярным, заключается в том, что он является очень универсальным датчиком, который самодостаточен. А подключив его к каким-либо микроконтроллерам, таким как Arduino, вы сможете еще больше расширить его универсальность. Для нашего первого эксперимента мы будем использовать HC-SR501 отдельно, чтобы показать, насколько он полезен сам по себе.

Схема соединений для этого эксперимента очень проста. Батареи подключены к выводам датчика VCC и GND, а маленький красный светодиод подключен к выходному контакту через ограничивающий ток резистор 220 Ом. И всё!

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

Рисунок 9 – Тестовая схема подключения PIR датчика без использования Arduino. Она показывает, как можно использовать PIR датчик в автономных приложениях.

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

Подключение PIR датчика к Arduino UNO

Теперь, когда у нас есть полное понимание того, как работает PIR датчик, мы можем подключить его к нашей плате Arduino!

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

Вам нужно установить перемычку на HC-SR501 в положение H (повторный запуск), чтобы он работал правильно. Вам также нужно будет установить время на минимум (3 секунды), повернув потенциометр «время» против часовой стрелки до упора. Установите чувствительность в любое положение, которое вам нужно, либо, если не уверены, установите ее в среднее положение.

Теперь вы готовы загрузить код и начать работу PIR датчиком.

Рисунок 10 – Подключение PIR датчика к Arduino UNO

Код Arduino

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

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

Рисунок 11 – Вывод приложения PIR датчика в мониторе последовательного порта

Что нужно учесть перед проектированием приложений на базе PIR датчиков

Как и для большинства PIR датчиков, HC-SR501 требуется некоторое время для адаптации к инфракрасной энергии в помещении. Это занимает от 30 до 60 секунд при первом включении датчика.

Кроме того, датчик имеет период «сброса» около 5 или 6 секунд после считывания. В течение этого времени он не обнаружит никакого движения.

При проектировании системы на базе HC-SR501 вам необходимо будет учитывать эти длительности задержек.

Алексей Рубанов/ автор статьи

Приветствую! Я являюсь руководителем данного проекта и занимаюсь его наполнением. Здесь я стараюсь собирать и публиковать максимально полный и интересный контент на темы связанные с ремонтом автомобилей. Уверен вы найдете для себя немало полезной информации. С уважением, Алексей Рубанов.

Понравилась статья? Поделиться с друзьями:
Avtoshkola-Rodina.ru
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: