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

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

image001

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


مقدمة

 

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

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();                                // استمر في استقبال الاوامر المرسلة

}

}

 


نصائح

 

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

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

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


تأليف

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

العنوان الإليكتروني: عنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته. 


مراجع

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

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


 

التعليقات   

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

أضف تعليق


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


Go to top