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

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

Продолжаем серию уроков “Arduino для начинающих”.  Сегодня мы разберем проект подключение PIR-датчика (движения) к Arduino и организуем автоматическую отправку e-mail при срабатывании датчика.

Arduino является сердцем этого проекта — считывает показания ИК-датчика, и при обнаружении движения отдает компьютеру через порт USB команду отправить письмо.

Обработку сигнала, поступающего на компьютер реализуем с помощью программы Python.

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

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

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

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

Arduino UNO

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

PIR-датчик

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

Бредбоард

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

Провода папа-папа

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

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

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

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

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

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.

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

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 = 'putyour@email.

here'
GMAIL_USER = 'putyour@email.here'
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 + '
' + 'From: ' + GMAIL_USER
header = header + '
' + 'Subject:' + SUBJECT + '
'
print header
msg = header + '
' + TEXT + '

'
smtpserver.sendmail(GMAIL_USER, TO, msg)
smtpserver.close()
while True:
message = ser.

readline()
print(message)
if message[0] == '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 и Arduino

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

Инфракрасный датчик движения позволяет улавливать объект до 6 метров и области обнаружения 70-110 градусов. Основное применение — это включение нагрузки в твоём присутствии. Например включает освещение в помещении. Чаще всего используется в сфере безопасности для сигнализации и оповещения. Для «Умного дома» в самый раз. Датчик движения ардуино очень просто соединяется с контроллером.

Из этой статьи вы узнаете:

Работа инфракрасного датчика движенияСхема подключения датчика c Arduino и… скетч

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

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

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

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

  1. «Мозги» системы, пока рассматриваю raspberry
  2. Механическая часть, для меня это тёмный лес
  3. Силовая часть, Это различные приводы системы. То, что будет толкать, вариантов несколько:электрика, пневматика, гидравлика
  4. Дополнительные узлы, которые будут независимо управлять той силовой частью, получая сигналы от центрального «мозга»
  5. А, да, ещё и сервер, который бы кооперировал все действия нескольких «мозгов»

И я прекрасно понимаю, что на это все уйдёт несколько лет.

На одно лишь изучение программирования уйдёт не один год. Есть ли среди вас единомышленники?? Может как-то сделаем совместными усилиями?

Зачем мне это все нужно? Ответ прост, как ясный день — я увлечён этим делом, я кайфую от этой темы.

Я заканчиваю лирическое отступление и возвращаюсь к нашей теме статьи. В этом посте мы с вами обсудим все тонкости подключения PIR датчика с Arduino UNO.

Работа инфракрасного датчика движения

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

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

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

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

Рабочее питание данного датчика 5-9 В.

Шильдик имеет при себе три вывода:

GND — питание
OUT дискретный сигнал
VCC + 5 В питание

Схема подключения датчика c Arduino и… скетч

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

Смотрите сами:

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

Программа, в которой при приближении объекта, срабатывает светодиод 13.

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

  int pirVal = digitalRead(pirPin);  //Если обнаружили движение    digitalWrite(LedPin, HIGH);    Serial.print(«Motion detected»);    Serial.print(«No motion»);    digitalWrite(LedPin,LOW);

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

//Время калибровки датчика (10-60 сек. по даташиту) int calibrationTime = 30; //Время, в которое был принят сигнал отсутствия движения(LOW) long unsigned int lowIn; //Пауза, после которой движение считается оконченным long unsigned int pause = 5000; //Флаг. false = значит движение уже обнаружено, true — уже известно, что движения нет boolean lockLow = true; //Флаг. Сигнализирует о необходимости запомнить время начала отсутствия движения boolean takeLowTime; int pirPin = 2; //вывод подключения PIR датчика int ledPin = 13; //вывод сигнального диода void setup() { Serial.begin(9600); pinMode(pirPin, INPUT); pinMode(ledPin, OUTPUT); digitalWrite(pirPin, LOW); //дадим датчику время на калибровку Serial.print(«Calibrating»); for(int i = 0; i < calibrationTime; i++) { Serial.print("."); delay(1000); } Serial.println(" done"); Serial.println("SENSOR ACTIVE"); delay(50); } void loop() { //Если обнаружено движение if(digitalRead(pirPin) == HIGH) { //Если еще не вывели информацию об обнаружении if(lockLow) { lockLow = false; Serial.println("Motion detected"); delay(50); } takeLowTime = true; } //Ели движения нет if(digitalRead(pirPin) == LOW) { //Если время окончания движения еще не записано if(takeLowTime) { lowIn = millis(); //Сохраним время окончания движения takeLowTime = false; //Изменим значения флага, чтобы больше не брать время, пока не будет нового движения } //Если время без движение превышает паузу => движение окончено if(!lockLow && millis() — lowIn > pause) { //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения lockLow = true; Serial.println(«Motion finished»); delay(50); } } }

//Время калибровки датчика (10-60 сек. по даташиту)int calibrationTime = 30;      //Время, в которое был принят сигнал отсутствия движения(LOW)//Пауза, после которой движение считается оконченнымlong unsigned int pause = 5000;//Флаг. false = значит движение уже обнаружено, true — уже известно, что движения нет//Флаг. Сигнализирует о необходимости запомнить время начала отсутствия движенияint pirPin = 2;    //вывод подключения PIR датчикаint ledPin = 13;   //вывод сигнального диода  digitalWrite(pirPin, LOW);  //дадим датчику время на калибровку  Serial.print(«Calibrating»);  for(int i = 0; i движение окончено    if(!lockLow && millis() — lowIn > pause)      //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения      Serial.println(«Motion finished»);

Этот скетч будет гарантировать более стабильную и устойчивую работу датчика с Arduino.

В следующей статье я напишу о подключении датчика расстояния HC-SR04. Оставайтесь на связи. Искренне ваш, Гридин Семён.

С уважением, Гридин Семён

Этой статьей стоит поделиться:

Датчик движения Arduino

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

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

Список деталей для сборки модели — что нам потребуется?

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

  • Arduino UNO;
  • Датчик движения;
  • Breadboard;
  • Соединительные провода папа-папа.

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

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

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

Скетч для датчика движения

Arduino будет послать сообщение по USB Serial связи при обнаружении движения.

//Время калибровки датчика (10-60 сек. по даташиту)
int calibrationTime = 30;
//Время, в которое был принят сигнал отсутствия движения(LOW)
long unsigned int lowIn;
//Пауза, после которой движение считается оконченным
long unsigned int pause = 5000;
//Флаг. false = значит движение уже обнаружено, true — уже известно, что движения нет
boolean lockLow = true;
//Флаг. Сигнализирует о необходимости запомнить время начала отсутствия движения
boolean takeLowTime;
int pirPin = 7;    //вывод подключения PIR датчика
int ledPin = 13;   //вывод сигнального диода

Читайте также:  Датчик распредвала ЗМЗ 406: принцип работы, проверка датчика фаз

void setup()
{
Serial.begin(9600);
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(pirPin, LOW);
//дадим датчику время на калибровку
Serial.print(«Calibrating»);
for(int i = 0; i < calibrationTime; i++) { Serial.print("."); delay(1000); } Serial.println(" done"); Serial.println("SENSOR ACTIVE"); delay(50); } void loop() { //Если обнаружено движение if(digitalRead(pirPin) == HIGH) { //Если еще не вывели информацию об обнаружении if(lockLow) { lockLow = false; Serial.println("Motion detected"); delay(50); } takeLowTime = true; } //Ели движения нет if(digitalRead(pirPin) == LOW) { //Если время окончания движения еще не записано if(takeLowTime) { lowIn = millis();          //Сохраним время окончания движения takeLowTime = false;       //Изменим значения флага, чтобы больше не брать время, пока не будет нового движения } //Если время без движение превышает паузу => движение окончено
if(!lockLow && millis() — lowIn > pause)
{
//Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения
lockLow = true;
Serial.println(«Motion finished»);
delay(50);
}
}
}

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

В этом уроке мы покажем вам как можно сделать датчик движения с помощью ультразвукового датчика (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

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

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

 В этой статье мы рассмотрим подключение в проектах ардуино 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 13void 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); }

}

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

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

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

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

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

Датчик движения для самоделок и Ардуино HC-SR501

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

При этом их можно найти как в виде готового устройства, для непосредственного подключения к электрической сети, так и в виде модуля для самоделок — HC-SR501.

Его можно использовать, как и в составе схемы под управлением Arduino, так и самостоятельно в паре c электромагнитным реле для управления нагрузкой с напряжением питания 220В.

Конструкция

Итак, HC-SR501 — это модуль с датчиком движения инфракрасного типа, так называемым PIR-сенсором.

Поставляется без корпуса в виде печатной платы с линзой Френеля, непосредственно датчиком (его название 500BP) и необходимыми для его работы электронными компонентами.

Линза Френеля нужна, чтобы сформировать область срабатывания и сфокусировать «изображение» на поверхности сенсора. Для обработки сигнала от PIR-сенсора используется микросхема BISS0001, цоколевку которой вы видите ниже.

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

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

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

Также ознакомьтесь с принципиальной схемой датчика движения HC-SR501.

Также рассмотрим сам модуль HC-SR501.

Технические характеристики:

  • Диапазон напряжения питания: 4.5-20 В;
  • Потребляемый ток в режиме ожидания: 50 мА;
  • Выходной сигнал OUT: HIGH – 3,3 В, LOW – 0 В;
  • Обнаружение движения в диапазоне расстояний от 3 до 7 м;
  • Длительность задержки (во включенном состоянии) после срабатывания от 5 до 300 сек;
  • Угол наблюдения до 120˚;

Время блокировки до следующего замера: 2.5сек.

Режимы работы:

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

— H — срабатывание при каждом событии, подходит для освещения. Если движения повторяются постоянно, то на выходе будет удерживаться сигнал H (свет будет гореть) до тех пор, пока не прекратятся движения, плюс установленное время задержи (от 5 секунд до 5 минут).

Рабочая температура от -20 до +80 ˚C.

Габариты 32x24x18 мм.

3 варианта схемы подключения

Первый вариант – это подключение к нагрузке постоянного тока. Для примера приведена светодиодная лента, вместо неё может быть что угодно — мощные светодиоды, какие-либо исполнительные устройства типа электроприводов и многое другое.

Напомним, что для работы HC-SR501 нужен источник питания с выходным напряжением в диапазоне 4.5-20 Вольт постоянного тока.

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

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

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

Реле используется с 5-вольтовой катушкой, такие продаются в магазинах электроники как дополнительный модуль для ардуино.

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

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

Алгоритмы работы этой схемы полностью зависит от программы загруженной в микроконтроллер.

Заключение

Датчик движения HC-SR501 и его аналоги отлично подходит как для самостоятельной работы, так и для работы в составе сложных устройств на микроконтроллерах. Его можно использовать для управления освещением, сигнализаций, автоматических механизмах таких как, автоматическое открытие дверей и ряде других проектов. Датчик движения для самоделок и Ардуино HC-SR501

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

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