الجمعة، 15 أغسطس، 2014

تحكم بالوحة المفاتيح بواسطة الأردوينو


                      Arduino Keyboard PS2



هذه المقالة هي جزء من مبادرة عرب دوينو Arabduino
للتعرف على المبادرة و كيف تشاركنا بمقالاتك و تجاربك من خلال الرابط 



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

المتطلبات السابقة :

- معرفة بمبادئ برمجة الاردوينو
-معرفة وظيفة ال Interrupt pins  في الاردوينو (مداخل المقاطعة).

القطع و الادوات:
1- PS2 Keyboard (كيبورد بمدخل ال PS2)
2- اردوينو Uno (يمكن استخدام Mega او Nano الخ.).
3- اسلاك توصيل نوع "Male-Female".
4- قطاعة اسلاك.
5- لابتوب للبرمجة 
6- اذا لم تستطع الحصول على PS2 Keyboard يمكنك شراء USB to PS2 converter  و هي قطعة تحول مدخل الUSB  الى PS2 ثم توصيلها مع الكيبورد للمباشرة بالعمل 




USB to PS2 converter


نبدأ الآن بشرح آلية عمل لوحة المفاتيح :



هذه صورة عمودية لذكرمدخل ال PS2  و هو يتكون من 6 مخارج اربعة منها فقط الفعالة و اثنين مهملين.
نبدأ  بالمدخلين رقم (4) و (3)، وكما نرى في الصورة هما خطي تغذية الطاقة حيث سيتم توصيل هذه المداخل على ال 5فولت و ال GND في الارديونو حيث (4) ---< 5 فولت و (3) ---< Gnd

ثم لدينا ال Clock  على مخرج رقم (5) ووظيفة هذا المخرج هي تنبيه الجهاز ببدأ استقبال اشارة الكيبورد،  بحيث يتحول من High  الى Low لبدأ استقبال اشارة من ال Data 
اما ال Data فهي المخرج الاساسي الذي يُخرج كل Askii لحرف مشفر بالنظام الثنائي (01).
اما كل من 2 و 6 فهما غير مستخدمين في لوحة المفاتيح.

الخطوات:
1- نبدأ بازالة المحيط المعدني لمخرج الPS2 باستخدام القطاعة:



2- بعد ازالة المحيط المعدني، ارتأيت افضل طريقة للتوصيل هي بسحب اسلاك ذات شعرة واحدة حول كل Pin  و تثبيت الاسلاك بلاصق كما فعلت انا في الصورة ، لكن بالطبع يمكنك استخدام اسلاك Male –Female.





الآن ناتي للاردوينو، هناك مكتبة مخصصة للتعامل مع اتصال ال PS2 حيث يمكن من خلالها التعامل مع كل من لوحة المفاتيح او الماوس و يمكن تحميلها لاضافتها من هذا الرابط :

http://www.pjrc.com/teensy/arduino_libraries/PS2Keyboard.zip

و بعد تحميل المكتبة يمكنكم اضافتها عن طريق Sketch >> Import Library >> Add Library



بعد اضافة المكتبة اصبح الاردوينو جاهز للتوصيلات و البرمجة قبل البدأ بالخطوة الثالثة علينا معرفة ال interrupt pins  في نسخة الاردوينو الموجودة معك ففي الUno يوجد interrupt Pins  عدد 2 هما D2  و D3 ، و اذا كنت تستخدم اردوينو Mega فيمكنك استخدام 2  او 3 او 18 او 19 او 20 او 21.


- نبدأ في البرمجة بعد توصيل الاسلاك كلاتي 

Data >> D4
Clock >> D3
VCC >> 5V
Gnd >> Gnd

البرنامج :
// this code was written by: Zaid Haymoor @ 9/2/2013
//Code Written For An Artical On Genotronex Blog 
//and arabduino Initiative 
//http://www.genotronex.com/p/blog-page_6281.html

#include <PS2Keyboard.h>

#define KBD_CLK_PIN 3
#define KBD_DATA_PIN 4
PS2Keyboard keyboard;

void setup ( )
{
keyboard.begin(KBD_DATA_PIN);
Serial.begin(9600);
//delay(1000);
}

void loop ()
{
if(keyboard.available()) {
// reading the "extra" bits is optional
byte extra = keyboard.read_extra(); // must read extra before reading the character byte
char c = keyboard.read();
Serial.print(c); //lets print last input char to our serial monitor
}
}


ستظهر الان القراءات و النتائج على قارئ السيريال عند الضغط على اي زر في الكيبورد 

الكاتب : زيد حيمور 
البلد : المملكة الأردنية الهاشمية 

1 التعليقات :

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.