Датчик движения на МК PIC и PIR-сенсоре. Датчик движения ардуино Arduino pir sensor подключение

Сегодня мы разберем проект подключение PIR-датчика (движения) к Arduino и организуем автоматическую отправку e-mail при срабатывании датчика. Arduino является сердцем этого проекта — считывает показания ИК-датчика, и при обнаружении движения отдает компьютеру через порт USB команду отправить письмо. Обработку сигнала, поступающего на компьютер реализуем с помощью программы Python.

Список деталей для сборки модели

Для сборки проекта, описанного в этом уроке, понадобятся следующие детали:

  • Arduino UNO или аналог (подробнее, о том как выбрать Arduino );
  • PIR-датчик (подойдет такой за $ 2);
  • бредбоард (можно купить за $2,4);
  • провода папа-папа (можно купить такую связку с большим запасом).

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

Схема подключения PIR-датчика к Arduino

К Arduino в этом проекте требуется подключить только PIR-датчик, поэтому провода от датчика можно подключить непосредственно к Arduino. Но т.к. в таком случае провода держаться немного не плотно удобнее использовать схему c бредбоард:

Arduino скетч

Arduino будет послать сообщение по USB Serial связи при обнаружении движения. Но если посылать e-mail при каждом срабатывании датчика, то можно получить огромное количество писем. Поэтому если прошло еще слишком мало времени от прошлого сигнала — будем посылать другое сообщение.
int pirPin = 7;
int minSecsBetweenEmails = 60; // 1 min
long lastSend = -minSecsBetweenEmails * 1000;
void setup()
{
pinMode(pirPin, INPUT);
Serial.begin(9600);
}
void loop()
{
long now = millis();
if (digitalRead(pirPin) == HIGH)
{
if (now > (lastSend + minSecsBetweenEmails * 1000))
{
Serial.println("MOVEMENT"); lastSend = now;
}
else
{
Serial.println("Too soon"); }
}
delay(500);
}

Переменная «minSecsBetweenEmails» может быть изменена на другое разумное значение. В примере она установлена на 60 секунд, и письма не будут отправлены чаще одной минуты. Чтобы отслеживать, когда последний раз была отдана команда слать e-mail используется переменная «lastSend». Ее инициализируем отрицательным числом, равным числу миллисекунд, указанных в переменной «minSecsBetweenEmails». Это гарантирует нам обработку срабатывания PIR-датчика сразу как только скетч Arduino запущен. В цикле используется функция Millis () чтобы получить число миллисекунд с Arduino и сравнить со временем от прошлого срабатывания датчика и соответствующей отправке сообщения «MOVEMENT» (движение). Если сравнение показывает, что прошло слишком мало времени от прошлого срабатывания датчика, то несмотря на то, что движение было обнаружено, посылаем сообщение «Too soon» (Слишком рано). Перед тем как писать программу на Python для обработки сигнала, поступающего с Arduino на компьютер или Raspberry Pi по USB, можно проверить работу программы на Arduino, просто открыв Serial Monitor на Arduino IDE.

Установка Python и PySerial

Если в проекте используется компьютер с операционной системой Linux, например, Raspberry Pi, Python уже установлен. Если используется компьтер с операционной системой Windows, то Python требуется установить. В любом случае, потребуется установить библиотеку PySerial чтобы обеспечить связь с Arduino.

Установка Python на Windows

Чтобы установить Python на Windows, скачайте установщик с https://www.python.org/downloads/ . Были сообщения о проблемах с PySerial на Windows при использовании Python 3, поэтому используем Python 2. После установки Python, в меню Пуск появится соответствующая группа. Но для установки PySerial нужно будет использовать Python из командной строки, поэтому добавим к переменной PATH среды Windows соответствующий каталог.
Чтобы сделать это, нужно зайти в Панель управления Windows, найти System Properties (Свойства системы). Затем нажать на кнопку с надписью Environment Variabes («Переменные среды») и в появившемся окне выбрать «Path» в нижней части System variables (Системные переменные). Нажать кнопку Edit («Изменить»), а затем в конце «Значение переменной», не удаляя имеющийся текст, добавить «; C: \ Python27». Не забывать «;» после каждой указанной папки. Чтобы проверить, что переменную PATH изменили корректно, в командной строке введем команду «“python». Должна появляться подобная картина:


