Тема сегодняшнего урока — датчик движения на основе пироэлектрического эффекта (PIR, passive infrared motion sensor). Такие датчики часто используются в охранных системах и в быту для обнаружения движения в помещении. Например, на принципе детектирования движения основано автоматическое включение света в подъезде или в ванной. Пироэлектрические датчики достаточно простого устроены, недороги и неприхотливы в установке и обслуживании.
Когда вы подходите к некоторым местам, где двери автоматически открываются/закрываются, лампочки автоматически включаются/выключаются или эскалатор автоматически активируется, вы когда-нибудь задавали вопрос:
Датчик HC-SR501 PIR-это датчик, который может обнаруживать движение людей (или животных). Он широко используется для обнаружения присутствия людей во многих приложениях(автоматическое вкл/выкл лампочки, отк/закрытие двери, Активация/деактивация эскалатора, обнаружения злоумышленника…)
HC-SR481 также имеет одну перемычку и два потенциометра, которые используются для регулировки настройки датчика.
Как это работает
Датчик HC-SR501 обнаруживает движение на основе изменения инфракрасного излучения от движущегося объекта. Для обнаружения датчиком HC-SR501 объект должен соответствовать двум условиям:
- Движется или дрожит
- Излучает инфракрасным способом.
- Так:
- Если объект движется, но НЕ излучает инфракрасный луч (например, робот или автомобильная игрушка), датчик его НЕ обнаруживает.
- Если объект излучает инфракрасный луч, но НЕ движется (например, человек стоит неподвижно, не двигаясь), датчик его НЕ обнаруживает.
Люди и животные естественным образом излучают инфракрасное излучение.
https://youtu.be/up9DQxsgPhY
1)
Когда в пределах обнаруженного диапазона датчика НЕТ человека (или животного), выходной вывод датчика НАХОДИТСЯ на низком уровне
2)Когда человек (или животное) перемещается в обнаруженный диапазон датчика, выходной вывод датчика изменяется с низкого на высокий (=> движение обнаружено)
3)Когда человек (или животное) выходит за пределы обнаруженного диапазона датчика, выходной вывод датчика изменяется с Высокого на низкий (=> движение завершено )
Пройкты https://create.arduino.cc/projecthub/DKARDU/how-to-make-non-touch-automatic-door-open-close-system-a0cbcf?ref=tag&ref_id=motion%20sensor&offset=8
#include
#include
#include
#include
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
LiquidCrystal_I2C lcd(0x27,20,4);
Servo myservo1;
Servo myservo2;
#define red 13 #define haha 4 int pos1,pos2;
void setup() { Serial.begin(9600);
pinMode(red,OUTPUT);
pinMode(haha,INPUT);
myservo1.attach(7);
myservo2.attach(8);
myservo1.write(90);
myservo2.write(90);
mlx.begin();
lcd.init();
lcd.backlight();
} void loop() { int montion = digitalRead(haha);
if(montion == 1){ Serial.print("made"); Serial.print("\n"); lcd.setCursor(0,0); lcd.print("ObjectTemp:"); lcd.setCursor(13,3); lcd.print("-DKARDU"); kaiguan(); } } void kaiguan(){ int temp_obj = mlx.readObjectTempC(); Serial.print(temp_obj); Serial.print("\n"); if(temp_obj < 31){ lcd.setCursor(0,1); lcd.print(temp_obj); lcd.setCursor(0,2); lcd.print("Not detected,retest!"); }if(temp_obj > 30 && temp_obj <38){ lcd.setCursor(0,1); lcd.print(temp_obj); lcd.setCursor(0,2); lcd.print("body temperature ok "); for(pos1 = 90; pos1 <= 180; pos1 += 1) { myservo1.write(pos1); myservo2.write(180-pos1); delay(15); } delay(5000); for(pos1 = 180; pos1>=90; pos1 -=1) { myservo1.write(pos1); myservo2.write(180-pos1); delay(15); } } if(temp_obj>37){ digitalWrite(red,HIGH); lcd.setCursor(0,1); lcd.print(temp_obj); lcd.setCursor(0,2); lcd.print(" Keep out! "); delay(500); } digitalWrite(red,LOW); }
https://create.arduino.cc/projecthub/tarantula3/pir-sensor-tutorial-with-or-out-arduino-22f168?ref=tag&ref_id=motion%20sensor&offset=3
int LED = 13; // the pin that the LED is atteched to int PIR = 2; // the pin that the sensor is atteched to void setup() { pinMode(LED, OUTPUT); // initalize LED as an output pinMode(PIR, INPUT); // initialize sensor as an input Serial.begin(9600); // initialize serial } void loop(){ if (digitalRead(PIR) == HIGH) { // check if the sensor is HIGH digitalWrite(LED, HIGH); // turn LED ON Serial.println("Motion detected!"); delay(100); // delay 100 milliseconds } else { digitalWrite(LED, LOW); // turn LED OFF Serial.println("Motion stopped!"); delay(100); // delay 100 milliseconds } }
https://create.arduino.cc/projecthub/syn/halloween-pir-proximity-scare-speaker-with-lighting-effects-b4efae?ref=tag&ref_id=motion%20sensor&offset=11
https://create.arduino.cc/projecthub/diy-partners/how-pir-sensor-work-9f76b6?ref=tag&ref_id=motion%20sensor&offset=5
const int BLUE_LED_N1 = 12; const int BLUE_LED_N2 = 11; const int BLUE_LED_N3 = 10; const int BLUE_LED_N4 = 9; const int BLUE_LED_N5 = 8; const int PIR_MODULE = 7; const int LIGHT_SENSOR = 6; const int LEDS_NUMBER = 5; int leds [LEDS_NUMBER] = {BLUE_LED_N1, BLUE_LED_N2, BLUE_LED_N3, BLUE_LED_N4, BLUE_LED_N5}; void setup() { // put your setup code here, to run once: for(int i=0; i Do'stlaringiz bilan baham: |