الدرس 21/31: استخدام جهاز التحكم عن بعد بالأشعة تحت الحمراء مع أردوينو | SunFounder Robojax
مقدمة
في هذا الدرس، نستكشف العالم الرائع للاتصال بالأشعة تحت الحمراء (IR) من خلال بناء مشروع يفك تشفير الإشارات من جهاز تحكم عن بعد قياسي باستخدام أردوينو. يتيح لك هذا المشروع اكتشاف الزر الذي يتم الضغط عليه في جهاز التحكم عن بعد بالأشعة تحت الحمراء وتشغيل إجراءات وفقًا لذلك، مثل تشغيل الجرس. القدرة على التفاعل مع أجهزة التحكم عن بعد بالأشعة تحت الحمراء تفتح مجموعة واسعة من التطبيقات العملية، من أتمتة المنزل البسيطة إلى أنظمة التحكم المخصصة.
إليك بعض الأفكار الملهمة لما يمكنك بناؤه باستخدام هذه التقنية:
- استبدال جهاز التحكم عن بعد الشامل: أنشئ جهاز تحكم مخصصًا لتلفزيونك أو نظام الصوت أو الأجهزة الأخرى التي تعمل بالأشعة تحت الحمراء.
- أتمتة المنزل: تحكم في الأضواء أو المراوح أو الأجهزة الأخرى بالضغط على زر في جهاز تحكم قياسي.
- مشاريع تفاعلية: قم ببناء نظام أمان يطلق إنذارًا عند الضغط على زر معين.
- التحكم في الروبوتات: استخدم جهاز تحكم بالأشعة تحت الحمراء للتحكم لاسلكيًا في حركة الروبوت وإجراءاته.
- وسائل المساعدة على الوصول: طوّر جهاز تحكم بسيطًا بأزرار كبيرة للأفراد ذوي القدرة المحدودة على الحركة.
المكونات والأجهزة
تم بناء هذا المشروع حول عدد قليل من المكونات البسيطة، وكلها عادةً ما تكون مضمنة في مجموعات المبتدئين مثل مجموعة SunFounder ثلاثية في واحدة. ستحتاج إلى:
- لوحة أردوينو (مثل Uno)
- وحدة مستقبل الأشعة تحت الحمراء (مثل TSOP38238 أو ما شابه ذلك)
- جهاز تحكم عن بعد قياسي بالأشعة تحت الحمراء (مع بطارية CR2025)
- جرس سلبي
- أسلاك توصيل ولوحة تجارب
دليل التوصيل
إليك مخطط التوصيل البسيط لهذا المشروع. مستقبل الأشعة تحت الحمراء هو المكون الأساسي. عندما تنظر إلى السطح المنحني للمستقبل، يكون تخطيط الأطراف كما يلي:
- الطرف الأيمن: قم بتوصيله بمنفذ 5V في الأردوينو.
- الطرف الأوسط: قم بتوصيله بمنفذ GND في الأردوينو.
- الطرف الأيسر (الإشارة): قم بتوصيله بالمنفذ الرقمي 11 في الأردوينو.
بالإضافة إلى ذلك، بالنسبة لجزء الإجراء في المشروع، قم بتوصيل الطرف الموجب (الأطول) للجرس بالمنفذ الرقمي 2 والطرف الآخر بمنفذ GND.
شرح الكود
يعتمد هذا المشروع على مكتبة IRremote للتعامل مع المهمة المعقدة لفك تشفير إشارات الأشعة تحت الحمراء. تم تنظيم الكود ليتعلم أولاً الرموز المحددة من جهاز التحكم الخاص بك ثم يستخدمها لتشغيل الإجراءات. دعنا نقسم الأجزاء القابلة للتخصيص من قبل المستخدم.
أولاً، نحدد المنفذ الذي يتصل به سلك إشارة مستقبل الأشعة تحت الحمراء. هذا تكوين حاسم يجب أن يتطابق مع توصيلك الفعلي.
const int IR_RECEIVE_PIN = 11; // تحديد رقم المنفذ لمستشعر الأشعة تحت الحمراء
في دالة setup()، يتم تهيئة مستقبل الأشعة تحت الحمراء باستخدام المنفذ الذي حددناه للتو. هذا يخبر المكتبة ببدء الاستماع للإشارات على هذا المنفذ.
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // بدء تشغيل مستقبل الأشعة تحت الحمراء
جوهر منطق اتخاذ الإجراء موجود في loop(). يتحقق الكود مما إذا تم الضغط على زر ويقوم بفك تشفيره. دالة decodeKeyValue() هي دالة مخصصة تترجم الرمز السداسي العشري الخام من جهاز التحكم إلى سلسلة نصية قابلة للقراءة مثل "POWER" أو "MUTE". هذا هو الجزء الذي ستقوم بتعديله ليتوافق مع جهاز التحكم الخاص بك. يحدد الكود المثال buzzerPin ويقوم بتشغيله فقط عند الضغط على زر "POWER".
const int buzzerPin = 2; // تحديد المنفذ للجرس
// ... داخل loop()
if (decodedValue == "POWER") {
digitalWrite(buzzerPin, HIGH); // تشغيل الجرس
} else {
digitalWrite(buzzerPin, LOW); // إيقاف تشغيل الجرس
}
طريقة الاستخدام: دالة decodeKeyValue() هي المفتاح لتخصيص هذا المشروع. لاستخدامها مع جهاز التحكم الخاص بك، يجب أولاً تشغيل الكود مع فتح الشاشة التسلسلية. اضغط على كل زر في جهاز التحكم ولاحظ القيمة السداسية العشرية المطبوعة لكل زر. ثم قم بتحديث عبارة switch في دالة decodeKeyValue() لربط تلك القيم بأسماء ذات معنى. يمكنك بعد ذلك استخدام هذه الأسماء في عبارات if الخاصة بك لتشغيل إجراءات مختلفة، تمامًا كما يفعل المثال مع زر "POWER".
المشروع المباشر والعرض التوضيحي
بمجرد رفع الكود، افتح الشاشة التسلسلية بمعدل باود 9600. وجّه جهاز التحكم الخاص بك نحو مستقبل الأشعة تحت الحمراء واضغط على زر. ستعرض الشاشة التسلسلية اسم المفتاح المقابل (مثل "POWER" أو "MUTE"). لرؤية الإجراء قيد التنفيذ، اضغط على زر "POWER". ستسمع الجرس يعمل. الضغط على أي زر آخر، مثل "MUTE"، سيؤدي إلى إيقاف تشغيل الجرس. هذا يوضح مفهومًا بسيطًا لكنه قوي: استخدام جهاز تحكم عن بعد لتشغيل مخرجات رقمية على الأردوينو الخاص بك.
الفصول
- [00:00] مقدمة إلى التحكم عن بعد بالأشعة تحت الحمراء باستخدام أردوينو
- [01:25] نظرة عامة على مستقبل ومرسل الأشعة تحت الحمراء
- [02:24] فهم وحدة مستقبل الأشعة تحت الحمراء والتوصيلات
- [03:31] تثبيت مكتبة IRremote
- [04:22] فتح وشرح كود فك التشفير
- [07:29] رفع الكود واختبار مفاتيح جهاز التحكم
- [08:41] إضافة إجراء: التحكم في الجرس
- [10:37] معاينة مشاريع الأشعة تحت الحمراء القادمة
/*
Lesson 21/31: Decoding Infrared from remote
Get this code and watch video Download and resource page https://robojax.com/RJT604
YouTube video https://www.youtube.com/watch?v=EAlqaVy8fYY
*/
#include <IRremote.h>
const int IR_RECEIVE_PIN = 11; // Define the pin number for the IR Sensor
String lastDecodedValue = ""; // Variable to store the last decoded value
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud rate
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Start the IR receiver
}
void loop() {
if (IrReceiver.decode()) {
String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command);
if (decodedValue != "ERROR") {
Serial.println(decodedValue);
delay(100);
}
IrReceiver.resume(); // Enable receiving of the next value
}
}
String decodeKeyValue(long result)
{
switch(result){
case 0x16:
return "0";
case 0xC:
return "1";
case 0x18:
return "2";
case 0x5E:
return "3";
case 0x8:
return "4";
case 0x1C:
return "5";
case 0x5A:
return "6";
case 0x42:
return "7";
case 0x52:
return "8";
case 0x4A:
return "9";
case 0x9:
return "+";
case 0x15:
return "-";
case 0x7:
return "EQ";
case 0xD:
return "U/SD";
case 0x19:
return "CYCLE";
case 0x44:
return "PLAY/PAUSE";
case 0x43:
return "FORWARD";
case 0x40:
return "BACKWARD";
case 0x45:
return "POWER";
case 0x47:
return "MUTE";
case 0x46:
return "MODE";
case 0x0:
return "ERROR";
default :
return "ERROR";
}
}
Common Course Links
Common Course Files
الأشياء التي قد تحتاجها
-
أمازون
-
إي باي
الموارد والمراجع
لا توجد موارد حتى الآن.
ملفات📁
مكتبات أردوينو (ملف مضغوط)
-
شفرة المصدر لمجموعة تعلم السيارة الذكية 3 في 1 من صن فاوندر
3in1-kit-main-v2.zip12.80 MB