Установка PySerial

Независимо от используемой операционной системы, скачиваем.tar.gz установочный пакет для PySerial 2.6 с https://pypi.python.org/pypi/pyserial Получаем файл с именем pyserial-2.6.tar.gz При использовании Windows нужно распаковать файл в папку. К сожалению, это не обычный файл ZIP, так что, возможно, потребуется скачать, например, 7-zip (http://www.7-zip.org/). При использовании компьютера с операционной системой Linux, например, при использовании в этом проекте Raspberry Pi, нужно открыть терминальную сессию, выполнить команду «CD» с указанием папки куда скачана pyserial-2.6.tar.gz, а затем выполнить следующую команду, чтобы распаковать установщик:
$ tar -xzf pyserial-2.6.tar.gz
Далее независимо от используемой операционной системы в командной строке выполняем команду “CD” c указанием папки pyserial-2.6 и выполняем команду:
sudo python setup.py install

Код на Python

Теперь создаем программу на Python. Для этого копируем данный код в файл с именем «movement.py». На Linux можно использовать «нано» редактор, на Windows, вероятно, самый простой способ сделать файл с помощью редактора Python ‘IDLE » (доступен из группы программ Python в меню Пуск).

Import time
import serial
import smtplib
TO = "[email protected]"
GMAIL_USER = "[email protected]"
GMAIL_PASS = "putyourpasswordhere"
SUBJECT = "Intrusion!!"
TEXT = "Your PIR sensor detected movement"
ser = serial.Serial("COM4", 9600)
def send_email():
print("Sending Email")
smtpserver = smtplib.SMTP("smtp.gmail.com",587)
smtpserver.ehlo() smtpserver.starttls()
smtpserver.ehlo smtpserver.login(GMAIL_USER, GMAIL_PASS)
header = "To:" + TO + "\n" + "From: " + GMAIL_USER
header = header + "\n" + "Subject:" + SUBJECT + "\n"
print header
msg = header + "\n" + TEXT + " \n\n"
smtpserver.sendmail(GMAIL_USER, TO, msg)
smtpserver.close()
while True:
message = ser.readline()
print(message)
if message == "M" :
send_email()
time.sleep(0.5)

Перед тем как запустить программу Python вносим некоторые изменения (все они в верхней части программы). Программа предполагает, что электронные письма создаются из аккаунта Gmail. Если его нет регистрируем (даже если это только для этого проекта). Изменяем значение переменной «TO» на адрес электронной почты, куда будут отправляться уведомления. Изменяем значение «GMAIL_USER» на адрес электронной почты Gmail и соответственно пароль в следующей строке (GMAIL_PASS). Также можно изменить тему и текст сообщения для отправки («SUBJECT» и «TEXT»). Необходимо установить последовательный порт, к которому подключена Arduino в строке ser = serial.Serial("COM4", 9600) Для Windows, это будет что-то навроде «COM4» для Linux — что-то навроде «/dev/tty.usbmodem621». К какому порту компьютера подключена плата смотрим в Arduino IDE в правом нижнем углу.
После этих изменений, запускаем программу из командной строки / терминала: python movement.py Готово! Когда PIR-датчик срабатывает вскоре приходит сообщение на указанный e-mail.

Что еще можно сделать с использованием PIR-датчика

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

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

Теория

