Датчик движения на ардуино скетч. Датчик движения с Arduino, HC-SR04 и светодиодом (LED). Настройка перезапуска датчика

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

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

Пироэлектрики — это диэлектрики, которые создают электрическое поле при изменении их температуры. На основе пироэлектриков делают датчики измерения температуры, например, LHI778 или IRA-E700. Каждый такой датчик содержит два чувствительных элемента размером 1×2 мм, подключенных с противоположной полярностью. И как мы увидим далее, наличие именно двух элементов поможет нам детектировать движение. Вот так выглядит датчик IRA-E700 компании Murata. На этом уроке мы будем работать с датчиком движения HC-SR501, в котором установлен один такой пироэлектрический датчик. Сверху пироэлектрик окружен полусферой, разбитой на несколько сегментов. Каждый сегмент этой сферы представляет собой линзу, которая фокусирует тепловое излучение на разные участки ПИР-датчика. Часто в качестве линзы используют линзу Френеля.
Принцип работы датчик движения следующий. Предположим, что датчик установлен в пустой комнате. Каждый чувствительный элемент получает постоянную дозу излучения, а значит и напряжение на них имеет постоянное значение (левый рисунок).
Как только в комнату заходит человек, он попадает сначала в зону обзора первого элемента, что приводит к появлению положительного электрического импульса на нем (центральный рисунок). Человек движется, и его тепловое излучение через линзы попадает уже на второй PIR-элемент, который генерирует отрицательный импульс. Электронная схема датчика движения регистрирует эти разнонаправленные импульсы и делает выводы о том, что в поле зрения датчика попал человек. На выходе датчика генерируется положительный импульс (правый рисунок).

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

На этом уроке мы будем использовать модуль HC-SR501. Этот модуль очень распространен и применяется во множестве DIY проектов в силу своей дешевизны. У датчика имеется два переменных резистора и перемычка для настройки режима. Один из потенциометров регулирует чувствительность прибора. Чем она больше, тем дальше «видит» датчик. Также чувствительность влияет на размер детектируемого объекта. К примеру, можно исключить из срабатывания собаку или кошку.
Второй потенциометр регулирует время срабатывания T . Если датчик обнаружил движение, он генерирует на выходе положительный импульс длиной T . Наконец, третий элемент управления — перемычка, которая переключает режим датчика. В положении L датчик ведет отсчет Т от самого первого срабатывания. Допустим, мы хотим управлять светом в ванной комнате. Зайдя в комнату, человек вызовет срабатывание датчика, и свет включится ровно на время Т . По окончании периода, сигнал на выходе вернется в исходное состояние, и датчик будет дать следующего срабатывания. В положении H датчик начинает отсчет времени T каждый раз после обнаружения движения. Другими словами, любое шевеление человека вызовет обнуление таймера отсчета Т . По-умолчанию, перемычка находится в состоянии H .

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

Для соединения с микроконтроллером или напрямую с реле у HC-SR501 имеется три вывода. Подключаем их к Ардуино по следующей схеме:
HC-SR501 GND VCC OUT
Ардуино Уно GND +5V 2
Принципиальная схема
Внешний вид макета
Программа Как уже было сказано, цифровой выход датчика 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); } Загружаем программу на Ардуино и проверяем работу датчика. Можно покрутить настройки датчика и посмотреть как это отразится на его работе.

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

Следующий шаг — система автоматического включения света. Для того, чтобы управлять освещением в помещении, нам потребуется добавить в цепь реле. Будем использовать модуль реле с защитой на основе опторазвязки, о котором мы уже писали в одном и уроков (урок про реле ). Внимание! Данная схема зажигает лампу от сети 220 Вольт. Рекомендуется семь раз проверить все соединения, прежде чем соединять схему с бытовой электросетью. Принципиальная схема
Внешний вид макета
Программа Теперь напишем программу, которая будет при срабатывании датчика включать реле, а следовательно и освещение в комнате. 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. Вот несколько ситуаций и мест, где может пригодиться датчик движения:
  • автоматическое включение света в подъезде дома, в ванной комнате и туалете, перед входной дверью в помещение;
  • сигнализация в помещении и во дворе;
  • автоматическое открывание дверей;
  • автоматическое включение охранной видеокамеры.
Как уже говорилось в самом начале, существуют и другие способы детектирования движения. О них мы поговорим на следующих уроках!

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

Примерно такие:


Реагируют они на изменение излучения в инфракрасном диапазоне, а именно в средней его части - 5-15 мкм (тело среднего здорового человека излучает в диапазоне около 9 мкм). С точки зрения конечного потребителя штука очень простая - вход питания (чаще 12 вольт) и выход реле (обычно твердотельное и с нормально замкнутыми контактами). Прокрался кто-нибудь тепленький мимо - реле сработало. Скукота. Но внутри все не так просто.
Сегодня мы немного времени посвятим теории, а затем распотрошим один такой девайс и сделаем из него не просто датчик, реагирующий на факт движения, но регистрирующий направление движения.

