نظام إنذار باستخدام الأشعة تحت الحمراء

في هذا الدرس سوف نتعلم كيفية عمل نظام إنذار بسيط جدًا باستعمال Infrared LED و برمجة كود الأدروينو الخاص بها. هذا الدرس رائع جدا للتدريب على استعمال الأدروينو للمبتدئين.

نظام-إنذار-بسيط-بإستعمال-الأردوينو-و-ا

المكونات

arduino uno r3

Arduino Uno

IR LED Emitter 5mm

IR LED Emitter

photodiode 5mm

Photo Diode (Receiver)

100k ohm

100 K Ohm Resistor

220 Ω resistor

220 Ohm Resistor

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

Piezo sounder

Piezo Sounder

ملحوظة :

في هذا الدرس، قمنا بإستعمال TCRT5000 module، والذي يحتوي على ترانزيستور للأشعة الحمراء بالإضافة إلى Infrared LED. وقمنا بإضافة Infrared LED خارجية لتقوية انبعاث الأشعة تحت الحمراء.

نظام-إنذار-بسيط-بإستعمال-الأردوينو-و-ا

كما يمكنك أن تستعمل دايود أشعة تحت الحمراء / ترانزيستور و لكن تأكد من وضع لاصق (أسود) حول الدايود أو الترانزيستور حتى لا يتأثر بالجوانب كما بالصورة.

نظام-إنذار-بسيط-بإستعمال-الأردوينو-و-ا

تصميم لوح التجارب

قم بتوصيل الدائرة كما هو موضح بالصورة التالية :

alert-system

 

alert-system

شرح الدارة

تقوم الدارة ببعث ضوء IR من خلال الـ LEDs الموضوعه، وعندما يتواجد سطح عاكس (تقريبا أي سطح عدا الاسطح السوداء فهي تمتص الضوء و لا تنعكس الا بجزء صغير)  تنعكس الأشعة تحت الحمراء لتقوم بالتأثير على الدايود أو الترانيستور وعندما يعمل الدايود يقوم بخفض الجهد نتيجة أن انخفاض مقاومته بشكل ملحوظ و يمكن من خلال الأردوينو قياس قيمة الفولت عن طريق استعمال Analog Read .

alert-system

برمجة الاردوينو :

قم بكتابة الكود كما هو موضح أدناه :

#define SENSOR A0
#define BUZZER 12

void setup() {
  pinMode(SENSOR, INPUT);
  pinMode(BUZZER,OUTPUT);
}

void loop() {
  if(readIR(600) == true)
    beep();
  // else
    // doNothing
}

void beep(void) {
  tone(BUZZER, 1000);
  delay(200);
  noTone(BUZZER);
  delay(200);
}

bool readIR(int refernceValue) {
  int x = analogRead(SENSOR);
  if(refernceValue > x)
    return true;
  else
    return false;
}

شرح الكود:

في البداية، نقوم بتسمية المدخل A0 بإسم SENSOR ، والمنفذ رقم 12 بإسم BUZZER . وهكذا يصبح الكود أسهل وأفضل في الفهم والتعامل.

داخل الدالة ()setup، نقوم بتعريف الـ SENSOR كمدخل، والـ BUZZER كمخرج.

#define SENSOR A0
#define BUZZER 12

void setup() {
  pinMode(SENSOR, INPUT);
  pinMode(BUZZER,OUTPUT);
}

في دالة ()loop، نقوم بالتحقق ما إذا كانت القراءة أقل من 600، فإذا تحقق الشرط نقوم بإصدار إنذار.

void loop() {
  if(readIR(600) == true)
    beep();
}

نقوم بإنشاء الدالة ()beep، لتوليد الإنذار. حيث تقوم الدالة بإصدار نغمة ذو تردد 1000 هيرتز، وتتوقف لمدة 200 ميلي ثانية بين النغمات.

void beep(void) {
  tone(BUZZER, 1000);
  delay(200);
  noTone(BUZZER);
  delay(200);
}

