Новости

PIR датчик руху підключення до Arduino

  1. Основні технічні характеристики:
  2. Модуль має 3 виведення (стандарту 2.54мм):
  3. Підключення датчика:

Всі ми бачили, які автоматично вмикаються світильники біля під'їздів, приватних будинків які спрацьовують при проходженні поруч людини. У більшості з них встановлені пасивні датчики руху скорочено PIR.

У першій частині цієї статті розглянемо підключення такого датчика до Arduino, у другій частині зберемо подобу автоматичного вимикача освітлення.

Компоненти для повторення (купити в Китаї):

Arduino UNO , або Arduino Nano , або Arduino Mega

PIR-датчик

Реле (одноканальне, 5В)

Макетна плата

З'єднувальні дроти (перемички)

Робота PIR-сенсора (Passive Infrared sensor), тобто пасивного ІК датчика ґрунтується на вимірюванні інфрачервоного випромінювання від об'єктів.

Роботу можна розділити на два етапи:

1 Калібрування. При включенні датчик вимірює інфрачервоне випромінювання для отримання еталонних значень.

2 Моніторинг. Датчик постійно вимірює інфрачервоне випромінювання і при відхиленні від еталонного видає одиницю в порт.

Основні технічні характеристики:

• Зона роботи датчика: До 6 метрів (110 ° x 70 ° область виявлення)

• Робоча напруга: 5 - 9В

Модуль має 3 виведення (стандарту 2.54мм):

GND: "-" харчування.

OUT: Висновок вихідного сигналу

VCC: "+" харчування.

Підключення датчика:

GND на будь-який з GND пинов Ардуіно

OUT на будь-який з цифрових входів / виходів Ардуіно (в прикладах приєднано до 2)

VCC на + 5 вольт на Ардуіно

Найпростішим прикладом роботи з датчиком руху є наступний скетч. При виявленні руху запалюється світлодіод підключений до піну 13, а також в порт пишеться стан датчика.

Приклад програмного коду // Тестувалося на Arduino IDE 1.0.1 #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); }}


Більш складним, але і більш впевненим в роботі є наступний програмний код. В даному скетчі реалізована програмна калібрування, яка потрібна датчику по даташіту.

Приклад програмного коду // Тестувалося на Arduino IDE 1.0.1 // Час калібрування датчика (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); }}}


Збірка автоматичного світильника

Як і обіцяли на початку статті ми зберемо автоматичний вмикач світла. Для виявлення нам буде потрібно датчик руху , А для включення лампи розжарювання (потужного споживача) використовуємо реле модуль . Якщо в якості джерела світла використовувати світлодіоди, то можна обійтися і без нього.

Про підключення лампочки до Arduino через реле ми вже розповіли в даній статті . У цій же статті наводимо тільки картинку за допомогою якої ви зможете легко зрозуміти що куди підключено.
Як і обіцяли на початку статті ми зберемо автоматичний вмикач світла

Приклад програмного коду // Тестувалося на Arduino IDE 1.0.1 // Час калібрування датчика (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; // вивід сигнального діода int relayPin = 4; // реле пін void setup () {pinMode (pirPin, INPUT); pinMode (ledPin, OUTPUT); pinMode (relayPin, OUTPUT); //!УВАГА! При використанні npn реле необхідно в слід. рядку поміняти HIGH на LOW digitalWrite (relayPin, HIGH); delay (4000); digitalWrite (pirPin, LOW); // дамо датчику час на калібрування for (int i = 0; i <calibrationTime; i ++) {// Під час калібрування буде блимати сигнальний діод i% 2? digitalWrite (ledPin, HIGH): digitalWrite (ledPin, LOW); delay (1000); } // По закінченню калібрування запалимо сигнальний діод digitalWrite (ledPin, HIGH); delay (50); } Void loop () {// Якщо виявлено рух if (digitalRead (pirPin) == HIGH) {// Якщо до цього моменту ще не включили реле if (lockLow) {lockLow = false; // Включаємо реле. //!УВАГА! При використанні npn реле необхідно в слід. рядку поміняти LOW на HIGH digitalWrite (relayPin, LOW); delay (50); } TakeLowTime = true; } // Їли руху немає if (digitalRead (pirPin) == LOW) {// Якщо час закінчення руху ще не записано if (takeLowTime) {lowIn = millis (); // Збережемо час закінчення руху takeLowTime = false; // Змінимо значення прапора, щоб більше не брати час, поки не буде нового руху} // Якщо час без рух перевищує паузу => рух закінчено if (! LockLow && millis () - lowIn> pause) {// Змінюємо значення прапора, щоб ця частина коду здійснилася лише раз, до нового руху lockLow = true; digitalWrite (relayPin, HIGH); delay (50); }}}

Купити в Росії   P   IR датчик Купити в Росії P IR датчик

В даний момент ще не в усіх елементи нашої спільноти. Ми активно працюємо над ним і найближчим часом можливість коментування статей буде додана.

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: