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

مبتدئ

image_pdf

في هذا الدرس سوف نتعلم كيفية عمل نظام إنذار بسيط جدًا باستعمال 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;
}

X
تم إضافة المنتج إلى السلة بنجاح