‏إظهار الرسائل ذات التسميات الحساسات ( مستشعرات ) sensors. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات الحساسات ( مستشعرات ) sensors. إظهار كافة الرسائل

الخميس، 19 ديسمبر 2019

Anti-Theft System نظام حماية ضد السرقة : نظام انذار باستخدام PIR Sensor مع الاردوينو

حساس الحركة PIR Sensor
يعمل الحساس على قياس مقدار التغير في الاشعه تحت الحمراء الصادرة عن الاجسام و في حالتنا الانسان. ولكن لا يقوم الحساس بقياس كمية الأشعة الصادرة من الإنسان بل التغير الحادث لهذه الأشعة، وهكذا يشعر الحساس بوجود حركة.
يتم توصيله إلى الأردوينو كما هو موضح بالجدول :

الطرف (بداية من اليسار) التوصيل
1 GND
2 Output To Arduino
3 VCC
توصيل الدارة
قم بتوصيل الدارة كما هو موضح بالصورة التالية :

سنقوم بكتابه برنامج، بحيث يقوم الحساس بإلتقاط ما إذا كان هناك حركة ام لا، , وعند الكشف عن وجود حركة يقوم بإرسال اشارة إلى الأردوينو الذي يقوم بدوره بتشغيل الـ Buzzer وإضاءة الـ LED للتنبيه.


// led
#define LED 13
// pir
#define INPUT 2
// buzzer
#define SPEAKER 10

int pirFlag = 0;
int val = 0;


void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(INPUT, INPUT);
  pinMode(SPEAKER, OUTPUT);
  Serial.begin(9600);
}


void loop()
{
  val = digitalRead(INPUT);
  // test this val
  if (val == HIGH){
    digitalWrite(LED, HIGH);
    tone(SPEAKER, 160, 300);
    delay(300);
    if (pirFlag == 0){
 Serial.println("Motion detected!");
 pirFlag = 1;
    }
  } 
  else{
    digitalWrite(LED, LOW);
    noTone(SPEAKER);
    if (pirFlag == 1){
 Serial.println("Motion ended!");
 pirFlag = 0;
    }
  }
}

شرح الكود :

في البداية، نقوم بتسمية منافذ الأردوينو المستخدمة في المشروع، من أجل تسهيل عملية التعامل معها. ثم نقوم بالإعلان عن المتغيرات التي سنحتاج استخدامها في البرنامج.
سيتم استخدام المتغير pirFlag لتسجيل حالة الحساس. نقوم بوضع قيمة ابتدائية للحالة وهي 0. والمتغير val يستخدم لتسجيل الإشارة القادمة من الحساس إلى الأردوينو حسب وجود حركة ام لا.
// led
#define LED 13
// pir
#define INPUT 2
// buzzer
#define SPEAKER 10

int pirFlag = 0;
int val = 0;



في الدالة ()setup، قمنا بضبط المنافذ المستخدمة إما مدخله أو مخرجة. يتم ضبط الـ LED والـ Buzzer كمخرج، والمنفذ الموصل مع الـحساس كمدخل.

ويتم تفعيل الاتصال التسلسلي من أجل الطباعة على الشاشة التسلسلية Serial Monitor عند الكشف عن وجود حركة.
void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(INPUT, INPUT);
  pinMode(SPEAKER, OUTPUT);
  Serial.begin(9600);
}


في دالة الـ ()loop، نقوم بقراءة الإشارات القادمة من الحساس واختبارها.
 إذا كانت الإشارة High
اي انه تم الكشف عن وجود حركة، نقوم بتشغيل ال LED والـ Buzzer . ثم نقوم بتحقق من الحالة المسجله في المتغير PirFlag إذا كانت 0 نقوم بطباعة رسالة تدل على وجود حركة على الشاشة التسلسلية وتغير قيمة المتغير pirFlag إلى 1 .

val = digitalRead(INPUT);
  // test this val
  if (val == HIGH){
    digitalWrite(LED, HIGH);
    tone(SPEAKER, 160, 300);
    delay(300);
    if (pirFlag == 0){
 Serial.println("Motion detected!");
 pirFlag = 1;
    }
  } 
