أنت هنا:إصنعها»أردوينو»مشاريع أردوينو»التحكم عن بعد باستخدام الحاكوم

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

التحكم عن بعد باستخدام الحاكوم

كتبه مشاريع أردوينو 20440 2
آخر تعديل في الأربعاء, 09 كانون1/ديسمبر 2020 12:14
التحكم عن بعد باستخدام الحاكوم
قيم الموضوع
(3 أصوات)

هل اردت يوماً ان تتحكم باشياء اخرى باستخدام الحاكوم مثل فتح واغلاق انوار المنزل او أي اجهزة أخرى؟ إذن، دعنا نتعلم اسهل طرق التحكم بدون الخوض في القوانين والتعقيدات المختلفة خلف التحكم عن بعد.


مقدمة

جميعنا يعلم أهمية التحكم عن بعد بالاجهزة المختلفة ويتمنى ان يضيف تلك الخاصية لاجهزته المفضلة حتى يتحكم فيها عن بعد ولكن يجهل طريقة تنفيذها. حيث نلاحظ تطبيقات مختلفة موجودة حالياً بيننا ومستخدمة بكثرة في حياتنا اليومية مثل فتح واغلاق السيارة باستخدام ريموت، التحكم بجهاز الريسيفر في البيت، التحكم بالاستريو والمسرح المنزلي...

إذا أردت شرحا مفصلا عن فكرة التحكم عن بعد فعليك بالموضوع التالي على الموقع اصنعها:

برمجة الإتصالات - الأشعة تحت الحمراء

ولكن بإختصار بسيط، التحكم عن بعد باستخدام الريموت هو عملية ارسال نبضات (أو قل ذبذبات) متغيرة وسريعة والتي تستقبل من طرف المستقبل الذي من خلاله يمكن تحليل هذه النبضات وتفسيرها. فمثلا، عند الضغط على زر التشغيل فإن الريموت يرسل النبضة التالية: 

image002

 تم الاستعانه بهذه الصورة لغرض الشرح من موقع ladyada.net.

 نلاحظ في الجزء الاول (1) من الموجة يمثل الموجة المرسلة من الريموت عند ضغظ زر التشغيل في الريموت.  حيث نلاحظ ان الموجة تتغير بين الصفر و الثلاثة  او (فتح وتقفيل) بسرعة عالية.  بينما نلاحظ عند رقم 2 وجود موجة ثابتة وهذه الموجة الناتجة عند عدم ضغط أي زر في الريموت.  الجهاز المستقبل يقرا قيمة الصعود والهبوط السريعة ويميز أي زر تم ضغطه.  حسناً مايهمنا هنا هو اننا نريد برمجة وتفسير الاوامر المستقبلة وتنفيذ مهام مختلفة.  

 


تسميات 

بالنسبة للحاكوم أو جهاز التحكم عن بعد فهو ما نعني به Remote control بالإنجليزية و télécommande بالفرنسية.

 


القطع المستخدمة

العربية

الإنجليزية

الفرنسية

الكمية

الصورة

بطاقة اردوينواونو

Arduino uno

1

image003

مستقبل الأشعة تحت الحمراء

IR Receiver Diode

Diode Détecteur infrarouge

 

1

image004

مقاومة بين (200 الى 400 اوم)

Resistor (200- 400)

Resistance (200-400)

1

image005

صمام ثنائ ضوئي

LED

1

image006

 


تحضير مكتبة الحاكوم

 

 

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

المكتبة

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

التعديلات

 

ملاحظة: من الافضل تحميل المكتبة بعد التعديل، لان التعديل لن يتم شرحه في هذا الدرس. المكتبة غير المعدلة لا تعمل مع نسخة  Arduino 1.0 بينما تعمل مع النسخ القديمة بنجاح.

 

بعد تحميل المكتبة، ننشي مجلد جديد تحت مجلد "”Arduino الموجود في المستندات "documents"، و نسميه libraries . يجب الملاحظة أن في مجلد اردوينو سوف نضع الشيفرة التي سوف نعملها ولذلك لابد من وجود المكتبة بداخل نفس المجلد الذي سوف نحفظ بداخله الشيفرة.  بعد ذلك نفك ضغط المكتبة التي حملناها ونضعها داخل مجلد libraries كما هو موضح في الصورة التالية:

 