Некоторые кристаллические материалы обладают свойством генерировать поверхностный электрический заряд при контакте с тепловым ИК излучением. Это явление известно как пироэлектричество. Пассивные модули с ИК датчиком работают на основе этого принципа. Тело человека излучает тепло в виде ИК излучения с максимальной длиной волны около 9,4 мкм. Появление человека создает внезапные изменения в ИК диапазоне окружающей среды, что воспринимается пироэлектрическим датчиком. Модуль с PIR датчиком имеет элементы которые усиливают сигнал для его соответствия логическим уровням. Перед началом работы датчику необходимо от 10 до 60 секунд для ознакомления с окружающей средой для дальнейшего нормального функционирования. В это время следует избегать движений в поле зрения датчика. Датчик действует на расстояние до 20 футов и не реагирует на естественные изменения окружающей среды, связанные с течение времени. При этом, датчик реагирует на любое резкое изменение окружающей среды(например появление человека). Модель с датчиком не следует размещать рядом с батареями, розетками и любыми другими предметами быстро меняющими свою температуру, т.к. это приведёт к ложному срабатыванию. Модули с PIR датчиком обычно имеют 3 контакта: Vcc, Выход и GND. Цоколевка у разных производителей может отличаться, поэтому я рекомендую проверить документацию. Также значение вывода может быть обозначено прямо на плате. На моём датчике таких обозначений нет. Он может работать при напряжении питания от 5 до 12V и имеет свой собственный встроенный стабилизатор напряжения. При наличии движения на выходе датчика появляется высокий логический уровень. Также он имеет 3х контактный джампер для установки режима работы. Боковые контакты имеют метки H и L. Когда перемычка находится в положении H, при срабатывании датчика несколько раз подряд на его выходе остается высокий логический уровень. В положении L, на выходе при каждом срабатывании датчика появляется отдельный импульс. Передняя часть модуля имеет линзу Френеля для фокусировки ИК излучения на чувствительный элемент.

Схема и конструкция

Схема датчика движения довольно проста. Устройство работает от 4 AA батарей, которые дают 6V. На диоде, который используется как защита от неправильного подключения питания, напряжение падает до 5,4V. Я проверял схему с NI-MH аккумулятором 4,8 V и она работала, но я рекомендую использовать щелочные батарейки по 1,5V каждая для лучшей производительности. Вы можете также использовать батареи 9V , но тогда вам необходим стабилизатор LM7805. Выход с модуля контролируется микроконтроллером PIC12F635 через порт GP5 (вывод 2). При движении на выходе датчика появляется напряжение около 3,3 V. Это напряжение распознаётся микроконтроллером ка высокий логический уровень, но я предпочел использовать это напряжение для управления NPN транзистором BC547, коллектор которого подключил к микроконтроллеру. Когда транзистор закрыт, на его коллекторе высокий логический уровень (+5V). При движении на выходе модуля появляется высокий логический уровень который насыщает транзистор и напряжение на его коллекторе падает до низкого логического уровня. Перемычки на датчике находится в позиции H, так что выходной сигнал датчика будет оставаться высоким до тех пор, пока движение не прекратится. Микроконтроллер PIC12F635 использует внутренний тактовый генератор, работающий на частоте 4,0 МГц.

Светодиод, подключенный к порту GP4 через токоограничивающий резистор мигает 3 раза при подключении питания. Пьезоэлектрический зуммер EFM-290ED подключенный к порту GP2 сообщает о наличии движения. Пьезоэлектрический зуммер дает максимально громкий звук на своей резонансной частоте. Зуммер который я использовал, имеет резонансную частоту 3,4 ± 0,5 кГц. После экспериментов с ним, я обнаружил, что максимальный звук он дает на частоте около 372 Гц. Хотя в документации сказано, что рабочее напряжение составляет от 7-12V, он работает и от напряжения 5V.

Программа

Программа написана на С и скомпилирована в для PIC. При подаче питания светодиод мигает три раза и это свидетельствует о успешном запуске. После этого микроконтроллер ждет 60 секунд до начала проверки значения на выходе с датчика. Это требуется для стабилизации датчика. Когда микроконтроллер определяет срабатывание датчика, он запускает пьезозуммер на частоте 3725Гц. MikroC имеет встроенную библиотеку для генерации звука (Sound_Play()). Зуммер издает звук до тех пор, пока датчик ощущает движение. Когда движение прекращается, логический уровень на выходе датчика изменяется, но зуммер не замолкает сразу, а еще в течение примерно 10 секунд издает звук на частоте 3570Гц. Если он обнаруживает движение снова, он опять запустится на частоте 3725 Гц. Этот проект использует внутренний генератор запущенный на частоте 4,0 МГц, MCLR и сторожевой таймер выключены.

