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

Рассмотрим на этом занятии пироэлектрический инфракрасный датчик движения. Расскажем, как подключить PIR sensor к Ардуино и рассмотрим скетч для автоматического светильника, который будет включаться при обнаружении движения в комнате. Также рассмотрим функцию millis() в языке программирования C++, который довольно часто требуется использовать в различных проектах.

Motion PIR sensor что это

Сегодня уже никто не удивляется при автоматическом включении освещения в подъездах многоквартирных домов, которые срабатывают при прохождении человека. В большинстве приборов установлены пассивные датчики движения (PIR). Рассмотрим в этой статье устройство датчика движения, схему его подключения к Arduino UNO и соберем на его основе автоматический включатель освещения.

Линза Френеля концентрирует инфракрасное излучение
Линза Френеля концентрирует инфракрасное излучение

Модуль с ПИР датчиком состоит из пироэлектрического элемента под пластиковой линзой Френеля — цилиндрическая деталь с прямоугольным кристаллом в центре, который улавливает уровень инфракрасного излучения и пропускает его через себя. При подключении IR к Arduino мы уже выяснили, что все предметы имеют инфракрасное излучение и чем выше температура, тем интенсивнее излучение.

Устройство пироэлектрического датчика движения
Устройство и распиновка пироэлектрического датчика движения

PIR датчики движения практически одинаковы по устройству. Диапазон чувствительности PIR сенсоров для Ардуино до 6 метров, угол обзора 110° x 70°. Питание — 5 Вольт, а выходной цифровой сигнал имеет значение 0, когда движения нет и значение 1 при наличии движения. Чувствительные элементы устанавливается в герметический корпус, который защищает от влажности и перепадов температур.

PIR датчик движения подключение к Arduino

Большинство модулей PIR sensor Ардуино имеют три выхода на задней части (см. фото выше). Распиновка у разных производителей может отличаться, но рядом с выходами сделаны надписи, поэтому, перед подключением к плате Ардуино внимательно изучите модуль. Один выход идет к GND, второй к питанию 5 Вольт (обозначен VCC), а третий выход (обозначен, как OUT) выдает цифровой сигнал с пироэлектрического сенсора.

Схема подключения PIR датчика к Ардуино УНО
Схема подключения PIR датчика к Ардуино УНО

Для занятия нам понадобятся следующие детали:

  • Плата Arduino Uno;
  • Макетная плата;
  • USB-кабель;
  • PIR датчик движения;
  • 1 светодиод;
  • 1 резистор 220 Ом;
  • Провода «папка-папка» и «папка-мамка».

Соберите схему, как на фото выше. Подключите светодиод к выходу 12 на Ардуино и загрузите следующий скетч для PIR датчика.

#define PIR 2
#define LED 12

void setup()
{
  pinMode(PIR, INPUT);
  pinMode(LED,OUTPUT);
}

void loop()
{
  int pirVal = digitalRead(PIR);

  if (pirVal == HIGH)
  {
    digitalWrite(LED, HIGH);
    delay(2000);
  }

  else
  {
    digitalWrite(LED,LOW);
  }

    delay(2000);
}

Пояснения к коду:

  1. С помощью директивы #define для портов 2 и 12 мы назначили соответствующие имена PIR и LED. Это сделано лишь для нашего удобства;
  2. Строка int pirVal = digitalRead(PIR); дает команду микроконтроллеру на считывание информации с порта 2.

На что обратить внимание:

  1. В условии оператора if мы использовали двойное равенство: if (pirVal == HIGH). Согласно языку программирования Ардуино, двойное равенство является оператором сравнения. Не путайте данный оператор с одинарным равенством.

Задание для самостоятельного выполнения:

  1. Замените в скетче управляющий оператор else на оператор if с условием выключения светодиода при отсутствии движения.

Светильник на Ардуино с датчиком движения

Не меняя сборки, загрузите скетч для умного светильника с PIR датчиком.

unsigned long counttime; // выделение памяти для счетчика

#define LED  3 // назначаем порт для светодиода
#define PIR  2 // назначаем порт для PIR sensor

void setup()
{
pinMode(LED, OUTPUT);
pinMode(PIR, INPUT);
}

void loop()
{
  // если есть движение включаем светодиод
if (digitalRead(PIR) == HIGH) { digitalWrite(LED, HIGH); }

 // если нет движения
if (digitalRead(PIR) == LOW) {

 // включаем счетчик на 1 минуту
counttime = millis();
millis() - counttime > 60000;

 // если нет движения в течении 1 минуты выключаем светодиод
digitalWrite(LED, LOW);
}
}

Пояснения к коду:

  1. С помощью функции counttime = millis(); мы начинаем отсчет времени. При этом, в отличие от функции delay, которая полностью прерывает программу, микроконтроллер может продолжать остальные вычисления в скетче.

На что обратить внимание:

  1. Мы изменили время выключения светильника. Если в первом скетче светодиод выключался сразу после сигнала LOW с PIR датчика, что не всегда удобно. То сейчас мы даем 1 минуту до выключения светильника, на случай если человек не вышел из комнаты, а просто ненадолго остановился.

Задание для самостоятельного выполнения:

  1. Измените в скетче время выключения светодиода — отключение освещения через 2 минуты, после окончания движения в комнате.

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Загрузка...

2 комментариев для “PIR датчик движения Ардуино

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

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