نقوم بإنشاء الدالة readIR، والتي تقوم بقراءة قيمة الحساس وإذا كانت القيمة أصغر من القيمة refernce value فإن الدالة تقوم بإرجاع قيمة صحيحة true وإلا تقوم بإرجاع قيمة خاطئ false .

bool readIR(int refernceValue) {
  int x = analogRead(SENSOR);
  if(refernceValue > x)
    return true;
  else
    return false;
}




نظام انذار الحريق

أنظمة الكشف عن الحريق تلعب دورا هاما في الحماية و السلامة من الحرائق. في هذا المشروع، سنقوم ببناء نظام إنذار الحريق بإستخدام الأردوينو و مستشعر كاشف اللهب.

arduino-fire-alarm-system

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

flame sensor

حساس كاشف اللهب (Flame Sensor)

Piezo sounder

Piezo sounder

small size breadboard 170 colors

  لوح تجارب صغير (small size breadboard)

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

Female-Male Jumper Wires

 اسلاك توصيل أنثى/ذكر (Jumper Wires Female/male)

في هذا المشروع، نحن بحاجة إلى جهاز إستشعار الأشعة تحت الحمراء استنادا على مستشعر اللهب (Flame Sensor) للكشف عن ضوء النار، و إعطاء إشارة إلى الاردوينو لتفعيل جهاز الإنذار (Buzzer) .
هناك نوعان من أجهزة استشعار اللهب إما رقمية أو تناظرية، ولكن يوجد بعض الأجهزة تحتوي على النوعين (رقمية و تناظرية) .

arduino-fire-alarm-system

زاوية الرؤية:
زاوية الرؤية 60 درجة، و بالتالي فإنة توجية رؤية المستشعر أمر مهم للغاية في تصاميم المشاريع الخاصة بك.

arduino-fire-alarm-system

الطول الموجي لمستشعر اللهب:
وحدة مستشعر اللهب لها قدرة بالكشف عن الموجات من 760nm إلى 1100nm .

ملاحظة : يتم إستخدام مستشعر اللهب للكشف عن الحريق دون أي حماية للمستشعر من الحريق، يرجى ترك مسافة بينه وبين النار لتجنب أي ضرر.

تصميم لوحة التجارب:

قم بتوصيل الدائرة كما هو موضح بالصورة التالية :

arduino-fire-alarm-system

برمجة الأردوينو

قم برفع البرنامج التالي إلى متحكم الأردوينو:

int Buzzer = 13; // Use the onboard Uno LED
int isFlamePin = 7; // This is our input pin
int isFlame = HIGH; // HIGH MEANS NO FLAME

void setup() {
 pinMode(Buzzer, OUTPUT);
 pinMode(isFlamePin, INPUT);
 Serial.begin(9600);
 
}

void loop() {
 isFlame = digitalRead(isFlamePin);
 if (isFlame== LOW)
 {
 Serial.println("FLAME, FLAME, FLAME");
 digitalWrite(Buzzer, HIGH);
 }
 else
 {
 Serial.println("no flame");
 digitalWrite(Buzzer, LOW);
 }
}

لمحة عن الكود:

في جزء الـ Loop يتم بإستمرار قراءة  قيمة مستشعر اللهب :

 isFlame = digitalRead(isFlamePin);

إذا كانت القيمة تساوي LOW سيتم تفعيل جهاز الإنذار و عكس ذلك يتم إلغاء التفعيل :

 if (isFlame== LOW)
 {
 Serial.println("FLAME, FLAME, FLAME");
 digitalWrite(Buzzer, HIGH);
 }
 else
 {
 Serial.println("no flame");
 digitalWrite(Buzzer, LOW);
 }

التحقق من عملية الكشف عن اللهب و ضبط الحساسية :

قم بفتح النافذة التسلسلية (Serial Monitor) على برنامج الأردوينو الخاص بك . قم بتشغيل نار على بعد مسافة من المستشعر ، سوف تلاحظ التغييرعلى النافذة التسلسلية كما هو موضح بالصورة أدناه. في حالة الكشف عن الحريق ستلاحظ تشغيل LED   مؤشر الحريق ، وإذا تم غير ذلك قم بضبط الحساسية للمستشعر.

arduino-fire-alarm-system