- Потрібні компоненти
- Принципова схема для Raspberry Pi та детектора руху на основі датчика PIR
- Код Python для Raspberry Pi:
Системи безпеки відіграють важливу роль у нашому повсякденному житті, і там ми можемо знайти безліч різних типів систем безпеки з різними видами технологій та з різним ціновим діапазоном. Будучи електронним ентузіастом, ви можете створити просту систему безпеки, витративши кілька доларів і трохи вільного часу. Тут, у цій статті, я ділюсь керівництвом “зроби сам”, щоб створити простий сигналізатор руху на основі датчика руху Raspberry pi та PIR, який увімкне звуковий сигнал, коли датчик PIR виявить будь-який рух людини в цьому районі. Ми також описали просту схему детектора руху на основі датчика PIR в одній з наших попередніх статей, де ми докладно розповіли про роботу датчика PIR.
Потрібні компоненти
- Raspberry Pi 3 (будь-яка модель)
- Датчик PIR
- Зумер
- Макет
- Підключення проводів
Працює ПІР-датчик
Пасивний інфрачервоний (PIR) датчик називають пасивним, оскільки він приймає інфрачервоний, а не випромінює. В основному він виявляє будь-які зміни тепла, і кожен раз, коли виявляє будь-які зміни, його вихідний PIN стає ВИСОКИМ. Вони також називаються піроелектричними або ІЧ-датчиками руху.
Тут слід зазначити, що кожен предмет випромінює деяку кількість інфрачервоного випромінювання при нагріванні. Людина також випромінює інфрачервоне світло через тепло тіла. Датчики PIR можуть виявляти незначні зміни в інфрачервоному діапазоні. Кожного разу, коли об'єкт проходить через діапазон датчиків, він створює інфрачервоний діапазон через тертя між повітрям та предметом, і потрапляє в ПІР.
Основним компонентом PIR-датчика є піроелектричний датчик, показаний на малюнку (прямокутний кристал за пластиковою кришкою). Поряд з цим, BISS0001 ("Micro Power PIR Motion Detector IC"), деякі резистори, конденсатори та інші компоненти, що використовуються для побудови PIR-датчика. BISS0001 IC бере вхідні дані від датчика і виконує обробку, щоб зробити вихідний штифт ВИСОКИМ або НИЗКИМ відповідно.
Піроелектричний датчик ділиться на дві половини, коли немає руху, обидві половини залишаються в однаковому стані, це означає, що обидва сенсори відчувають однаковий рівень інфрачервоного випромінювання. Як тільки хтось потрапляє в першу половину, інфрачервоний рівень однієї половини стає більшим, ніж інший, і це змушує ПІР реагувати і робить вихідний штифт високим.
Піроелектричний датчик покритий пластиковою кришкою, у якій всередині є безліч об'єктивів Френеля. Ці лінзи вигнуті таким чином, що датчик може охоплювати широкий діапазон.
Принципова схема для Raspberry Pi та детектора руху на основі датчика PIR
Як показано на наведеній вище схематичній схемі для Raspberry Pi та датчика руху на основі датчика PIR, позитивний вивід датчика PIR з'єднаний з висновком 4 (5v), а контакт заземлення PIR датчика - з виводом 6 (заземлення) Raspberry Pi (Ви можете знайти тут схему контактів Raspberry Pi). Вихідний штифт датчика PIR з'єднаний з GPIO 23 Raspberry pi, який використовується для введення даних в Raspberry Pi. Висновок GPIO 24, який оголошений тут для виведення, з'єднаний з плюсом зумера, а земля зумера з'єднана з землею (контакт 6) малинового пі.
Код Python для Raspberry Pi:
Код Python для даного детектора руху на основі малинових пі та ПІР-сенсорів досить простий, і його можна легко зрозуміти за допомогою вбудованих коментарів у розділі коду нижче. Я оголосив виводи GPIO 23 і 24 як вхідні та вихідні висновки.
while True: якщо GPIO.input (23): # Якщо є рух, датчик PIR подає вхід до GPIO23 GPIO.output (24, True) # Вихід, що подається зуммеру через GPIO24 time.sleep (1) #Buzzer включається на 1 секунда GPIO. Вихід (24, помилковий)
«А» петля використовується як «True», щоб вміст всередині циклу завжди буде виконуватися. якщо GPIO.input (23): оператор виявляє, чи високий штифт GPIO 23, і якщо це те ж саме, це робить вихідний PIN 24 високим. Функція time.sleep (секунди) використовується для призупинення програми в python на певний час, де 'secs' - час у секундах. Отже, тут ми звикли робити паузу на 1 секунду. У наступному рядку ми зробили вихід на 24 як false, тому зумер зупиняється, поки цикл не розпочне наступну ітерацію, оскільки цикл While завжди встановлений істинним без будь-яких попередніх умов.