Подключение датчика движения к Ардуино

Рассмотрим датчик движения для Arduino, как подключить PIR sensor к Ардуино. Продемонстрируем скетч для автоматического включения светильника от сенсора.

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

Motion PIR sensor что это

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

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

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

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

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

Как подключить датчик движения к Ардуино

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

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • PIR датчик движения;
  • беспаечная макетная плата;
  • 1 светодиод и резистор 220 Ом;
  • провода «папа-папа», «папа-мама».
Схема подключения PIR датчика к Ардуино УНО
Схема подключения PIR датчика к Ардуино УНО

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

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

#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. в условном операторе if использовано двойное равенство: if (pirVal == HIGH). Согласно языку программирования Ардуино, двойное равенство является оператором сравнения.

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

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

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

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

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

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

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

   // если нет движения и прошла 1 минута
   if (digitalRead(PIR) == LOW && millis() - counttime > 60000) {

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

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

  1. с помощью функции counttime = millis(); мы начинаем отсчет времени. При этом, в отличие от функции delay, которая полностью прерывает программу, микроконтроллер может продолжать остальные вычисления в скетче.
  2. мы изменили время выключения светильника. Если в первом скетче светодиод выключался сразу после сигнала LOW с датчика. То сейчас мы даем 1 минуту до выключения светильника, на случай если человек не вышел из комнаты.
1 Star2 Stars3 Stars4 Stars5 Stars (10 votes, average: 4,90 out of 5)
Загрузка...

2 комментариев для “Пример: Подключение датчика движения к Ардуино”

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

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