Ардуїно нано датчик руху схема підключення. Датчик руху з Arduino, HC-SR04 та світлодіодом (LED). Зміна часу імпульсу та часу між імпульсами
Огляд датчика простору HC-SR501
Модуль датчика руху (або присутності) HCSR501 на основі піроелектричного ефекту складається з PIR-датчика 500BP (рис. 1) з додатковою електричною розв'язкою на мікросхемі BISS0001 та лінзи Френеля, яка використовується для збільшення радіусу огляду та посилення інфрачервоного сигналу. Модуль використовується виявлення руху об'єктів, випромінюючих інфрачервоне випромінювання. Чутливий елемент модуля – 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 до +80 °C
- Габарити 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; ) // встановлення прапора спрацювання датчика flagHCSR501 = true;
Рисунок 5. Виведення даних у монітор послідовного порту
За допомогою потенціометрів експериментуємо з тривалістю сигналу на виході OUT та чутливістю датчика (відстанню фіксації об'єкта).
Приклад використання
Створимо приклад відправки sms при спрацьовуванні датчика руху/присутності на об'єкті, що охороняється. Для цього використовуватимемо GPS/GPRS шилд. Нам знадобляться такі деталі:- плата Arduino Uno
- GSM/GPRS шилд
- npn-транзистор, наприклад, С945
- резистор 470 Ом
- динамік 8 Ом 1Вт
- дроти
Малюнок 6. Схема з'єднань
При спрацюванні датчика викликаємо процедуру надсилання SMS з текстовим повідомленням Attention!на номер 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
Часті питання FAQ
1. Модуль не спрацьовує під час руху об'єкта- Перевірте правильність підключення модуля.
- Налаштуйте потенціометром дистанцію спрацьовування.
- Налаштуйте затримку тривалості сигналу потенціометром.
- Встановіть перемичку в режим одиничного спрацьовування L.
PIR (пасивні інфрачервоні датчики) сенсори дозволяють вловлювати рух.
Дуже часто використовуються у системах сигналізації. Ці датчики малі за габаритами, недорогі, споживають мало енергії, легкі в експлуатації, практично не схильні до зносу. Крім PIR, подібні датчики називають піроелектричними та інфрачервоними датчиками руху.
Пірлоелектричний датчик руху - загальна інформація
ПІР датчики руху по суті складаються з чутливого піроелектричного елемента (циліндрична деталь з прямокутним кристалом в центрі), який уловлює рівень інфрачервоного випромінювання. Все довкола випромінює невеликий рівень радіації. Чим більша температура, тим вищий рівень випромінювання. Датчик фактично поділено на дві частини. Це зумовлено тим, що нам важливий не рівень випромінювання, а наявність руху в межах його зони чутливості. Дві частини датчика встановлені таким чином, що якщо одна половина вловлює більший рівень випромінювання, ніж інша, вихідний сигнал генеруватиме значення high або low.
Сам модуль, на якому встановлено датчик руху, складається також із додаткової електричної обв'язки: запобіжники, резистори та конденсатори. У більшості недорогих пір-датчиків використовуються недорогі чіпи BISS0001 ("Micro Power PIR Motion Detector IC"). Цей чіп сприймає зовнішнє джерело випромінювання та проводить мінімальну обробку сигналу для його перетворення з аналогового в цифровий вигляд.
Одна з базових моделей піроелектричних датчиків такого класу виглядає так:
Більш нові моделі PIR-датчиків мають додаткові виходи для додаткового налаштування та встановлені конектори для сигналу, живлення та землі:
ПІР датчики відмінно підходять для проектів, в яких необхідно визначати наявність або відсутність людини в межах певного робочого простору. Крім перерахованих вище перевага подібних датчиків, вони мають велику зону чутливості. Однак врахуйте, що піроелектричні датчики не нададуть вам інформації про те, скільки людей довкола і наскільки близько вони знаходяться до датчика. Крім того, спрацювати вони можуть і на домашніх тварин.
Загальна технічна інформація
Ці технічні характеристики відносяться до датчиків PIR, які продаються в магазині Adafruit. Принцип роботи аналогічних датчиків схожий, хоча технічні характеристики можуть бути різними. Отже, перш ніж працювати з ПІР-датчиком, ознайомтеся з його датаситом.
- Форма: Прямокутник;
- Ціна: близько 10.00 доларів у магазині Adafruit;
- Вихідний сигнал: цифровий імпульс high (3 В) за наявності руху та цифровий сигнал low, коли руху немає. Довжина імпульсу залежить від резисторів і конденсаторів на самому модулі та різна в різних датчиках;
- Діапазон чутливості до 6 метрів. Кут огляду 110 x 70 °;
- Харчування: 3В – 9В, але найкращий варіант – 5 вольт;
>Для замовлення з Aliexpress:
Принцип роботи піроелектричних (PIR) датчиків руху
PIR датчики не такі прості, як може здатися на перший погляд. Основна причина - велика кількість змінних, які впливають на його вхідний та вихідний сигнали. Щоб пояснити основи роботи БЕЗ датчиків, ми використовуємо малюнок, наведений нижче.
Піроелектричний датчик руху і двох основних частин. Кожна з частин включає спеціальний матеріал, чутливий до інфрачервоного випромінювання. В даному випадку лінзи особливо не впливають на роботу датчика, тому ми бачимо дві ділянки чутливості всього модуля. Коли датчик перебуває у стані спокою, обидва сенсори визначають однакову кількість випромінювання. Наприклад, це може бути випромінювання приміщення чи навколишнього середовища на вулиці. Коли теплокровний об'єкт (людина чи тварина), проходить повз, він перетинає зону чутливості першого сенсора, у результаті на модулі БЕЗ датчика генеруються два різних значення випромінювання. Коли людина залишає зону чутливості першого сенсора, значення вирівнюються. Саме зміни у показаннях двох датчиків реєструються та генерують імпульси HIGH або LOW на виході.
Конструкція PIR датчика
Чутливі елементи БЕЗ датчика встановлюється в металевий герметичний корпус, який захищає від зовнішніх шумів, перепадів температур і вологості. Прямокутник у центрі зроблений із матеріалу, що пропускає інфрачервоне випромінювання (зазвичай це матеріал на основі силікону). За цією пластиною встановлюються два чутливі елементи.
Малюнок з даташиту Murata:
Малюнок з даташиту RE200B:
На малюнку з даташиту RE200B видно два чутливі елементи:
На малюнку вище наведено внутрішню схему підключення.
Лінзи
Інфрачервоні датчики руху практично однакові за своєю структурою. Основні відмінності – чутливість, яка залежить від якості чутливих елементів. У цьому значної ролі грає оптика.
На малюнку вище наведено приклад лінзи із пластику. Це означає, що діапазон чутливості датчика являє собою два прямокутники. Але зазвичай нам потрібно забезпечити великі кути огляду. Для цього можна використовувати лінзи, подібні до тих, що використовуються у фотоапаратах. При цьому лінза для датчика руху повинна бути маленька, тонка і виготовлятися із пластику, хоча він і додає шумів у вимірювання. Тому в більшості PIR датчиків використовуються лінзи Френеля (малюнок із Sensors Magazine):
Лінзи Френеля концентрують випромінювання, значно розширюючи діапазон чутливості піродатчиків (рисунок BHlens.com)
Малюнок із Cypress appnote 2105:
Тепер ми маємо значно більший діапазон чутливості. При цьому ми пам'ятаємо, що у нас два чутливі елементи і нам потрібні не стільки два великі прямокутники, скільки велика кількість маленьких зон чутливості. Для цього лінза поділяється на кілька секцій, кожна з яких являє собою окрему лінзу Френеля.
На малюнку нижче можна побачити окремі секції – лінзи Френеля:
На цьому макрознімку зверніть увагу, що фактура окремих лінз відрізняється:
В результаті формується цілий набір чутливих ділянок, що взаємодіють між собою.
Малюнки з даташиту NL11NH:
Нижче ще один малюнок. Яскравіший, але менш інформативний. Крім того, зверніть увагу, що більшість датчиків кут огляду становить 110 градусів, а чи не 90.
Малюнок з IR-TEC:
Підключення PIR датчика руху
Більшість модулів з інфрачервоними датчиками руху мають три конектори на задній частині. Розпинування може відрізнятися, тому перш ніж підключати, перевірте її! Зазвичай поруч із конекторами зроблені відповідні написи. Один конектор йде до землі, другий видає цікавий для нас сигнал із сенсорів, третій - земля. Напруга живлення зазвичай становить 3-5 вольт, постійний струм. Однак іноді зустрічаються датчики з напругою живлення 12 вольт. У деяких великих датчиках окремого сигналу піна немає. Натомість використовується реле із землею, живленням та двома перемикачами.
Для прототипу вашого пристрою з використанням інфрачервоного датчика руху зручно використовувати монтажну плату, так як більшість даних модулів мають три конектори, відстань між якими розрахована саме під отвори макетки.
У нашому випадку червоний кабель відповідає живленню, чорний – землі, а жовтий – сигналу. Якщо ви підключите кабелі неправильно, датчик не вийде з ладу, але не працюватиме.
Тестування PIR датчика руху
Зберіть схему відповідно до рисунка вище. В результаті, коли PIR датчик виявить рух, на виході згенерується сигнал HIGH, який відповідає 3.3 і світлодіод загориться.
При цьому врахуйте, що піроелектричний датчик має "стабілізуватися". Встановіть батарейки та зачекайте 30-60 секунд. Протягом цього часу світлодіод може блимати. Зачекайте, поки миготіння закінчиться і можна починати махати руками та ходити навколо датчика, спостерігаючи за тим, як світлодіод запалюється!
Налаштування перезапуску датчика
У піроелектричного датчика руху є кілька настоянок. Першою ми розглянемо "перезапуск".
Після підключення подивіться на задню поверхню модуля. Конектори повинні бути встановлені у верхньому лівому куті L, як це показано на малюнку нижче.
Зверніть увагу, що при такому варіанті підключення світлодіод не горить постійно, а вмикається-вимикається, коли ви рухаєтеся біля нього. Це опція "без перезапуску" (non-retriggering).
Тепер встановіть конектор у позицію H. Після тестування виявиться, що світлодіод горить постійно, якщо хтось рухається у межах зони чутливості датчика. Це режим перезапуску.
Малюнок нижче з датчика датчика BISS0001:
Для більшості випадків режим "перезапуск" (конектор в позиції H кк це показано на малюнку нижче) краще.
Налаштовуємо чутливість
На багатьох інфрачервоних датчиках руху, у тому числі й у компанії Adafruit, встановлено невеликий потенціометр для налаштування чутливості. Обертання потентенціометра за годинниковою стрілкою додає чутливість датчику.
Зміна часу імпульсу та часу між імпульсами
Коли ми розглядаємо PIR датчики, важливими є два проміжки часу "затримки". Перший час -Tx: як довго горить світлодіод після виявлення руху. На багатьох піроелектричних модулях цей час регулюється вбудованим потенціометром. Другий час - Ti: як довго світлодіод гарантовано не загориться, коли руху не було. Змінювати цей параметр не так просто, для цього може знадобитися паяльник.
Давайте поглянемо на даташит BISS:
На датчиках від Adafruit є потенціометр, позначений як TIME. Це змінний резистор з опором 1 мегаом, який доданий до резисторів на 10 кілом. Конденсатор C6 має ємність 0.01 мікрофарат, так що:
Tx = 24576 x (10 кОм + Rtime) x 0.01 мкФ
Коли потенціометр Rtime в "нульовому" - повністю повернутий проти годинникової стрілки - положенні (0 мегаом):
Tx = 24576 x (10 кОм) x 0.01 мкФ = 2.5 секунди (приблизно) Коли потенціометр Rtime повністю повернутий за годинниковою стрілкою (1мегаом):
Tx = 24576 x (1010 кОм) x 0.01 мкФ = 250 секунд (приблизно)
У середній позиції RTime час складатиме близько 120 секунд (дві хвилини). Тобто якщо ви хочете відстежувати рух об'єкта з частотою раз на хвилину, поверніть потенціометр на 1/4 повороту.
Для старіших/інших моделей PIR датчиків
Якщо на датчику немає потенціометрів, можна провести налаштування за допомогою резисторів.
Нас цікавлять резистори R10 та R9. На жаль, китайці багато вмію. Навіть плутати написи. На малюнку вище наведено приклад, у якому видно, що переплутані R9 з R17. Відстежити підключення по датасіту. R10 підключений до 3 пін, R9 - до 7 пін.
Наприклад:
Tx is = 24576 * R10 * C6 = ~1.2 секунд
R10 = 4.7K та C6 = 10 нанофарад
Ti = 24 * R9 * C7 = ~1.2 секунд
R9 = 470K та C7 = 0.1 мікрофарад
Ви можете змінити час затримки, встановивши різні резистори та конденсатори.
Підключення PIR датчика руху до Arduino
Напишемо програму для зчитування значень із піроелектричного датчика руху. Підключити PIR датчик до мікроконтролера просто. Датчик видає цифровий сигнал, так що все, що вам необхідно - зчитувати з піна Arduino сигнал HIGH (РВ виявлено рух) або LOW (руху немає).
При цьому не забудьте встановити конектор у позицію H!
Подайте живлення 5 вольт на датчик. Землю з'єднати з землею. Після цього з'єднайте пін сигналу з датчика з цифровим піном Arduino. У цьому прикладі використаний пін 2.
Програма проста. По суті, вона відстежує стан піна 2. А саме: який на ньому сигнал: LOW або HIGH. Крім того, водиться повідомлення, коли стан піна змінюється: є рух або руху немає.
* перевірка PIR датчика руху
int ledPin = 13; // ініціалізуємо пін для світлодіода
int inputPin = 2; // ініціалізуємо пін для отримання сигналу від піроелектричного датчика руху
int pirState = LOW; // починаємо роботу програми, припускаючи, що руху немає
int val = 0; // Змінна для читання стану піна
pinMode(ledPin, OUTPUT); // оголошуємо світлодіод як OUTPUT
pinMode(inputPin, INPUT); // Оголошуємо датчик як INPUT
Serial.begin(9600);
val = digitalRead(inputPin); // зчитуємо значення з датчика
if (val == HIGH) ( // перевіряємо, чи відповідає лічене значення HIGH
digitalWrite(ledPin, HIGH); // Включаємо світлодіод
if (pirState == LOW) (
// ми щойно включили
Serial.println("Motion detected!");
pirState = HIGH;
digitalWrite(ledPin, LOW); // Вимикаємо світлодіод
if (pirState == HIGH)(
// ми щойно його вимкнули
Serial.println("Motion ended!");
// ми виводимо на серійний монітор зміну, а чи не стан
Не забудьте, що для роботи з піроелектричним датчиком не завжди потрібний мікроконтролер. Деколи можна обійтися і простим реле.
PIR (пасивні інфрачервоні датчики) сенсори дозволяють вловлювати рух. Дуже часто використовуються у системах сигналізації. Ці датчики малі за габаритами, недорогі, споживають мало енергії, легкі в експлуатації, практично не схильні до зносу. Крім PIR, подібні датчики називають піроелектричними та інфрачервоними датчиками руху.
З'явилася необхідність придбати пару датчиків для побутового використання у своїх виробах на основі світлодіодного підсвічування.
Так як струми споживання у мене порівняно не великі, а напруга живлення 12 В були придбані компактні піроелектричні інфрачервоні датчики руху в корпусі.
Посилання:
Я замовляв два датчики з можливістю регулювання світлочутливості:
Датчики підтримують живлення від 12 до 24 Вольт. Вони вже мають розпаяні стандартні дроти довжиною близько 30 см з гніздами на вхід та вихід, із центральним контактом 2.1 мм, і це великий плюс. Не треба нічого припаювати, просто підключаєте блок живлення і користуєтеся:
Самі датчики досить компактні. Зовнішній вигляд:
розміри:
Щоб дістатися плати та регулювань, потрібно розкрити корпус. Задня кришка на клямках, піддягається викруткою:
Плата виглядає так:
Я знайшов схему цього пристрою, номінали можуть відрізнятися, але в цілому для розуміння суті роботи вона вірна:
Тут ми бачимо стабілізатор напруги на вході для живлення мікросхеми:
До речі, ось даташит цього елемента, видно що різне маркування передбачає різну стабілізовану напругу на виході. Але головний момент полягає в тому, що він підтримує вхідну напругу до 24 Вольт, саме тому перевищувати її не слід.
Далі за схемою, на виході є польовий транзистор, який і є ключем у ланцюзі живлення-навантаження:
У датасіті вказано максимальний тривалий струм при нормальній кімнатній температурі 15 А, але так як у нас немає охолодження транзистора, ми обмежені вихідною потужністю.
Цей чіп сприймає зовнішнє джерело випромінювання і проводить мінімальну обробку сигналу для його перетворення з аналогового в цифровий вигляд:
ПІР датчик руху, по суті, складається з піроелектричного чутливого елемента (циліндрична деталь з прямокутним кристалом у центрі), який уловлює рівень інфрачервоного випромінювання. Датчик фактично поділено на дві частини. Це зумовлено тим, що нам важливий не рівень випромінювання, а наявність руху в межах його зони чутливості. Дві частини датчика встановлені таким чином, що якщо одна половина вловлює більший рівень випромінювання, ніж інша, вихідний сигнал генеруватиме значення high або low.
Тепер безпосередньо до регулювань. Налаштовував пристрій, відповідно накидав що й куди крутити:
Час регулюється від 1 секунд до 500 сек. При повністю викрученому повзунці світло просто блимає.
З приводу порога включення датчика, досвідченим шляхом виявив, що ця напруга від 11,5 Вольт, якщо нижче, то датчик просто не включається:
За схемою зрозуміло, що вихідна напруга з датчика менше або дорівнює вхідному. Я виставив 12В. тут є похибка у вигляді неточної індикації блоку живлення, тому споживання самого датчика звичайно нижче:
У режимі очікування датчик споживає 84мкА, а напруга на виході 170 мВ.
Чесно скажу, що налаштовувати датчик дуже незручно з вийнятою платою, тому я зробив отвори на задній кришці, і так набагато краще:
Зібрав схемку, все налаштував:
Перевірив:
Датчик працює вже два дні, другий такий я поставив на підсвічування підставки для навушників, і мені подобається, що на відміну від попереднього, який працював від 220 В, був більший і клацав реле, цей компактніший і, звичайно ж, безшумний.
Максимальну дальність не заміряв, але у квартирі з 3-х метрів точно спрацьовує
Чи задоволений я покупкою – так. Повноцінний, якісно зроблений готовий пристрій.
Що сподобалось:
+ Повністю настроюваний режим роботи
+ Мінімальне власне споживання
+ Якість виготовлення та компактність
+ Чіткість спрацьовування без перепусток
+.Наявність проводів з гніздами
Що не сподобалося:
- Відсутність прямого доступу до налаштувань без розбору корпусу (вирішувано)
- Кріпильні вуха дуже маленькі (але краще кріпити на двосторонню стрічку типу 3М)
Білий ковпачок датчика вибивається із чорного корпусу, але в опції без датчика освітленості він чорний.
На цьому все.
У цьому уроці ми покажемо вам як можна зробити датчик руху за допомогою ультразвукового датчика (HC-SR04), який включатиме щоразу світлодіод. Комплектуючі до цього уроку можна замовити у будь-якому зручному магазині, а згодом і у нас на сайті.
Урок підійде початківцям, але буде цікавим і досвідченим інженерам.
Нижче список комплектуючих, які нам знадобляться для нашого уроку.
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, просто переконайтеся, що ви змінили їх у коді пізніше.
Тепер ви можете підключити 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<= trigDistance) { digitalWrite(ledPin, HIGH); delay(ledOnTime); digitalWrite(ledPin, LOW); } delay(100); }
Крок 5: Кінцевий результат (відео)
Підсумковий результат датчика руху та його роботи можна переглянути на відео нижче.
Всім добрих проектів!
Тема сьогоднішнього уроку – датчик руху на основі піроелектричного ефекту (PIR, passive infrared motion sensor). Такі датчики часто використовуються в охоронних системах та у побуті для виявлення руху в приміщенні. Наприклад, на принципі детектування руху засноване автоматичне включення світла у під'їзді або у ванній. Піроелектричні датчики досить просто влаштовані, недорогі та невибагливі в установці та обслуговуванні. До речі, існують інші способи детектування руху. Сьогодні все частіше використовують системи комп'ютерного зору для розпізнавання об'єктів та траєкторії їхнього переміщення. У тих охоронних системах застосовуються лазерні детектори, які дають тривожний сигнал при перетині променя. Також використовуються тепловізійні датчики, здатні визначити рух живих істот.
1. Принцип дії піроелектричних датчиків руху
Піроелектрики – це діелектрики, які створюють електричне поле при зміні їхньої температури. На основі піроелектриків роблять датчики вимірювання температури, наприклад LHI778 або IRA-E700. Кожен такий датчик містить два чутливі елементи розміром 1×2 мм, що підключені з протилежною полярністю. І як ми побачимо далі, наявність двох елементів допоможе нам детектувати рух. Ось так виглядає датчик IRA-E700 компанії Murata. На цьому уроці ми будемо працювати з датчиком руху HC-SR501, в якому встановлено один такий піроелектричний датчик. Зверху піроелектрик оточений напівсферою, розбитою на кілька сегментів. Кожен сегмент цієї сфери є лінзою, яка фокусує теплове випромінювання на різні ділянки ПІР-датчика. Часто як лінзу використовують лінзу Френеля.Принцип роботи Датчик руху наступний. Припустимо, що датчик встановлено у порожній кімнаті. Кожен чутливий елемент отримує постійну дозу випромінювання, а отже, і напруга на них має постійне значення (лівий малюнок).
Як тільки в кімнату заходить людина, він потрапляє спочатку до зони огляду першого елемента, що призводить до появи позитивного електричного імпульсу на ньому (центральний малюнок). Людина рухається, і її теплове випромінювання через лінзи потрапляє вже другий PIR-елемент, який генерує негативний імпульс. Електронна схема датчика руху реєструє ці різноспрямовані імпульси та робить висновки про те, що в поле зору датчика потрапила людина. На виході датчика генерується позитивний імпульс (правий рисунок).
2. Налаштування HC-SR501
На цьому уроці ми використовуватимемо модуль HC-SR501. Цей модуль дуже поширений і застосовується в багатьох DIY проектів через свою дешевизну. У датчика є два змінних резистора та перемичка для налаштування режиму. Один із потенціометрів регулює чутливість приладу. Чим вона більша, тим далі «бачить» датчик. Також чутливість впливає розмір детектируемого об'єкта. Наприклад, можна виключити зі спрацьовування собаку чи кішку.Другий потенціометр регулює час спрацьовування T . Якщо датчик виявив рух, він генерує на виході позитивний імпульс завдовжки T . Нарешті, третій елемент керування – перемичка, яка перемикає режим датчика. У положенні L датчик веде відлік Т від першого спрацьовування. Допустимо, ми хочемо керувати світлом у ванній кімнаті. Зайшовши в кімнату, людина викличе спрацювання датчика, і світло ввімкнеться рівно на якийсь час Т . Після закінчення періоду сигнал на виході повернеться у вихідний стан, і датчик дати наступного спрацьовування. У положенні H датчик починає відлік часу T щоразу після виявлення руху. Іншими словами, будь-яке ворушіння людини викличе обнулення таймера відліку Т . За замовчуванням перемичка перебуває в стані H .
3. Підключення HC-SR501 до Ардуїно Уно
Для з'єднання з мікроконтролером або безпосередньо з реле HC-SR501 має три висновки. Підключаємо їх до Ардуїно за наступною схемою:HC-SR501 | GND | VCC | OUT |
Ардуїно Уно | GND | +5V | 2 |
Зовнішній вигляд макету
ПрограмаЯк було зазначено, цифровий вихід датчика HC-SR501 генерує високий рівень сигналу при спрацьовуванні. Напишемо просту програму, яка відправлятиме в послідовний порт «1» якщо датчик побачив рух, і «0» в іншому випадку. const int movPin = 2 void setup() ( Serial.begin(9600); pinMode(movPin, INPUT); ) void loop()( int val = digitalRead(movPin); Serial.println(val); delay(100); ) Завантажуємо програму на Ардуїно та перевіряємо роботу датчика. Можна покрутити налаштування датчика і подивитися, як це позначиться на його роботі.
4. Управління світлом на основі датчика руху
Наступний крок – система автоматичного включення світла. Для того, щоб керувати освітленням у приміщенні, нам потрібно додати до ланцюга реле. Будемо використовувати модуль реле із захистом на основі опторозв'язки, про який ми вже писали в одному та уроків (урок про реле). Увага!Ця схема запалює лампу від мережі 220 Вольт. Рекомендується сім разів перевірити всі з'єднання, перш ніж з'єднувати схему із побутовою електромережею. Принципова схемаЗовнішній вигляд макету
ПрограмаТепер напишемо програму, яка при спрацюванні датчика включатиме реле, а отже й освітлення в кімнаті. const int movPin = 2; const int relPin = 3; void setup() ( Serial.begin(9600); pinMode(movPin, INPUT); pinMode(relPin, OUTPUT); ) void loop()( int val = digitalRead(movPin); else digitalWrite(relPin, LOW);) Завантажуємо програму на Ардуїно, акуратно підключаємо схему до побутової мережі і перевіряємо роботу датчика. ВисновокДатчики руху оточують нас усюди. Завдяки охоронним системам їх можна зустріти практично в кожному приміщенні. Як ми з'ясували, вони дуже прості у використанні та можуть бути легко інтегровані у будь-який проект на Ардуїно або Raspberry Pi. Ось кілька ситуацій і місць, де може стати в нагоді датчик руху:
- автоматичне включення світла у під'їзді будинку, у ванній кімнаті та туалеті, перед вхідними дверима до приміщення;
- сигналізація у приміщенні та у дворі;
- автоматичне відчинення дверей;
- автоматичне увімкнення охоронної відеокамери.