/* Project: PIR Motion Sensor Alarm (PIC12F635) Piezo: EFM-290ED, 3.7 KHz connected at GP2 PIR sensor module in retriggering mode Internal Clock @ 4.0 MHz, MCLR Disabled, WDT OFF */ sbit Sensor_IP at GP5_bit; // sensor I/P sbit LED at GP4_bit; // LED O/P unsigned short trigger, counter; void Get_Delay(){ Delay_ms(300); } void main() { CMCON0 = 7; TRISIO = 0b00101000; // GP5, 5 I/P"s, Rest O/P"s GPIO = 0; Sound_Init(&GPIO,2); // Blink LED at Startup LED = 1; Get_Delay(); LED = 0; Get_Delay(); LED = 1; Get_Delay(); LED = 0; Get_Delay(); LED = 1; Get_Delay(); LED = 0; Delay_ms(60000); // 45 Sec delay for PIR module stabilization counter = 0; trigger = 0; do { while (!Sensor_IP) { // Sensor I/P Low Sound_Play(3725, 600); Delay_ms(500); trigger = 1; counter = 0; } if (trigger) { Sound_Play(3570, 600); Delay_ms(500); counter = counter+1; if(counter == 10) trigger=0; } }while(1); } // End main()

Фото устройства:

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
МК PIC 8-бит

PIC12F635

1 В блокнот
Биполярный транзистор

BC547

1 В блокнот
Резистор

1 кОм

1 В блокнот
Резистор

10 кОм

1 В блокнот
Резистор

470 Ом

1 В блокнот
Светодиод 1

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

Общие сведения о датчике

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

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

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

Основные характеристики

Главные рабочие показатели, которые должен учитывать потребитель, касаются радиусов действия устройства и способностей к автономной работе. Что касается параметров по диапазонам охвата, то контролируемая зона, как правило, составляет 6-7 м. Этого достаточно, если дело касается охраны частного дома и тем более квартиры. В некоторых моделях предусматривается и функция микрофона - в этой части также важно определить радиус действия, который может достигать и 10 м. Вместе с этим PIR-датчик может иметь прямое или автономное энергоснабжение. Если планируется организация охранной системы, то лучше приобретать модели со встроенными аккумуляторами, которые не требуют проводки. Далее определяется время, на протяжении которого устройство сможет поддерживать свою функцию без дозарядки. Современные модели не требуют большого энергетического обеспечения, поэтому в пассивном состоянии могут работать порядка 15-20 дней.

Конструкция устройства

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

Система GSM в датчике

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

Программное обеспечение

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

Установка сенсора

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

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

Устройство необходимо подключить к основному реле контроллера и системе энергоснабжения. На типовом аппарате предусматривается плата с клеммами, предназначенными для источника питания. Чаще всего используется источник с напряжением 9-14 В, а ток потребления может составлять 12-20 мА. Обычно производители указывают электротехнические характеристики посредством маркировки клемм. Соединение осуществляется по одной из стандартных схем с учетом особенностей эксплуатации конкретной модели. В некоторых модификациях возможно подключение PIR-датчика без проводки, то есть напрямую к сети. Это в некотором роде комбинированные конструкции, которые устанавливаются на открытых местах и управляют теми же системами освещения. В случае установки охранного сенсора такой вариант вряд ли будет уместен.

Нюансы эксплуатации

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

Датчик в системе «Ардуино»

Комплекс «Ардуино» является одной из самых популярных систем управления домашней автоматикой. Это контроллер, к которому подключаются источники освещения, системы мультимедиа, отопительные приборы и другая бытовая техника. Датчики в этом комплексе не являются конечными функциональными устройствами - они лишь выполняют роль индикаторов, в зависимости от состояния которых центральный блок с микропроцессором принимает то или иное решение в соответствии с заложенным алгоритмом. Подключается PIR-датчик «Ардуино» через три канала, среди которых выходной а также линии питания с разной полярностью - GND и VCC.

Популярные модели PIR-датчиков

Большинство датчиков преимущественно выпускаются китайскими производителями, поэтому стоит готовиться к проблемам с электротехнической начинкой. Приобрести по-настоящему качественный сенсор можно разве что в комплектации с контроллерами. Тем не менее многие хвалят датчик движения PIR MP Alert A9, который хоть и представляет бюджетный сегмент, но отличается достойной сборкой и неплохими рабочими качествами. По-своему интересны и такие модели, как Sensor GH718 и HC-SR501. Это датчики открытого типа, которые можно без труда замаскировать или включить в комплекс того же контроллера. Что касается эксплуатационных свойств, то радиус охвата описанных моделей составляет 5-7 м, а время автономной работы - в среднем 5 дней.

Сколько стоит устройство?

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

Заключение

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

Обзор датчика пространства HC-SR501

Модуль датчика движения (или присутствия) HCSR501 на основе пироэлектрического эффекта состоит из PIR-датчика 500BP (рис. 1) с дополнительной электрической развязкой на микросхеме BISS0001 и линзы Френеля, которая используется для увеличения радиуса обзора и усиления инфракрасного сигнала (рис. 2). Модуль используется для обнаружения движения объектов, излучающих инфракрасное излучение. Чувствительный элемент модуля – PIR-датчик 500BP. Принцип его работы основан на пироэлектричестве. Это явление возникновения электрического поля в кристаллах при изменении их температуры.

Управление работой датчика осуществляет микросхема BISS0001. На плате расположены два потенциометра, с помощью первого настраивается дистанция обнаружения объектов (от 3 до 7 м), с помощью второго - задержка после первого срабатывания датчика (5 - 300 сек). Модуль имеет два режима – L и H. Режим работы устанавливается с помощью перемычки. Режим L – режим единичного срабатывания, при обнаружении движущегося объекта на выходе OUT устанавливается высокий уровень сигнала на время задержки, установленное вторым потенциометром. На это время датчик не реагирует на движущиеся объекты. Этот режим можно использовать в системах охраны для подачи сигнала тревоги на сирену. В режиме H датчик срабатывает каждый раз при обнаружении движения. Этот режим можно использовать для включения освещения. При включении модуля происходит его калибровка, длительность калибровки приблизительно одна минута, после чего модуль готов к работе. Устанавливать датчик желательно вдали от открытых источников света.

Рисунок 1. PIR-датчик 500BP

Рисунок 2. Линза Френеля

Технические характеристики HC-SR501

  • Напряжение питания: 4.5-20 В
  • Ток потребления: 50 мА
  • Напряжение на выходе OUT: HIGH – 3,3 В, LOW – 0 В
  • Интервал обнаружения: 3-7 м
  • Длительность задержки после срабатывания: 5 - 300 сек
  • Угол наблюдения до 120
  • Время блокировки до следующего замера: 2.5сек.
  • Режимы работы: L - одиночное срабатывание, H - срабатывание при каждом событии
  • Рабочая температура от -20 до +80C
  • Габариты 32x24x18 мм

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

Модуль имеет 3 вывода (рис. 3):
  • VCC - питание 5-20 В;
  • GND - земля;
  • OUT - цифровой выход (0-3.3В).

Рисунок 3. Назначение контактов и настройка HC-SR501

Подключим модуль HC-SR501 к плате Arduino (Схема соединений на рис. 4) и напишем простой скетч, сигнализирующий звуковым сигналом и сообщением в последовательный порт, при обнаружении движущегося объекта. Для фиксации срабатываний микроконтроллером будем использовать внешние прерывания на вход 2. Это прерывание int0.

Рисунок 4. Схема соединений подключения модуля HC-SR501 к плате Arduino

Загрузим скетч из листинга 1 на плату Arduino и посмотрим как датчик реагирует на препятствия (см. рис. 5). Модуль установим в режим работы L. Листинг 1 // Скетч к обзору датчика движения/присутствия HC-SR501 // сайт // контакт подключения выхода датчика #define PIN_HCSR501 2 // флаг сработки boolean flagHCSR501=false; // контакт подключения динамика int soundPin=9; // частота звукового сигнала int freq=587; void setup() { // инициализация последовательного порта Serial.begin(9600); // запуск обработки прерывания int0 attachInterrupt(0, intHCSR501,RISING); } void loop() { if (flagHCSR501 == true) { // Сообщение в последовательный порт Serial.println("Attention!!!"); // звуковая сигнализация на 5 сек tone(soundPin,freq,5000); // обнулить флаг сработки flagHCSR501 = false; } } // обработка прерывания void intHCSR501() { // установка флага сработки датчика flagHCSR501 = true; }