Переходим к практическим упражнениям

Вооружившись теоретическими сведениями достанем паяльник. На фото показан разобранный датчик (снята передняя крышка с линзами Френеля и металлический экран).


Смотрим маркировку ближайшей к пироэлектрическому сенсору (круглый металлический с окошечком - это он и есть) микросхемы и (о, удача!) ею оказывается LM324 - счетверенный ОУ. Путем рассматривания окружающих элементов находим вывод ОУ, наиболее вероятно подходящий для наших целей (в моем случае это оказался вывод 1 микросхемы). Теперь неплохо бы проверить, а то ли мы нашли. Обычно для этого используют осциллограф. У меня под рукой его не оказалось. Зато оказался ардуино. Поскольку уровень сигнала после усиления составляет порядка единиц вольт, и особой точности замеров нам не нужно (достаточно качественной оценки), то входы АЦП ардуино вполне подойдут. К найденному выводу ОУ и минусу питания паяем проводки и выводим на макетку. Провода не должны быть длинными. В противном случае есть шанс померить не сигнал датчика, а что-нибудь совершенно другое.
Теперь подумаем насколько быстро нужно считывать сигнал, чтобы получить что-то вменяемое. Выше было сказано, что частотный диапазон полезного сигнала ограничен величиной примерно 10 Гц. Вспоминая теорему Котельникова (или Найквиста - кому что больше нравится), можно сделать вывод, что замерять сигнал с частотой выше 20 Гц смысла нет. Т.е. период дискретизации в 50 мс вполне подойдет. Пишем простой скетч, который каждые 50 мс читает порт А1 и вываливает его значение в сериал (строго говоря, измерения сигнала происходят реже, чем через 50 мс, поскольку на запись в порт тоже нужно время, однако для наших целей это не важно).

Unsigned long time; void setup() { Serial.begin(9600); pinMode(A1, INPUT); time=millis(); } void loop() { if ((millis()-time) >= 50) { Serial.println(analogRead(A1)); } time=millis(); }

Включаем и машем перед датчиком руками (можно побегать, даже полезнее). На стороне компьютера данные с порта вываливаем в файл.
stty -F /dev/ttyUSB0 raw ispeed 9600 ospeed 9600 -ignpar cs8 -cstopb -echo cat /dev/ttyUSB0 > output.txt
Строим график (в файл добавлен столбец с нумерацией отсчетов):
gnuplot> plot "output.txt" using 1:2 with lines


И видим то, что, собственно, и хотели - разнополярные всплески напряжения. Ура, теория работает и провод припаян куда надо. А простой анализ (проще говоря - рассматривание) графика позволяет сделать вывод, что более или менее надежной фиксацией факта наличия движения можно считать отклонение сигнала на 150 единиц от среднего значения.
Настало время сделать, наконец, датчик направления движения.
Модифицируем схему. Помимо аналогового сигнала сенсора подключим к ардуино пару светодиодов (порты 2 и 3, не забудьте токоограничительные резисторы) и напишем чуток более сложный скетч.

Развернуть

int a1; int state2=0; long average=0; int n=0; unsigned long time; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(A1, INPUT); digitalWrite(2, LOW); digitalWrite(3, LOW); delay (30000); //мой датчик после включения //до начала работы тупит 30 сек. time=millis(); //тысячу раз делаем замер сигнала для //вычисления его среднего значения //чтобы было от чего отсчитывать отклонения while (n <= 1000) { ++n; a1=analogRead(A1); average=average+a1; delay(50); } average=average/1000; //одновременным включением светодиодов //сигнализируем, что система готова digitalWrite(2, HIGH); digitalWrite(3, HIGH); delay(1000); digitalWrite(2, LOW); digitalWrite(3, LOW); time=millis(); } void loop() { //опрашиваем датчик каждые 50 мс if ((millis()-time) >= 50) { //этим простым выражением аналаговый сигнал //превращаем в дискретный со значениями -1/0/1 a1=(analogRead(A1)-average)/150; //если было изменение полярности сигнала, то //включаем нужный светодиод switch (a1) { case 1: if (state2=-1) {digitalWrite(2, HIGH);digitalWrite(3, LOW);} state2=a1; break; case -1: if (state2=1) {digitalWrite(2, LOW);digitalWrite(3, HIGH);} state2=a1; break; } //повторяем сначала time=millis(); } }


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


Наслаждаемся результатом.

Теги:

  • PIR
  • датчик движения
  • arduino
Добавить метки

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

