ملخص سريع
يعلمك هذا البرنامج التعليمي لـ Arduino كيفية استخدام وحدة استقبال الأشعة تحت الحمراء KY-022 للتحكم في LED باستخدام أي جهاز تحكم عن بعد يعمل بالأشعة تحت الحمراء، ثم ترقية نفس الدائرة لتشغيل محرك سيرفو SG90 كآلية باب. إنه يغطي فك تشفير إشارة IR، ورسم خرائط الأزرار عن بعد، وبناء نظام باب مؤازر يتم التحكم فيه بواسطة IR.
هل تريد التحكم في الأجهزة الحقيقية باستخدام جهاز تحكم عن بعد يشبه جهاز التلفزيون؟ في هذا البرنامج التعليمي عن بعد من Arduino IR، ستقوم ببناء وحدة تحكم LED لاسلكية باستخدام جهاز تحكم عن بعد بالأشعة تحت الحمراء ووحدة استقبال KY-022، ثم ترقية نفس الدائرة لتشغيل باب يعمل بمحرك مؤازر. ينقسم المشروع إلى مرحلتين حتى تتمكن من التعلم بالسرعة التي تناسبك: أولاً مفتاح تبديل LED بسيط، ثم باب ميكانيكي يفتح ويغلق عند الطلب.
يعتمد هذا البرنامج التعليمي على آلية الباب من موقعنا قفل الباب بكلمة مرور أردوينو مشروع. إذا قمت بالفعل ببناء مزلاج السيرفو هذا، فيمكنك إعادة استخدامه هنا وتبديل التحكم في لوحة المفاتيح بجهاز التحكم عن بعد بالأشعة تحت الحمراء. إذا كنت جديدًا في مجال محركات السيرفو، فلدينا محرك سيرفو مع عصا التحكم وبرنامج تعليمي OLED هو دليل رفيق عظيم.
ما الذي ستبنيه
- وحدة تحكم LED فقط (الجزء 1): اضغط على زر واحد عن بعد لتبديل مؤشر LED الموجود على الدبوس D8. وهذا يعلم فك تشفير الأشعة تحت الحمراء، وتكرار التصفية، والإخراج الرقمي الأساسي.
- ترقية الباب LED + المؤازر (الجزء 2): أضف زرين آخرين عن بعد لفتح وإغلاق باب مؤازر صغير على الدبوس D9. يعكس مؤشر LED حالة الباب تلقائيًا (تشغيل عند فتحه، وإيقاف تشغيله عند إغلاقه).
كيف يعمل النظام
تساعدك معرفة كيفية عمل سلسلة الإشارة على تصحيح المشكلات وتكييف المشروع لاحقًا. إليك ما يحدث في كل مرة تضغط فيها على زر في جهاز التحكم عن بعد:
- جهاز التحكم عن بعد يرسل إشارة الأشعة تحت الحمراء. عندما تضغط على زر، يومض جهاز التحكم عن بعد بمصباح LED بالأشعة تحت الحمراء بموجة حاملة معدلة 38 كيلو هرتز. يرسل كل زر الكود الخاص به المحدد بواسطة بروتوكول NEC (أو ما شابه).
- بعد ذلك، يقوم جهاز الاستقبال KY-022 بإزالة تشكيل الإشارة. تقوم وحدة استقبال الأشعة تحت الحمراء بإزالة الموجة الحاملة 38 كيلو هرتز وتخرج قطارًا نبضيًا رقميًا نظيفًا على طرف OUT الخاص بها، والذي يتصل بمنفذ Arduino D2.
- تقوم مكتبة IRremote بفك تشفير الإطار. تلتقط مقاطعة المكتبة توقيت النبض، وتحدد البروتوكول، وتكشف ما تم فك تشفيره
commandبايت والكاملdecodedRawDataكلمة. كما يقوم أيضًا بوضع علامات على الإطارات المتكررة التي يرسلها جهاز التحكم عن بعد أثناء الضغط باستمرار على الزر. - يعمل Arduino بناءً على الأمر الذي تم فك تشفيره. يقوم البرنامج الخاص بك بعد ذلك بمقارنة الأمر المستلم بالقيم المخزنة. في تصميم LED فقط، يؤدي التطابق إلى تبديل مؤشر LED. في ترقية السيرفو، يقوم أمرا OPEN وCLOSE بنقل السيرفو إلى الزاوية المستهدفة بينما يتبع مؤشر LED حالة الباب.
نظرًا لأن كلا المرحلتين تشتركان في نفس البنية، فإن الترقية من LED فقط إلى LED + سيرفو تعني فقط إضافة الأسلاك وتعيين زرين إضافيين عن بعد.
المكونات المطلوبة
يسرد الجدول أدناه كل جزء تحتاجه. إذا كان أحد المكونات لديه علامة اختيار في عمود LED فقط، فهذا يكفي للجزء 1. أضف الأجزاء المتبقية عند الانتقال إلى ترقية باب السيرفو في الجزء 2.
| المكوّن | مصابيح LED فقط (الجزء الأول) | ترقية السيرفو (الجزء الثاني) | الملاحظات |
|---|---|---|---|
| اردوينو أونو (أو نانو) | نعم | نعم | تعمل أي لوحة تعتمد على ATmega328 |
| وحدة استقبال الأشعة تحت الحمراء (KY-022 / VS1838B / TSOP1838) | نعم | نعم | وحدة 3 دبوس؛ OUT يذهب إلى D2 |
| جهاز التحكم عن بعد بالأشعة تحت الحمراء (جهاز التحكم عن بعد) | نعم | نعم | تعمل معظم أجهزة التحكم عن بعد الخاصة ببروتوكول NEC |
| الصمام (أي لون) | نعم | نعم | فتحة قياسية بقطر 5 مم |
| مقاومة 220 اوم | نعم | نعم | المقاوم الذي يحد من التيار لـ LED |
| اللوح وأسلاك التوصيل | نعم | نعم | نصف حجم اللوح يكفي |
| أجهزة مايكرو (SG90 أو MG90S) | No | نعم | SG90 للأبواب خفيفة الوزن |
| مصدر طاقة خارجي 5 فولت (1 أمبير أو أكثر) | No | نعم | يمنع براونوتس. لا تقم بتشغيل السيرفو من Arduino 5 V |
| مزلاج الباب أو الآلية | No | نعم | الطباعة ثلاثية الأبعاد أو الأسلاك أو الورق المقوى |
تلميح الطاقة: تسحب محركات السيرفو طفرات تيار كبيرة عندما تبدأ في التحرك، لذا قم دائمًا بتشغيل السيرفو من مصدر منفصل بجهد 5 فولت وقم بتوصيل مزود الإمداد GND بـ Arduino GND (أرضية مشتركة). بدون هذه الأرضية المشتركة، ستشاهد عمليات إعادة التعيين والارتعاش واستقبال الأشعة تحت الحمراء غير الموثوق به.
الجزء 1 - Arduino IR Remote LED (إصدار LED فقط)
مخطط الدائرة - أسلاك LED فقط
لبناء الدائرة، قم بتوصيل مستقبل الأشعة تحت الحمراء وLED إلى Arduino كما هو موضح في الجدول والبرنامج البياني أدناه. يتصل دبوس OUT لجهاز استقبال IR بـ D2، وهو الإعداد الافتراضي لمكتبة IRremote. وفي الوقت نفسه، يتم توصيل الأنود LED من خلال مقاومة 220 أوم إلى D8.
| المكوّن | دبوس / المحطة | يتصل بـ |
|---|---|---|
| جهاز استقبال الأشعة تحت الحمراء (KY-022) | خارج (ق) | اردوينو D2 |
| جهاز استقبال الأشعة تحت الحمراء (KY-022) | سي سي (+) | أردوينو 5 فولت |
| جهاز استقبال الأشعة تحت الحمراء (KY-022) | الارض (-) | شبكة GND للأردوينو |
| الأنود LED (الساق الطويلة) | الأنود (+) | مقاومة 220 أوم ثم إلى Arduino D8 |
| كاثود LED (ساق قصيرة) | الكاثود (-) | شبكة GND للأردوينو |
نصيحة للمبتدئين - قطبية LED: الجزء الأطول من LED هو الأنود (إيجابي)، في حين أن الساق الأقصر هي الكاثود (سلبي، وغالبًا ما يتم تمييزه بحافة مسطحة على جسم LED). يمكن أن يستمر المقاوم 220 أوم على جانبي LED لأنه يحد فقط من التيار لحماية LED ودبوس Arduino. إذا لم يضيء مؤشر LED، فحاول قلبه.