في حال كانت الإشاءة القادمة من الحساس LOW اي انه لم يتم الكشف عن وجود حركة، نقوم بإيقاف تشغيل الـ LED و الـ Buzzer . والتحقق من الحالة المسجله لدى الـ pirFlag إذا كانت 1 اي انه كانت هناك حركة وتوقفت فنقوم بالطباعة على الشاشة التسلسلية رساله تدل على وقف الحركة، وتغير قيمة المتغير pirFlag إلى 0 .
else{
    digitalWrite(LED, LOW);
    noTone(SPEAKER);
    if (pirFlag == 1){
 Serial.println("Motion ended!");
 pirFlag = 0;
    }
  }
اذا تم استخدام سنسور التراسونك


int echoPin =8; 
int trigPin =9; 
int Led_Red =7;
 int Led_Green =6; 
int Buzzer=5; 
void setup() { 
Serial.begin (9600);
 pinMode(trigPin, OUTPUT); 
pinMode(echoPin, INPUT); 
pinMode(Led_Red, OUTPUT); 
pinMode(Led_Green, OUTPUT);
 pinMode(Buzzer, OUTPUT); } 
void loop() { 
long duration; //المدة 
long distance;//المسافة 
digitalWrite(trigPin, LOW); 
delay(15); 
digitalWrite(trigPin, HIGH); 
delay(10); 
digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH); 
distance= duration*0.034/2; 
Serial.print(distance); 
Serial.println(" cm"); 
if (distance < 10) {
 digitalWrite(Led_Red,HIGH); digitalWrite(Buzzer,HIGH); digitalWrite(Led_Green,LOW); }
 else { digitalWrite(Led_Red,LOW); digitalWrite(Buzzer,LOW); digitalWrite(Led_Green,HIGH);} 
delay(500); }


Circuit Connections:-
Trigger pin to pin 12
Echo pin to pin 13
piezo Buzzer to pin 8
led to pin 11
Ground pin of piezo and sensor to ground
Note:- if you are using a 9v battery i found out that you
have to connect the Vcc pin of the sensor to 5v ,while if
you are using your computer as a power source you have to
connect the Vcc pin to the Vin of your arduino

تستخدم الدالة tone() لتوليد اشارات يكمننا من سماعها عن
 طريق سماعه او Buzzer

tone(SPEAKER, 160, 300);

noTone(SPEAKER);
tone(المدة الزمنية , التردد ,اسم الرجل)
noTone(اسم الرجل)

الأحد، 15 أبريل 2018

مستشعرات ( حساسات ) الإقتراب Proximity Sensors - الجزء الأول

proximity sensor او حساس الإقتراب هو مستشعر ( حساس ) قادر على اكتشاف وجود الأجسام القريبة دون أي اتصال بالجسم المراد الإحساس به أو المراد إختبار موقعه .

طريقة عمل مستشعر الإقتراب :

غالباً ما يطلق حساس الإقتراب حقل كهرومغناطيسي أو حزمة من الإشعاع الكهرومغناطيسي (الأشعة تحت الحمراء ، على سبيل المثال) ، ويبحث عن تغييرات في المجال أو إشارة العودة. غالبًا ما يشار إلى الجسم الذي يتم استشعاره على أنه هدف مستشعر التقارب ( sensor's target ).
يختلف نوع حساس الإقتراب على حسب نوع الهدف المراد الإحساس به , على سبيل المثال مستشعر القرب بالسعة أو المستشعر الكهروضوئي capacitive proximity sensor or photoelectric sensor مناسبًا لهدف بلاستيكي ؛ أما الهدف المعدنى يحتاج مستشعر القرب الحثي inductive proximity sensor .
لكل حساس مسافة معينة يستطيع خلالها الإحساس بالأجسام , و المسافة القصوى التى يستطيع مستشعر الإقتراب الإحساس بها تسمى "المدى الأسمى" " nominal range " , فى بعض الأنواع من الحساسات يمكنك التحكم فى هذا المدى الأسمى و البعض الأخر يكون هذا المدى ثابت لا يمكنك التحكم به .

********************************

لمتابعة المدونة أكتب ايميلك فى تبويب أشترك معنا لإرسال ما يتم نشره على المدونة أول باول إلى إيميلك