Сенсор, в котором используется материал с такими свойствами, может реагировать на тепло, излучаемое телом человека. PIR-датчик (Pyroelectric InfraRed) имеет круговую диаграмму направленности (360°) с углом разворота 120°.

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

Зоны действия PIR-датчиков

В ассортименте изделий компании B.E.G. имеются датчики движения и присутствия различного исполнения и назначения:

  • для наружного применения;
  • для внутреннего применения;
  • для настенного монтажа;
  • для потолочного монтажа
  • датчики в дизайнерском исполнении.

Один из главных параметров ИК датчиков движения - зона действия. Потолочные датчики, обычно, имеют круговую зону охвата (360°). Настенные датчики движения PIR, в зависимости от модели, имеют зону действия от 120° до 280°.

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

Дальность действия датчика зависит от того, как перемещается человек по отношению к датчику. Если он движется в перпендикулярном к датчику направлении, то сенсор имеет максимальную дальность действия.

Если движение осуществляется по направлению к датчику (фронтально), зона охвата сокращается почти вдвое. Датчики имеют минимальную дальность действия, если движение происходит непосредственно под сенсором.

У датчиков присутствия PIR компании B.E.G. высокая зона чувствительности, и они реагируют на самые незначительные движения. Чувствительность датчика регулируется.

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

Как правильно располагать PIR-датчики

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

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

Лестничные марши рассматриваются, как зоны повышенной опасности. Здесь должно быть исключено падение людей по причине недостаточной освещенности. На потолке или на стене лестничной площадки датчики движения ставят как настенные выключатели.

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

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

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

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

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

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

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

Общие требования по установке PIR-датчиков

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

Зону действия датчиков не должны ограничивать деревья, мебель и перегородки (в том числе стеклянные). Оптимальная высота установки для потолочных датчиков - 2,5-3 метра, а настенных выключателей от 1,1 до 2,2 метров. Датчики для высоких потолков размещают на высоте до 16 метров.

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

В компанию B.E.G. Наши специалисты дадут все необходимые консультации. И на наш блог, чтобы не пропускать полезные материалы о датчиках движения и присутствия.

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

Урок подойдет начинающим, но будет интересен и более опытным инженерам.

Шаг 1: Необходимые детали

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

1 x Плата Arduino (мы использовали Arduino Uno)
1 x Светодиод (LED, цвет не имеет значения)
1 x Резистор/сопротивление 220 Ом
1 x Макетная плата
1 x USB-кабель Arduino
1 x Батарейка 9 В с зажимом (опционально)
6 x Проводов

Шаг 2: Позиционирование деталей

Сначала подключите ультразвуковой датчик и светодиод на макетной плате. Подключите короткий кабель светодиода (катод) к контакту GND (земля) датчика. Затем установите резистор в том же ряду, что и более длинный провод светодиода (анод), чтобы они были соединены.

Шаг 3: Подключение частей

Теперь вам нужно подключить несколько проводов на задней панели датчика. Есть четыре контакта - VCC, TRIG, ECHO и GND. После вставки проводов вам необходимо выполнить следующие подключения:

Конец резистора на цифровой вывод по вашему выбору, просто не забудьте изменить его позже в коде.

Датчик -> Arduino
VCC -> 5V (питание)
TRIG -> 5*
ECHO -> 4*
GND -> GND (земля)

* - может быть подключен к любым двум цифровым выводам Arduino, просто убедитесь, что вы изменили их в коде позже.

Шаг 4: Загрузка кода

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

Const int ledPin = 6; // Цифровой выход светодиода const int trigPin = 5; // Цифровой выход для подключения TRIG const int echoPin = 4; // Цифровой выход для подключения ECHO const int ledOnTime = 1000; // Время, в течение которого светодиод остается включенным, после обнаружения движения (в миллисекундах, 1000 мс = 1 с) const int trigDistance = 20; // Расстояние (и меньшее значение) при котором срабатывает датчик (в сантиметрах) int duration; int distance; void setup() { pinMode(ledPin, OUTPUT); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { digitalWrite(trigPin, LOW); digitalWrite(trigPin, HIGH); delay(1); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; if (distance <= trigDistance) { digitalWrite(ledPin, HIGH); delay(ledOnTime); digitalWrite(ledPin, LOW); } delay(100); }

Шаг 5: Конечный результат (видео)

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

Всем хороших проектов!

Принцип работы PIR (Passive Infra Red)- датчиков

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

Это аббревиатура от слов «passive infrared» или «пассивные инфракрасные» датчики. Пассивные - потому что датчики сами не излучают, а только воспринимают излучение с длиной волны от 7 до 14 µм.

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

PIR-датчик содержит чувствительный элемент, который реагирует на изменение теплового излучения. Если оно остается постоянным - электрический сигнал не генерируется.

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.