درس إحترافي عدد 3: التحكّم عن بعد بإستعمال الأشعّة تحت الحمراء

يمكن أن ننجز مشروع و نتحكّم فيه بإستعمال جهاز تحكّم عن بعد بتقنيّة الأشعّة تحت الحمراء (Télécommande infra-rouge)

ليكون هناك تحكّم عن بعد يجب توفير دارة الباث (جهاز تحكّم عن بعد) ودارة المتقبّل (مشروع يحتوي على أردوينو و مكوّن لتقبّل أشعّة تحت الحمراء

1-جهاز تحكّم عن بعد

يمكن إستعما أي جهاز تحكّم عن بعد(خاصة بالتلفاز أو لعبة إلكترونيّة…)
سنستعمل في تجاربنا هذاالجهاز التحكّم المتوفّر في موقع

مهما كان الزرالمضغوط عليه فإن الجهاز التحكّم عن بعد سرسل أشعّة تحت الحمراء في شكل رموز

2- متقبّل للأشعّة تحت الحمراء (Capteur infrarouge)

هناك عدّة أنواع من مكوّنات المتقبّلة للأشعّة تحت الحمراء (متكوّنة من قطبين أو 3 أقطاب)
سنعتمد في هذا الدرس على النوع الثّاني

  1. القطب الأوّل يركّب في الموجب
  2. القطب الثّاني يركّب في السّالب
  3. القطب الثالث يركّب في أحد المنافذ للوحة أردوينو

الدّارة الكهربائيّة البسيطة

لقد قمنا بإنجاز دارة كهربائيّة المتكوّنة من جهاز تحكّم عن بعد للأشعة تحت الحمراء و مكوّن لتقبّل الأشعّة تحت الحمراء وصمام المشع لتحكّم فيه
الهدف الأوّل من هذه التجربة قراءة الرموز المرسلة من جهاز تحكم عن بعد عند الضغط على الأزرار
و الهدف الثاني إستغلال رمز لأي زر لإضاءة الصمام المشع و زر الأحمر لإطفاء الصمام المشع

العديد من المكوّنات الإلكترونيّة يجب البحث في الأنترنات عن المكتبات الخاصة بها لتوفير العشارات من الأسطر و ربح للوقت و غالبا هذه المكتبات تكون مجرّبة و بدون أخطاء

برنامج جهاز التحكّم

#include <IRremote.h>
IRrecv rec(2); //here put receiver pin
decode_results res;
void setup() {
Serial.begin(9600);
rec.enableIRIn();
pinMode(13,OUTPUT);
digitalWrite(13,LOW);}
void loop() {
if (rec.decode(&res)){
Serial.println(res.value );
if(res.value==0x707005FA){
digitalWrite(13,HIGH);}
else if(res.value==0x7070857A){
digitalWrite(13,LOW); }
rec.resume();
}
}

ملاحظة بالنسبة للسطر الثاني IRrecv rec(2) يجب التعديل على المنفذ و تغيير رقم المنفذ الذي تمّ إدخال فيه القطب الثالث من المكوّن المتلقّي للأشعة تحت الحمراء و حسب دارتنا إستعملت المنفذ 2

تمّت إضافة Serial.println(res.value ) لإخراج الرموز جهاز تحكّم عن بعد حسب الأزرر
و هذه بعض الأكواد المتحصّل عليها

زر رقم 016593103
زر رقم 116582903
زر رقم 216615543
زر رقم 316599223
زر رقم 416591063
زر رقم 516623703
زر رقم 616607383
زر رقم 716586983
زر رقم 816619623
زر رقم 916603303
زر الأحمر إغلاق16580863
زر التشغيل16621663

شاهد هذا الفيديو أكثر توضيحا

الآن نعدّل على البرنامج لكي عند الضغط على الزر 1 يضيء الصمام المشع و يصبح كالأتي
الصمام المشع في المنفذ رقم 3

#include <IRremote.h>
IRrecv rec(2); //here put receiver pin
decode_results res;
void setup() {
Serial.begin(9600);
rec.enableIRIn();
pinMode(3,OUTPUT);
}
void loop() {
if (rec.decode(&res)){
Serial.println(res.value );
if(res.value==16582903){
digitalWrite(3,HIGH);}

rec.resume();
}
}

شاهد هذا الفيديو لأكثر تفاصيل

و هذا رابط لهذا التمرين على موقع tinkercad

تمرين ثاني

تعديل على الدّارة السابقة و لكن في هذه المرّة تحتوي على 9 صمامات مشعّة و مكرك كهربائي مثل هذه الدّارة الكهربائيّة

نريد
عند الضغط على الزر رقم 1 يضيء الصمام المشع رقم 1
عند الضغط على الزر رقم 2 يضيء الصمام المشع رقم 2
عند الضغط على الزر رقم 3 يضيء الصمام المشع رقم 3
عند الضغط على الزر رقم 4 يضيء الصمام المشع رقم 4
عند الضغط على الزر رقم 5 يضيء الصمام المشع رقم 5
عند الضغط على الزر رقم 6 يضيء الصمام المشع رقم6
عند الضغط على الزر رقم 7 يضيء الصمام المشع رقم 7
عند الضغط على الزر رقم 8 يضيء الصمام المشع رقم 8
عند الضغط على الزر رقم 9 يضيء الصمام المشع رقم 9
عند الضغط على الزر رقم 0 يشتغل المحرّك
عند الضغط على الزر الأحمر تنطفئ كل الصمامات المشعّة و بتوقّف المحرّك عن الدواران
وعند الضغط على الزر التشغيل play كل العناصر تشتغل

شاهد هذا الفيديو لأكثر توضيح

حاول أن تنجز التمرين قبل مشاهدة هذا الإصلاح

#include <IRremote.h>
IRrecv rec(2); //here put receiver pin
decode_results res;
void setup() {
Serial.begin(9600);
rec.enableIRIn();
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(13,OUTPUT);
}
void loop() {
if (rec.decode(&res)){
Serial.println(res.value );//delay(1000);
if(res.value==16593103){
digitalWrite(13,HIGH);}
else if(res.value==16582903){digitalWrite(3,HIGH);}
else if(res.value==16615543){digitalWrite(4,HIGH);}
else if(res.value==16599223){digitalWrite(5,HIGH);}
else if(res.value==16591063){digitalWrite(6,HIGH);}
else if(res.value==16623703){digitalWrite(7,HIGH);}
else if(res.value==16607383){digitalWrite(8,HIGH);}
else if(res.value==16586983){digitalWrite(9,HIGH);}
else if(res.value==16619623){digitalWrite(10,HIGH);}
else if(res.value==16603303){digitalWrite(11,HIGH);}//16621663
else if(res.value==16621663){
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(13,HIGH);
}
else if(res.value==16580863){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(13,LOW);
}
rec.resume();
}
}

شاهد هذا التمرين على موقع Tinkercad

أي إستفسار أو إقتراح حول هذا التمرين الرجاء إضغط هنا