Рисунок 5. Вывод данных в монитор последовательного порта

С помощью потенциометров экспериментируем с длительностью сигнала на выходе OUT и чувствительностью датчика (расстоянием фиксации объекта).

Пример использования

Создадим пример отправки sms при срабатывании датчика движения/присутствия на охраняемом объекте. Для этого будем использовать GPS/GPRS шилд. Нам понадобятся следующие детали:
  • плата Arduino Uno
  • GSM/GPRS шилд
  • npn-транзистор, например С945
  • резистор 470 Ом
  • динамик 8 Ом 1Вт
  • провода
Соберем схему соединений согласно рис. 6.

Рисунок 6. Схема соединений

При срабатывании датчика вызываем процедуру отправки sms с текстовым сообщением Atten tion!!! на номер PHONE. Содержимое скетча представлено в листинге 2. GSM/GPRS шилд в режиме отправки sms потребляет ток до 2 А, поэтому используем внешний источник питания 12В 2А. Листинг 2 // Скетч 2 к обзору датчика движения/присутствия HC-SR501 // отправка sms при срабатывании датчика // сайт // контакт подключения выхода датчика #define PIN_HCSR501 2 // флаг сработки boolean flagHCSR501 false; // контакт подключения динамика int soundPin=9; // частота звукового сигнала int freq=587; // библиотека SoftwareSerial #include // номер телефона для отправки sms #define PHONE "+79034461752" // Выводы для SoftwareSerial (у вас могут быть 2,3) SoftwareSerial GPRS(7, 8); void setup() { // инициализация последовательного порта Serial.begin(9600); // запуск обработки прерывания int0 attachInterrupt(0, intHCSR501,RISING); // для обмена с GPG/GPRS шилдом GPRS.begin(19200); } void loop() { if (flagHCSR501 == true) { // Сообщение в последовательный порт Serial.println("Attention!!!"); // звуковая сигнализация на 5 сек tone(soundPin,freq,5000); // отправить sms SendSMS(); // обнулить флаг сработки flagHCSR501 = false; } } // обработка прерывания void intHCSR501() { // установка флага сработки датчика flagHCSR501 = true; } // подпрограмма отправки sms void SendSMS() { // AT-команда установки text mode GPRS.print("AT+CMGF=1\r"); delay(100); // номер телефона GPRS.print("AT + CMGS = \""); GPRS.print(PHONE); GPRS.println("\""); delay(200); // сообщение GPRS.println("Attention!!!"); delay(200); // ASCII код ctrl+z – окончание передачи GPRS.println((char)26); delay(200); GPRS.println(); }

Часто задаваемые вопросы FAQ

1. Модуль не срабатывает при движении объекта
  • Проверьте правильность подключения модуля.
  • Настройте потенциометром дистанцию срабатывания.
2. Датчик срабатывает слишком часто
  • Настройте потенциометром задержку длительности сигнала.
  • Установите перемычку в режим единичного срабатывания L.

Датчик движения ардуино позволяет отследить перемещение в закрытой зоне объектов, излучающих тепло (люди, животные). Такие системы часто применяют в бытовых условиях, например, для включения освещения в подъезде. В этой статье мы рассмотрим подключение в проектах ардуино 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В), а третий является цифровым выходом, с которого снимаются данные.

Подключение Pir-сенсора:

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

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

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

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

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

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

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

#define PIN_PIR 2 #define PIN_LED 13 void setup() { Serial.begin(9600); pinMode(PIN_PIR, INPUT); pinMode(PIN_LED, OUTPUT); } void loop() { int pirVal = digitalRead(PIN_PIR); Serial.println(digitalRead(PIN_PIR)); //Если обнаружили движение if (pirVal) { digitalWrite(PIN_LED, HIGH); Serial.println("Motion detected"); delay(2000); } else { //Serial.print("No motion"); digitalWrite(PIN_LED, LOW); } }

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

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

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

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



Статьи по теме