مخطط توصيلات LED فقط: جهاز استقبال IR KY-022 متصل بـ D2، LED بمقاومة 220 أوم متصلة بـ D8 على Arduino Uno.
الخطوة 1 - تثبيت مكتبة IRremote
أولاً، افتح Arduino IDE وانتقل إلى الأدوات > إدارة المكتبات. بحث عن IRremote بواسطة Arduino-IRremote وقم بتثبيت أحدث إصدار. يستخدم هذا البرنامج التعليمي IRremote 3.x+ API مع IRremote.hpp و IrReceiver.begin().
تتعامل المكتبة مع جميع التوقيتات ذات المستوى المنخفض واكتشاف البروتوكولات نيابةً عنك. بمجرد التثبيت، يمكنك تضمينه وتهيئة جهاز الاستقبال بخطين:
#include <IRremote.hpp>
// ...
IrReceiver.begin(pin, ENABLE_LED_FEEDBACK);
لمزيد من المرجع، مستودع IRremote GitHub البرنامجي يحتوي على وثائق كاملة إذا كنت ترغب في استكشاف الميزات المتقدمة.
الخطوة 2 - مسح جهاز التحكم عن بعد (ماسح ضوئي لرمز الأشعة تحت الحمراء)
يرسل كل جهاز تحكم عن بعد رموزًا مختلفة، حتى لو كان جهازا التحكم عن بعد يبدوان متطابقين. قبل كتابة البرنامج النهائي، تحتاج إلى مسح جهاز التحكم عن بعد الخاص بك حتى تعرف الرمز الذي يرسله كل زر. قيم المثال في الكود النهائي (0x45, 0x46، وما إلى ذلك) من المؤكد تقريبًا أنه لن يتطابق مع جهاز التحكم عن بعد الخاص بك.
للبدء، قم بتحميل رسم الماسح الضوئي أدناه، ثم افتحه Serial Monitor عند 115200 باود، واضغط على كل زر بعيد عدة مرات. نحن نستخدم 115200 باود (بدلاً من 9600 الشائع) لأن مكتبة IRremote تطبع مخرجات مفصلة تستفيد من السرعة الأعلى.
// IR Code Scanner (IRremote >= 3.x)
#include <IRremote.hpp>
const uint8_t IR_RECEIVE_PIN = 2;
void setup(){
Serial.begin(115200);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
Serial.println(F("IR Scanner ready. Press remote buttons..."));
}
void loop(){
if(IrReceiver.decode()){
IrReceiver.printIRResultShort(&Serial); // concise one-liner
Serial.print(F("Protocol=")); Serial.print(IrReceiver.decodedIRData.protocol);
Serial.print(F(" Command=0x"));Serial.print(IrReceiver.decodedIRData.command, HEX);
Serial.print(F(" RAW=0x")); Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
IrReceiver.resume();
}
}
ما الذي تبحث عنه: كل ضغطة زر تطبع أ Command القيمة و أ RAW قيمة. مع معظم أجهزة التحكم عن بعد لمجموعة بروتوكولات NEC، فإن command البايت قصير ومستقر عبر المطابع. اكتبها. إذا لاحظت ذلك command يتغير بشكل عشوائي أو يظهر 0x00، استخدم الإصدار 32 بت الكامل decodedRawData (RAW) بدلاً من ذلك. تتوفر قيمة RAW دائمًا كقيمة احتياطية بغض النظر عن البروتوكول.
اختر زرًا واحدًا لتبديل LED. إذا كنت تخطط لإجراء ترقية السيرفو لاحقًا، فاختر أيضًا أزرارًا منفصلة للفتح والإغلاق. اكتب القيم الثلاث قبل المتابعة.
الخطوة 3 - رمز LED عن بعد لـ Arduino IR (البرنامج النهائي لـ LED فقط)
التالي، استبدال CMD_LED_TOGGLE بقيمة الأمر التي وجدتها في الماسح الضوئي. إذا كان بايت أمر جهاز التحكم عن بعد الخاص بك غير موثوق به، فقم بإلغاء التعليق على سطر RAW واستخدمه RAW_LED_TOGGLE بدلاً من.
// IR Code Scanner (IRremote >= 3.x)
#include <IRremote.hpp>
const uint8_t IR_RECEIVE_PIN = 2; // IR OUT → D2
const uint8_t LED_PIN = 8; // LED → 220Ω → D8
// Replace with your scanned value:
const uint32_t CMD_LED_TOGGLE = 0x45; // example NEC command
// Alternative if command is unstable:
// const uint32_t RAW_LED_TOGGLE = 0x00FFA25D; // example 32-bit RAW
bool ledOn = false;
void setLED(bool on){
ledOn = on;
digitalWrite(LED_PIN, ledOn ? HIGH : LOW);
}
void setup(){
pinMode(LED_PIN, OUTPUT);
setLED(false);
Serial.begin(115200);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
Serial.println(F("LED-only mode. Press your toggle key."));
}
void loop(){
if(!IrReceiver.decode()) return;
if(!(IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT)){
uint32_t cmd = IrReceiver.decodedIRData.command;
uint32_t raw = IrReceiver.decodedIRData.decodedRawData;
if (cmd == CMD_LED_TOGGLE) setLED(!ledOn);
// else if (raw == RAW_LED_TOGGLE) setLED(!ledOn); // use if needed
Serial.print(F("[IR] cmd=0x")); Serial.print(cmd, HEX);
Serial.print(F(" raw=0x")); Serial.println(raw, HEX);
}
IrReceiver.resume();
}
كيف يعمل رمز LED فقط
إليك ما يفعله كل جزء من البرنامج، حتى تتمكن من تعديله بثقة:
- IRDATA_FLAGS_IS_REPEAT: عند الضغط باستمرار على زر على جهاز التحكم عن بعد الذي يعمل بالأشعة تحت الحمراء، يرسل جهاز التحكم عن بعد باستمرار إطارات متكررة على فترات زمنية قصيرة. بدون التصفية، فإن ضغطة واحدة طويلة ستؤدي إلى تبديل مؤشر LED عدة مرات. الخط
if(!(IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT))يتجاهل هذه الإطارات المتكررة لذا يتم احتساب الضغطة الأولى فقط. - الأمر مقابل decodedRawData: إن
commandيحتوي الحقل على رمز الزر القصير الخاص بالبروتوكول (عادةً 1 بايت لـ NEC). الdecodedRawDataيحتوي الحقل على الإطار الخام الكامل 32 بت بما في ذلك العنوان والأمر. يستخدمcommandعندما يكون مستقرًا لجهاز التحكم عن بعد الخاص بك. وإلا ارجع إلىdecodedRawDataifcommandإرجاع قيم غير متناسقة أو صفر. - وظيفة المساعد setLED(): مركزية منطق LED في
setLED()يعني أن كل جزء من البرنامج يغير LED بنفس الطريقة. في ترقية السيرفو، يجب أن يعكس مؤشر LED حالة الباب، لذا فإن هذا الأمر أكثر أهمية. عن طريق الاتصالsetLED()في كل مكان بدلا منdigitalWrite()مباشرة، يمكنك تجنب الأخطاء حيث يخرج مؤشر LED والحالة الداخلية عن المزامنة. - استبدال قيمة المثال: القيمة
0x45هو مجرد مثال. افتح رسم الماسح الضوئي من الخطوة 2، ثم اضغط على الزر الذي تريد استخدامه، واستبدله0x45معCommandالقيمة السداسية الموضحة في Serial Monitor. إذا كنت بحاجة إلى النسخة الاحتياطية من RAW، فقم بإلغاء التعليق على سطر RAW واستبدله0x00FFA25Dبقيمة RAW الممسوحة ضوئيًا.
الجزء 2 - الترقية إلى Arduino IR Remote LED + Servo Door
الآن قم بتوسيع البنية: احتفظ بكل منطق LED من الجزء 1، وأضف محركًا مؤازرًا، وقم بتعيين مفتاحين بعيدين آخرين (فتح وإغلاق). سيظهر مؤشر LED حالة الباب تلقائيًا: تشغيل يعني أن الباب مفتوح، وإيقاف يعني أنه مغلق.
الأسلاك السيرفو (إضافة إلى دائرة LED فقط)
أولاً، احتفظ بجميع أسلاك جهاز استقبال الأشعة تحت الحمراء وأسلاك LED من الجزء 1. ثم قم بإضافة التوصيلات السيرفو المدرجة في الجدول أدناه.
| المكوّن | دبوس / سلك | يتصل بـ |
|---|---|---|
| سيرفو (SG90) | إشارة (برتقالي/أصفر) | اردوينو D9 (PWM) |
| سيرفو (SG90) | VCC (أحمر) | مصدر خارجي 5 فولت (+) |
| سيرفو (SG90) | GND (بني/أسود) | مصدر خارجي 5 فولت (-) |
| العرض الخارجي GND | GND | اردوينو GND (أرضية مشتركة) |
لماذا نستخدم مصدر خارجي 5 فولت؟ يمكن لمنظم Arduino 5 V الموجود على اللوحة توفير حوالي 500 مللي أمبير فقط. يسحب محرك سيرفو 200-700 مللي أمبير في التشغيل العادي وحتى أعلى أثناء التوقف. إذا قمت بسحب هذا القدر من التيار من خلال Arduino، فإنه يتسبب في انخفاض الجهد الذي يؤدي إلى إعادة ضبط اللوحة، وإفساد استقبال الأشعة تحت الحمراء، وجعل اهتزاز السيرفو. يعمل مصدر منفصل 5 فولت 1 أمبير (أو أعلى) على حل كل هذه المشكلات.
لماذا هناك حاجة إلى أرضية مشتركة: يحتاج Arduino والإمداد الخارجي أيضًا إلى مشاركة اتصال أرضي. بدونه، لن يكون لسلك إشارة السيرفو جهد مرجعي ولن يستجيب السيرفو أو سيتصرف بشكل متقطع.

