Laboratoriya ishi № 22. HCSR501 Xarakat sensor orqali Xarakatga qarab chiroqni yoqish, jumladan kamera, hafsizlik signali kabi komponentalarni ishga tushirish, uy xafsizlik loyihasini ishlab chiqish Laboratoriya ishining maqsadi: HCSR501 Xarakat sensor orqali Xarakatga qarab chiroqni yoqish, jumladan kamera, hafsizlik signali kabi komponentalarni ishga tushirish, uy xafsizlik loyihasini ishlab chiqish
Laboratoriyaning nazariy qismi. Piroelektrik sensorda infraqizil nurlanishni uzatuvchi materialdan tayyorlangan ikkita to'rtburchaklar uyasi mavjud. Ularning orqasida ikkita alohida infraqizil sensor elektrodlari mavjud: ulardan biri ijobiy chiqish signalini yaratish uchun mas'ul, ikkinchisi esa salbiy. Ushbu qarorning sababi shundaki, biz infraqizil darajalarni o'zgartirishni qidirmoqdamiz, balki atrofdagi infraqizil darajalarning o'zi emas. Ikki elektrod bir-birini bekor qiladigan tarzda ulanadi. Agar yarmi boshqasidan ko'ra ko'proq yoki kamroq infraqizilni ko'rsa, chiqish yuqori yoki past bo'ladi.
Sensor ishlamay qolganda (ya'ni sensor atrofida hech qanday harakat yo'q), ikkala uyasi ham bir xil miqdordagi infraqizil nurlanishni aniqlaydi, natijada nol chiqish paydo bo'ladi.
Lekin odam yoki hayvon kabi issiq narsa o'tib ketganda ; u birinchi navbatda PIR sensorining yarmini qoplaydi, bu ikki yarmi o'rtasida ijobiy differentsial o'zgarishga olib keladi. Issiq ob'ekt sezgi maydonini tark etganda, buning aksi sodir bo'ladi, bu sensorning salbiy differentsial o'zgarishini keltirib chiqaradi. Tegishli signal pulsi sensorning chiqish pinini yuqori haydashiga olib keladi.
PIR harakat detektori HC-SR501
Biror kishi hududni tark etgani yoki kirganini yoki yaqinlashganini aniqlashi kerak bo'lgan Arduino loyihalarimizning aksariyati uchun HC-SR501 PIR sensorlari juda yaxshi tanlovdir. Ular kam quvvat va arzon narxga ega, juda bardoshli, linzalarning keng assortimentiga ega, ular bilan aloqa qilish oson va havaskorlar orasida juda mashhur.
HC-SR501 PIR sensori uchta pinga ega: VCC quvvati, chiqish va tuproq (quyidagi rasmda ko'rsatilgan). U o'rnatilgan voltaj regulyatoriga ega, shuning uchun uni 4,5 dan 12 voltgacha bo'lgan har qanday shahar kuchlanishidan quvvatlantirish mumkin, 5V odatda ishlatiladi. Bundan tashqari, u bir nechta sozlamalarga ega. Keling, ularni tekshirib ko'ramiz.
Bir nechta parametrlarni o'rnatish uchun taxtada ikkita potansiyometr mavjud:
Sezuvchanlik - harakatni aniqlash mumkin bo'lgan maksimal masofani belgilaydi. U 3 metrdan 7 metrgacha o'zgarib turadi. Siz olgan haqiqiy masofaga makoningizning joylashuvi ta'sir qilishi mumkin.
Vaqt - Chiqish signali aniqlangandan keyin yuqori bo'lib qoladigan vaqt miqdorini belgilaydi. Minimal - 3 soniya, maksimal - 300 soniya yoki 5 daqiqa.
Nihoyat, taxtada jumper mavjud (ba'zi modellarda jumper lehimlanmagan). Uning ikkita moslashtirish opsiyasi mavjud:
H - ushlab turish/qayta urinish/qayta ishga tushirish. Bu holatda HC-SR501 harakatni aniqlashda davom etar ekan, yuqori mantiqiy darajani chiqarishda davom etadi.
Endi biz PIR sensori qanday ishlashini to'liq tushundik, uni Arduino platamizga ulashimiz mumkin!
PIR sensorlarini mikrokontrollerga ulash juda oddiy. PIR raqamli chiqish vazifasini bajaradi, shuning uchun siz qilishingiz kerak bo'lgan narsa uning chiqish pinining yuqori (harakat aniqlangan) yoki mantiqiy past (aniqlanmagan) holatini kuzatishdir. PIR sensoriga 5V qo'llang va erga ulang. Keyin chiqishni raqamli pin 2 ga ulang.
HC-SR501 to'g'ri ishlashi uchun jumperni H (qayta ishga tushirish) holatiga o'rnatishingiz kerak. Bundan tashqari, "vaqt" potentsiometrini soat sohasi farqli ravishda to'liq aylantirib, vaqtni minimal (3 soniya) ga o'rnatishingiz kerak bo'ladi. Sezuvchanlikni istalgan pozitsiyaga o'rnating yoki ishonchingiz komil bo'lmasa, uni o'rta holatga qo'ying.
Endi siz kodni yuklashga va PIR sensoridan foydalanishga tayyormiz.
nt ledPin = 13; // выбор вывода для светодиода
int inputPin = 8; // выбор входного вывода (для PIR датчика)
int pirState = LOW; // начинаем работу, предполагая, что движение не обнаружено
int val = 0; // переменная для чтения состояния вывода
void setup()
{
pinMode(ledPin, OUTPUT); // настраиваем вывод светодиода, как выход
pinMode(inputPin, INPUT); // настраиваем вывод датчика, как вход
Serial.begin(9600);
}
void loop()
{
val = digitalRead(inputPin); // прочитать входное значение
if (val == HIGH) // проверить, есть ли на входе высокий логический уровень
{
digitalWrite(ledPin, HIGH); // включить светодиод
if (pirState == LOW)
{
Serial.println("Motion detected!"); // напечатать об изменении выхода
pirState = HIGH;
}
}
else
{
digitalWrite(ledPin, LOW); // выключить светодиод
if (pirState == HIGH)
{
Serial.println("Motion ended!"); // напечатать об изменении выхода
pirState = LOW;
} } }