ملاحظة: مجلد اردوينو عادة يتم انشاءه عند تثبيت الاردوينو، ولكن ان لم يكن موجود لديك فيجب انشاءه.

 

 

image007

 

للتأكد من إضافة المكتبة بنجاح، يمكنك مشاهدة المكتبة المضافة  في برنامج الاردوينو كما هو موضح في الصورة 2.

image008

إذا لم تجد المكتبة مضافة في برنامج الاردوينو ، يجب إضافة المكتبة أيضا في ملف الاردوينو الرئيسي (نفس الملف الذي بداخله برنامج الاردوينو) اتبع ما في الصورة 3.

 

 

image009

بعد ذلك تأكد مره أخرى من وجود المكتبة عن طريق عرض المكتبات المستخدمة في برنامج اردوينو كما فعلنا في الصورة رقم 2.  يحب أن تكون المكتبة موجودة قبل مواصلة الدرس. إن لم تكن موجودة فراجع الخطوات السابقة وأعد تشغيل برنامج الاردوينو حتى تظهر صورة المكتبة في برنامج الاردوينو.

 


الدارة الكهربائية

 بعد الانتهاء من إضافة المكتبة نقوم بتوصيل الاردوينو بمستقبل الأشعة تحت الحمراء كما هو موضح في الصورة التالية:

image010

image011

صورة رقم 4: طريقة مفصلة للتوصيل و ربطها بالاردوينو.

صورة رقم 5: طريقة مبسطة للتوصيل.

 


البرمجة

 

نأتي الآن إلى الخطوة الثالثة وهي برمجة الاردوينو لقراءة القيم المرسلة من الحاكوم.  حيث إن كل حاكوم يرسل قيمة مختلفة لكل زر وهذه القيم تختلف من حاكوم إلى أخر.  لذلك، لا بد أولا من قراءة القيم المرسلة لحاكومك المستخدم.  في هذه التجربة تم استخدام جهازين للتحكم عن بعد: الحاكوم الاول حاكوم تلفاز من شركة صوني "Sony"،  والحاكوم الثاني هو حاكوم تلفاز إنسينيا (Insignia).

 

#include          // استدعاء مكتبة الحاكوم

 

int RECV_PIN = 2;                 //مدخل الانفراريد دايود الى رجل رقم 2 في الاردوينو

IRrecv irrecv(RECV_PIN);    // ضع القراءة القادمة من رجل رقم 2 وارسالها الى دالة داخل المكتبة 

decode_results results;          // resultضع نتائج فك التشفير داخل متغير

 

void setup()

{

  Serial.begin(9600);              //تفعيل التواصل بين الكمبيوتر والاردوينو لقراءة القيم المستقبلة

  irrecv.enableIRIn();            // ابدا في استقبال الاوامر المرسلة من الريموت

}

 

void loop()

{

  if (irrecv.decode(&results)) {                    //اذا تم استقبال اوامر من الريموت وتم تفسير الاوامر

                Serial.println(results.value، DEC);     //  serial monitorاطبع القراءت داخل

                delay(50);                                             // تاخير الدالة المستقبله، سوف يتم شرحها اكثر

                 irrecv.resume();                                  // استمر في استقبال الاوامر المرسلة

 }

}

 

السبب في إضافة أمر التأخير "delay" في الشيفرة، حتى نقلل من القيم المرسلة عند ضغط الزر في الحاكوم.  حيث حاولت تجربة الشيفرة بدون استخدام أمر التأخير، ولاحظت وصول قراءت متتالية عند ضغط زر التشغيل مره واحد فقط.  للتوضيح أكثر، سوف نحول الشيفرة إلى الاردوينو ونجربها بدون وضع أمر التأخير لمشاهدة في “serial monitor” ماذا يحدث عند ضغط زر التشغيل مره واحدة.

 

نلاحظ تم حذف امر التاخيرمن الشيفرة.  (delay)

image012

image013