مخطط الأسلاك الكامل لترقية باب LED + المؤازر: KY-022 على D2، LED على D8، SG90 servo على D9 مدعوم بمصدر خارجي 5 فولت مع أرضية مشتركة لـ Arduino.
الكود المشترك — LED + باب مؤازر
قبل التحميل، استبدل CMD_LED_TOGGLE, CMD_OPENو CMD_CLOSE بالقيم الثلاث التي سجلتها في خطوة الماسح الضوئي. إذا كان جهاز التحكم عن بعد الخاص بك يحتاج إلى نسخة RAW الاحتياطية، فقم بإلغاء تعليق تلك السطور واملأ القيم الخاصة بك.
رسم مشترك كامل
// Arduino IR remote LED + Servo Door (IRremote >= 3.x)
#include <IRremote.hpp>
#include <Servo.h>
const uint8_t IR_RECEIVE_PIN = 2; // IR OUT → D2
const uint8_t LED_PIN = 8; // LED → 220Ω → D8
const uint8_t SERVO_PIN = 9; // Servo signal → D9
// === Replace with your scanned values ===
const uint32_t CMD_LED_TOGGLE = 0x45; // LED toggle
const uint32_t CMD_OPEN = 0x46; // door open
const uint32_t CMD_CLOSE = 0x47; // door close
// RAW fallback (uncomment if needed):
// const uint32_t RAW_LED_TOGGLE = 0x00FFA25D;
// const uint32_t RAW_OPEN = 0x00FF629D;
// const uint32_t RAW_CLOSE = 0x00FF22DD;
const int OPEN_ANGLE = 20; // tune to your linkage
const int CLOSE_ANGLE = 90;
const int STEP_DEG = 2;
const int STEP_MS = 10;
Servo door;
bool ledOn = false;
int curAngle = CLOSE_ANGLE;
void setLED(bool on){
ledOn = on;
digitalWrite(LED_PIN, on ? HIGH : LOW);
}
void moveServoTo(int target){
int dir = (target > curAngle) ? 1 : -1;
while(curAngle != target){
curAngle += dir * STEP_DEG;
if((dir > 0 && curAngle > target) || (dir < 0 && curAngle < target)) curAngle = target;
door.write(curAngle);
delay(STEP_MS);
}
}
void setDoorOpen(bool open){
moveServoTo(open ? OPEN_ANGLE : CLOSE_ANGLE);
setLED(open); // LED shows door status: ON=open, OFF=closed
}
void setup(){
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
setLED(false);
door.attach(SERVO_PIN);
door.write(CLOSE_ANGLE);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
Serial.println(F("LED + Servo mode. Use TOGGLE / OPEN / CLOSE keys."));
}
void loop(){
if(!IrReceiver.decode()) return;
if(!(IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT)){
uint32_t cmd = IrReceiver.decodedIRData.command;
uint32_t raw = IrReceiver.decodedIRData.decodedRawData;
if (cmd == CMD_LED_TOGGLE) setLED(!ledOn);
else if (cmd == CMD_OPEN) setDoorOpen(true);
else if (cmd == CMD_CLOSE) setDoorOpen(false);
// RAW fallback:
// if (raw == RAW_LED_TOGGLE) setLED(!ledOn);
// if (raw == RAW_OPEN) setDoorOpen(true);
// if (raw == RAW_CLOSE) setDoorOpen(false);
}
IrReceiver.resume();
}
كيف يعمل رمز الباب المؤازر
يضيف البرنامج المدمج ثلاث ميزات أعلى إصدار LED فقط. كل واحدة منها تحل مشكلة معينة تواجهها عند تحريك آلية مادية:
- OPEN_ANGLE وCLOSE_ANGLE: يحدد هذان الثابتان مدى دوران السيرفو في الوضعين المفتوح والمغلق. القيم الافتراضية (20 و90 درجة) هي مجرد نقاط بداية. قم بضبطها لتتناسب مع وصلة الباب المحددة الخاصة بك. اختبر مع فصل السيرفو أولاً، ثم قم بتوصيل البوق واضبطه حتى يفتح المزلاج بالكامل ويغلق بالكامل.
- حركة الخطوات الصغيرة (moveServoTo): بدلاً من القفز مباشرة إلى زاوية الهدف، يتحرك المؤازر بزيادات قدرها درجتين مع تأخير قدره 10 مللي ثانية بين الخطوات. تعمل هذه الحركة التدريجية على تقليل الضغط على تروس السيرفو، وتقليل ارتفاع التيار، كما تجعل حركة الباب أكثر هدوءًا وسلاسة. إذا كنت تفضل حركة أسرع، قم بزيادة
STEP_DEGأو قم بتقليلها للحصول على حركة أكثر سلاسة. - حالة باب المرايا LED: إن
setDoorOpen()استدعاءات الوظائفsetLED()بعد تحريك السيرفو، يكون مؤشر LED دائمًا متزامنًا مع موضع الباب. ON يعني أن الباب مفتوح، و OFF يعني أنه مغلق. ومع ذلك، لا يزال بإمكانك تبديل مؤشر LED بشكل مستقل باستخدام زر تبديل LED إذا كنت تريد ذلك.
كيفية اختبار وضبط البناء
اتبع تسلسل الاختبار هذا لعرض المشروع بأمان والتعرف على المشكلات مبكرًا:
تسلسل الاختبار خطوة بخطوة
- اختبر الماسح الضوئي أولاً. قم بتحميل رسم الماسح الضوئي من الخطوة 2. افتح Serial Monitor على الرقم 115200. ثم اضغط على كل زر بعيد وتأكد من رؤية إخراج ثابت. إذا لم يظهر أي شيء، فتحقق من الأسلاك وتأكد أيضًا من أن مخرج مستقبل الأشعة تحت الحمراء يذهب إلى D2.
- التحقق من وظيفة LED فقط. قم بتحميل رسم LED فقط من الخطوة 3. اضغط على زر التبديل الذي اخترته. يجب أن يتم تشغيل مؤشر LED الموجود في D8 بالضغطة الأولى ثم ينطفئ بالضغطة الثانية. شاهد أيضًا Serial Monitor لقيم الأوامر التي تم فك تشفيرها للتأكد من مطابقتها لتوقعاتك.
- اختبر السيرفو بدون آلية الباب. قبل توصيل السيرفو بأي باب أو مزلاج، قم بتحميل البرنامج المدمج واختبره مع إبقاء السيرفو مفككة على المكتب. ثم اضغط على فتح وإغلاق للتأكد من أن السيرفو يدور بسلاسة بين الزاويتين. بهذه الطريقة تتجنب التروس المجردة إذا كانت الزوايا خاطئة.
- ضبط الزوايا المفتوحة والمغلقة. يُعدِّل
OPEN_ANGLEوCLOSE_ANGLEفي الكود حتى يصل ذراع السيرفو إلى المواضع الصحيحة للمزلاج. أعد التحميل والاختبار بعد كل تغيير. للحصول على أفضل النتائج، قم بتغيير 5-10 درجات في المرة الواحدة. - إرفاق الآلية والاختبار النهائي. أخيرًا، قم بتركيب البوق المؤازر على مزلاج الباب الخاص بك. قم بتشغيل البرنامج المدمج وتأكد من أن الباب يفتح ويغلق وأن مؤشر LED يعكس الحالة بشكل صحيح.
استكشاف الأخطاء وإصلاحها
إذا كان هناك شيء لا يعمل، فتحقق من هذه المشكلات الشائعة:
المشكلات والإصلاحات الشائعة
| مشكلة | السبب المحتمل | حل |
|---|---|---|
| لا يظهر أي إخراج تسلسلي | معدل باود خاطئ أو خطأ في الأسلاك | اضبط جهاز المراقبة التسلسلية على 115200. تأكد من أن جهاز استقبال IR متصل بـ D2 وأن الوحدة تحتوي على 5 فولت وGND. |
| الزر البعيد لا يعمل بشكل موثوق | إشارة ضعيفة أو المسافة أو الزاوية | قم بتوجيه الريموت مباشرة نحو جهاز الاستقبال من مسافة 3 أمتار. قم بإزالة مصادر الأشعة تحت الحمراء الساطعة (ضوء الشمس، وبعض المصابيح) التي يمكن أن تزيد من التحميل على جهاز الاستقبال. |
| تتغير قيمة الأمر بشكل غير متوقع | عدم تطابق البروتوكول أو الإشارة المزعجة | استخدم الخام (decodedRawData) احتياطي بدلا من command. تستخدم بعض أجهزة التحكم عن بعد بروتوكولات حيث يختلف بايت الأمر. |
| لا تبديل الصمام | قيمة الأمر خاطئة في التعليمات البرمجية | افتح رسم الماسح الضوئي، واضغط على الزر، وقارن القيمة السداسية بما لديك في رسم LED فقط. تحقق أيضًا من قطبية LED (اقلبها إذا لزم الأمر). |
| تؤدي الضغطات الطويلة إلى التبديل المتكرر | كرر التصفية المفقودة أو لا تعمل | تأكد من IRDATA_FLAGS_IS_REPEAT الاختيار موجود في الحلقة الخاصة بك. لا تقم بإزالة علامة الاختيار. |
| اهتزاز السيرفو أو الطنين | طاقة غير كافية أو إشارة صاخبة | قم بتشغيل السيرفو من مصدر خارجي بجهد 5 فولت مع أرضية مشتركة. تأكد من أن سلك الإشارة قصير وليس بالقرب من كابلات الطاقة. |
| السيرفو لا تتحرك على الإطلاق | دبوس خاطئ، لا توجد طاقة، أو أمر خاطئ | تحقق من أن سلك الإشارة موجود على D9. تأكد من تشغيل مصدر الإمداد الخارجي وأن GND متصل بـ Arduino GND. تحقق من تطابق قيم الأمر OPEN وCLOSE مع مخرجات الماسح الضوئي لديك. |
| يتحرك السيرفو في الاتجاه الخاطئ | تم تبديل OPEN_ANGLE وCLOSE_ANGLE | مبادلة قيم OPEN_ANGLE و CLOSE_ANGLE في الكود ثم إعادة التحميل |
| يتم إعادة تعيين اردوينو عندما يتحرك السيرفو | يسحب السيرفو الكثير من التيار من Arduino | هذه هي المشكلة الأكثر شيوعا. استخدم مصدرًا خارجيًا بجهد 5 فولت للسيرفو. لا يستطيع طرف Arduino 5 V التعامل مع طفرات التيار السيرفو. |
| يتوقف IR عن العمل بعد إضافة السيرفو | ضجيج مصدر الطاقة أو تعارض الموقت | أضف مكثف 100 فائق التوهج عبر خطوط طاقة السيرفو. تأكد من أن IRremote يستخدم Timer 2 (الإعداد الافتراضي في Uno) وأن Servo يستخدم Timer 1. |
الأسئلة الشائعة (FAQ)
KY-022 عبارة عن لوحة فرعية صغيرة تحمل جهاز استقبال الأشعة تحت الحمراء VS1838B أو TSOP1838. فهو يزيل إشارات الأشعة تحت الحمراء بتردد 38 كيلو هرتز ويخرج إشارة رقمية نظيفة يمكن لاردوينو قراءتها. تعرض الوحدة ثلاثة منافذ: الإشارة (OUT)، وVCC، وGND. إنها واحدة من وحدات استقبال الأشعة تحت الحمراء الأكثر شيوعًا في مجموعات Arduino المبتدئة.
في هذا البرنامج التعليمي، يتصل طرف OUT لجهاز استقبال الأشعة تحت الحمراء بالدبوس الرقمي D2. تستخدم مكتبة IRremote مقاطعة جهاز ضبط الوقت، وليس دبوسًا محددًا، لذا يمكنك تغيير دبوس الاستلام إذا لزم الأمر. ومع ذلك، D2 هو الإعداد الافتراضي التقليدي لمعظم أمثلة IRremote.
نعم. يعمل أي جهاز تحكم عن بعد يعمل بالأشعة تحت الحمراء يستخدم موجة حاملة 38 كيلو هرتز مع جهاز الاستقبال KY-022. تعمل جميع أجهزة التحكم عن بعد الخاصة بالتلفزيون وأجهزة التحكم عن بعد الخاصة بمكيفات الهواء وأجهزة التحكم عن بعد العامة. ما عليك سوى تشغيل رسم الماسح الضوئي للعثور على رموز الأزرار لجهاز التحكم عن بُعد الخاص بك.
إن command يحتوي الحقل على رمز الزر الذي تم فك تشفيره بواسطة البروتوكول، وعادة ما يكون بايت واحد لأجهزة التحكم عن بعد الخاصة بشركة NEC. ال decodedRawData يحتوي الحقل على الإطار الخام الكامل 32 بت بما في ذلك بتات العنوان. يستخدم command عندما يعطي نتائج مستقرة. يستخدم decodedRawData كاحتياطي إذا command يُرجع صفرًا أو يختلف بين المطابع.
في معظم الحالات، يعني هذا أن مرشح إطار التكرار مفقود أو لا يعمل بشكل صحيح. تأكد من أن الحلقة الخاصة بك تتضمن IRDATA_FLAGS_IS_REPEAT يفحص. تأكد أيضًا من أنك تستخدم الإصدار 3.x من IRremote أو إصدار أحدث، حيث تغيرت واجهة برمجة التطبيقات (API) بشكل ملحوظ عن الإصدار 2.x.
أسئلة حول الطاقة والسيرفو والمكتبة
نعم. قم بمسح الأزرار الإضافية ضوئيًا باستخدام رسم الماسح الضوئي، وقم بتعيين كل منها إلى دبوس مختلف، وأضف المزيد if الظروف في الحلقة. تتدرج البنية الموجودة في هذا البرنامج التعليمي بسهولة إلى مخرجات متعددة.
لا، فتصميم LED فقط يستهلك تيارًا قليلًا للغاية ويعمل بشكل جيد من طاقة USB وحدها. ومع ذلك، من أجل ترقية محرك سيرفو في الجزء 2، يلزم توفر مصدر خارجي بجهد 5 فولت.
غالبًا ما يكون الارتعاش المؤازر مشكلة في الطاقة. إذا كان السيرفو تشترك في سكة Arduino 5 V، فإن تقلبات الجهد تتسبب في اهتزاز السيرفو. استخدم مصدرًا خارجيًا مخصصًا بقدرة 5 فولت مع أرضية مشتركة. تساعد أيضًا إضافة مكثف إلكتروليتي 100 فائق التوهج عبر قضبان طاقة السيرفو.
يعد هذا المشروع نقطة انطلاق جيدة لأتمتة المنزل البسيطة القائمة على الأشعة تحت الحمراء. على سبيل المثال، يمكنك إضافة مرحلات للتحكم في الأضواء أو المراوح أو الأجهزة الأخرى. للحصول على مشروع أكثر تقدمًا للتحكم في الباب، راجع موقعنا قفل الباب بكلمة مرور أردوينو برنامج تعليمي يضيف مصادقة لوحة المفاتيح إلى آلية باب السيرفوة نفسها.
في Arduino Uno، تستخدم مكتبة IRremote Timer 2 وتستخدم مكتبة Servo Timer 1، لذلك لا تتعارضان بشكل افتراضي. إذا كنت تستخدم لوحة مختلفة أو إصدارًا مختلفًا من مكتبة IR، فتحقق من تعيينات المؤقت في وثائق المكتبة. ومع ذلك، في اللوحات التي تحتوي على مؤقتات أقل، قد تحتاج إلى استخدام مكتبة سيرفو برمجية بدلاً من ذلك.
التنزيلات والموارد
رمز من هذا البرنامج التعليمي
- رسم الماسح الضوئي - استخدم الماسح الضوئي لرمز الأشعة تحت الحمراء في الخطوة 2 أعلاه للعثور على رموز أزرار جهاز التحكم عن بعد.
- رسم LED فقط - يقوم رمز LED النهائي فقط في الخطوة 3 بتبديل مؤشر LED الموجود على D8 باستخدام زر بعيد واحد.
- مجتمعة LED + رسم السيرفو - يتحكم الكود المدمج الكامل في الجزء 2 في كل من مؤشر LED وباب السيرفو.
دروس OmArTronics ذات الصلة
- قفل الباب بكلمة مرور Arduino مع لوحة مفاتيح وشاشة LCD - آلية الباب الأصلية التي يعتمد عليها هذا المشروع. يستخدم لوحة مفاتيح وشاشة LCD بدلاً من جهاز التحكم عن بعد بالأشعة تحت الحمراء.
- التحكم في محرك سيرفو باستخدام عصا التحكم وشاشة OLED - تعرف على المزيد حول التحكم المؤازر من خلال الإدخال التناظري والتعليقات المرئية.
- بناء خط يتبع الروبوت — مشروع الروبوتات الذي يجمع بين أجهزة الاستشعار والتحكم في المحركات.
الموارد الخارجية
المشاريع القادمة المقترحة
الآن بعد أن أصبح بإمكانك فك تشفير إشارات الأشعة تحت الحمراء والتحكم في المخرجات، إليك بعض الطرق لتوسيع المشروع:
- أضف وحدة ترحيل للتحكم في مصباح أو مروحة تعمل بالتيار الكهربائي باستخدام نفس جهاز التحكم عن بعد الذي يعمل بالأشعة تحت الحمراء.
- أضف شاشة LCD أو OLED تعرض حالة الباب الحالية وآخر أمر تم استلامه.
- قم بدمج إدخال الأشعة تحت الحمراء عن بعد مع قفل باب لوحة المفاتيح لأمان المصادقة المزدوجة.
- قم بتسجيل أوامر IR على بطاقة SD لإنشاء سجل وصول بسيط لبابك.
الخاتمة
في هذا البرنامج التعليمي عن بعد لـ Arduino IR، قمت ببناء نظام تحكم لاسلكي على مرحلتين. أعطاك الجزء الأول مفتاح تبديل LED بسيط يتم التحكم فيه بواسطة جهاز تحكم عن بعد يعمل بالأشعة تحت الحمراء وجهاز استقبال KY-022، ويعلمك كيفية مسح رموز الأزرار، وتصفية الإطارات المتكررة، وفك تشفير إشارات الأشعة تحت الحمراء باستخدام مكتبة IRremote. قام الجزء الثاني بترقية نفس الدائرة بباب يعمل بمحرك مؤازر، حيث يعكس مؤشر LED تلقائيًا ما إذا كان الباب مفتوحًا أم مغلقًا.
يعني النهج المعياري هنا أنه يمكنك إعادة استخدام نفس بنية التحكم عن بعد بالأشعة تحت الحمراء في أي مشروع يحتاج إلى إدخال زر لاسلكي. سواء أضفت المزيد من مصابيح LED أو المرحلات أو المحركات، فسيظل منطق المسح وفك التشفير كما هو.
إذا كنت تريد أن تأخذ آلية الباب إلى أبعد من ذلك، تحقق من قفل الباب بكلمة مرور أردوينو للأمان المعتمد على لوحة المفاتيح، أو استكشف موقعنا محرك سيرفو مع البرنامج التعليمي عصا التحكم لمزيد من الطرق للتحكم في حركة السيرفو باستخدام Arduino.