نلاحظ من الصورة السابقة أن ريموت سوني يرسل نفس الرقم عدة مرات عند ضغط زر التشغيل مرة واحدة فقط.  بينما حاكوم انسينيا يرسل أمر التشغيل مع أمر أخر وهو أن أمر التشغيل أتكرر الضغط علية مع العلم أن الضغط كان ضغطة واحدة فقط. السبب في ذلك أن القراءة جداً سريعة لذلك نضيف أمر التأخير حتى تأتي القراءة مرة واحدة فقط.  حاول زيادة أو نقص التأخير على حسب الحاكوم المستخدم. فمثلاً حاكوم انسينيا يعمل جيداُ مع تأخيرdelay(50)   بينما حاكوم صوني احتجت إلى تأخير أكثر delay(100). لذلك ليس هناك قيمة معينة، بل يعتمد على الحاكوم المستخدم.

image014

 

نلاحظ استقبال رقم واحد عند الضغط على زر التشغيل مرة واحدة فقط، وهذا ما نريده حتى نفسر كل أمر على حدا .

 


تجربة أخرى "إضاءة صمام ضوئي"

 

الخطوة الثانية من المشروع هي إضاءة LED  عند ضغط زر التشغيل في حاكوم صوني.  نبدأ بتوصيل الصمام الضوئي مع الاردوينو كما هو موضح في الصورة التالية:

image015

صورة 11: توصيل الدايود الضوئي مع الاردوينو.

 

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

 

#include

 

int val=LOW                               //valاضافة متغير اسمه

int ledPin = 8;                             //  مخرج الصمام الضوئي في رجل رقم 8 

int RECV_PIN = 2;                    //مدخل الانفراريد دايود الى رجل رقم 2 في الاردوينو

IRrecv irrecv(RECV_PIN);      // ضع القراءة القادمة من رجل رقم 2 وارسالها الى دالة داخل المكتبة

decode_results results;             // resultضع نتائج فك التشفير داخل متغير

 

void setup()

{

  Serial.begin(9600);                  // تفعيل التواصل بين الحاسوب والاردوينو لقراءة القيم المستقبلة

  pinMode(ledPin، OUTPUT);  // اجعل رجل رقم 8 مخرج

  irrecv.enableIRIn();                // ابدا في استقبال الاوامر المرسلة من الريموت

}

 

void loop() {

  if (irrecv.decode(&results)) {              // اذا تم استقبال اوامر من الحاكوم وتم تفسير الاوامر

    Serial.println(results.value، DEC);   // على شكل عشري serial monitorاطبع القراءت داخل

 

 /*اذا كانت القيمة المتسقبله هي 2704*/    

    if(results.value == 2704{

       digitalWrite(ledPin،~val);               // (high or low) اجعل مخرج الصمام الضوئي عكس قيمته الحالية

       val=~val;                                         // (val) اجعل قيمة مخرج الدايود الجديدة مساوية لقيمة

    }

    delay(120);

    irrecv.resume();                                // استمر في استقبال الاوامر المرسلة

}

}

 


نصائح

- جميع ما تم شرحه هنا تم تجربته وتطبيقه، حيث انه يعمل بدون أي مشاكل.

- يمكن استخدام المقحل (الترنزيستور) او المرحل (Relay) او العازل الكهروضوئي (photocoupleur, optocoupler) للتحكم بأجهزة كبيرة تتعامل مع تيار عالي وجهد عالي باستخدام الحاكوم.

- الفكرة المطبقة هنا، فقط لمساعدتكم في التفكير في مشاريع مختلفة يمكن تشغيلها وتنفيذ مهام مختلفة باستخدام الحاكوم. ليس لتشغيل وإقفال الأجهزة فقط ولكن يمكن استخدام جميع الازرار الموجودة على الحاكوم لتطبيق مهام مختلفة.

 

 


تأليف

محمد الحربي (بلاد الحرمين - السعودية) 

{jumi [*3]}


مراجع

http://www.ladyada.net/learn/sensors/ir.html 

http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html 

التعليقات  

Mousa shahhat
0 # Mousa shahhat 2013-07-11 14:03
الحمد لله استطعت تنفيذ المشروع بنجاح اشكر الله اولا واخيرا واشكر صاحب المقال الف شكرررررررررررررر
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
يوسف احمد
0 # يوسف احمد 2015-03-14 22:14
موقع مفيد واتمنى من الجميع دعمه
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث