يعد التفاعل بين Arduino ووحدة تحكم PlayStation 2 مثيرًا للاهتمام بشكل لا يصدق لمشاريع الروبوتات والأتمتة. وحدة التحكم اللاسلكية PS2 هي وحدة تحكم متعددة الاستخدامات وبأسعار معقولة جدًا، قادرة على تقديم مجموعة متنوعة من المدخلات التناظرية والرقمية. على الرغم من أنها قد تبدو مهمة معقدة من حيث المبدأ، إلا أن دمج هذين النظامين أمر ميسور التكلفة تمامًا بفضل المكتبات والأدوات المختلفة التي تم تطويرها بالفعل لتسهيل العملية.
تعد وحدة التحكم PS2 اللاسلكية خيارًا مريحًا واقتصاديًا للتحكم في الروبوتات أو مركبات الدفع الرباعي أو أي نوع من المشاريع التي تتطلب جهاز تحكم عن بعد سلسًا وعمليًا. يعد استخدام وحدة التحكم هذه مع Arduino حلاً يختاره العديد من الهواة، فهو ليس رخيصًا فحسب، بل يوفر تجربة تحكم عالية الدقة بفضل عصايه التناظرية ومجموعة من 4 زرًا.
مزايا استخدام وحدة تحكم PS2 مع اردوينو
واحدة من المزايا الرئيسية لـ تحكم ps2 هل هذا هو عليه لاسلكي، والذي يسمح لك بتزويد مشاريعك بالتنقل دون قيود الكابلات. بالإضافة إلى ذلك، فهو مريح جدًا في الاستخدام بفضل تصميمه المريح المُحسّن لجلسات الألعاب الطويلة، مما يجعله مثاليًا للتحكم في الروبوتات أو الأجهزة الأخرى لفترات طويلة دون التأثير على الدقة أو الاستجابة.
جانب آخر مهم هو التكلفة. يمكن العثور على وحدة تحكم PS2 المستنسخة بأقل من 10 يورو. بهذا السعر، تحصل على وحدة تحكم تحتوي على عدد كبير من الأزرار والمدخلات التناظرية، مما يجعلها خيارًا جذابًا للغاية لمشاريع التحكم عن بعد.
لدمج وحدة التحكم هذه مع Arduino، بالإضافة إلى وحدة التحكم نفسها وجهاز الاستقبال، من الشائع استخدام ملف محول مستوى المنطق يسمح بتعديل إشارات 3,3 فولت لوحدة تحكم PS2 إلى 5 فولت التي يعمل بها Arduino في معظم إصداراته.
المواد اللازمة
- وحدة تحكم PS2 لاسلكية. تبلغ تكلفة استنساخ وحدة التحكم هذه ما بين 9 و 10 يورو.
- مستقبلات inalámbrico لوحدة التحكم، والتي يتم تضمينها عادةً في العبوة.
- محول مستوى المنطق. يعد ذلك ضروريًا نظرًا لأن Arduino يعمل عند 5 فولت وتعمل وحدة التحكم PS2 بإشارات 3,3 فولت.
- اردوينو. يمكنك استخدام أي نموذج، مثل Arduino Unoأو ميجا أو ميني.
- اللوح وكابلات لإجراء اتصالات بين جهاز الاستقبال والاردوينو.
التوصيلات والتجمع
يعد جهاز الاستقبال اللاسلكي المصاحب لوحدة تحكم PS2 هو القطعة الأساسية للتواصل بين الاثنين. يتصل هذا المكون بـ اردوينو من خلال سلسلة من الدبابيس، والتي تختلف اعتمادًا على جهاز الاستقبال، ولكنها تتضمن بشكل عام الطاقة (5 فولت وGND)، البيانات، الساعة وغيرها من الملحقات مثل دبوس الانتباه أو الاهتزاز.
من التوصيات المهمة عدم الثقة في رمز اللون الخاص بالكابلات، حيث قد يختلف ذلك وفقًا للشركة المصنعة. من الأفضل استخدام مقياس متعدد للتحقق من وظيفة كل منها، مما سيتجنب الأخطاء المحتملة في الاتصال.
بمجرد تحديد الدبابيس بشكل صحيح، يمكنك استخدام اللوح لحام أو توصيل الإشارات المختلفة بـ Arduino، أو إذا كنت تفضل تركيب كل شيء بشكل مضغوط، يمكنك أيضًا لحام الكابلات مباشرة بجهاز الاستقبال، مع التأكد دائمًا من صحة التوصيلات.
من المهم جدًا استخدام أ محول مستوى المنطق نظرًا لأنه كما ذكرنا سابقًا، تعمل وحدة التحكم PS2 بجهد 3,3 فولت، بينما تعمل معظم لوحات Arduino بجهد 5 فولت. سيسمح هذا المحول لكلا النظامين "بالتحدث" مع بعضهما البعض دون التسبب في أي ضرر.
التكوين والمكتبة لوحدة تحكم PS2
للتحكم في وحدة تحكم PS2 مع اردوينو، هناك المكتبة الأساسية تسمى PS2X_lib، التي أنشأها بيل بورتر، والتي تسهل إلى حد كبير استخدام هذا النوع من الضوابط. سيسمح لك هذا البرنامج بإدارة جميع الإشارات التي ترسلها وحدة التحكم عبر جهاز الاستقبال اللاسلكي الخاص بها.
تثبيت هذه المكتبة بسيط للغاية ويمكنك العثور عليه على GitHub جيثب:. بمجرد تنزيله وتثبيته في بيئة تطوير Arduino الخاصة بك، يمكنك البدء في العمل معه.
ستكون الخطوة التالية هي تكوين المسامير في كود Arduino. سوف تحتاج إلى التأكد من تحديد المسامير بشكل صحيح. الساعة، الأمر، البيانات y اهتمام التي تتوافق مع المدخلات والمخرجات الخاصة بك اردوينو. يعد هذا أمرًا حيويًا، نظرًا لأن تعيين الدبوس بشكل غير صحيح يمكن أن يتسبب في عدم استجابة وحدة التحكم بشكل صحيح.
يوضح مقتطف الكود التالي كيفية تكوين هذه الدبابيس:
#include
PS2X ps2x; // crear la clase para el mando PS2
int error; // variable para errores
#define PS2_CLK 34
#define PS2_CMD 24
#define PS2_ATT 32
#define PS2_DAT 22
// Configuramos los pines para el mando
error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_ATT, PS2_DAT, true, true);
بمجرد تكوين الدبابيس، يمكنك البدء في قراءة الإشارات التي ترسلها وحدة التحكم من خلال الكود. توفر المكتبة طرقًا محددة للتحقق مما إذا كان أ زر تم الضغط عليه، وكذلك للحصول على القيم التناظرية من عصا التحكم.
قراءة الأزرار
El تحكم ps2 لديه ما يصل الى 14 أزرار، موزعة بين الجزء الأمامي والخلفي من عنصر التحكم. لقراءة الأزرار الأمامية والخلفية يمكنك استخدام الكود التالي:
if (ps2x.Button(PSB_PAD_UP)) {
Serial.println("Arriba");
} else if (ps2x.Button(PSB_PAD_DOWN)) {
Serial.println("Abajo");
} else if (ps2x.Button(PSB_PAD_LEFT)) {
Serial.println("Izquierda");
} else if (ps2x.Button(PSB_PAD_RIGHT)) {
Serial.println("Derecha");
}
بالإضافة إلى أزرار الاتجاه، يمكنك قراءة تفعيل أزرار الإجراءات مثل الدائرة، X، المربع، والمثلث، بصورة مماثلة.
قراءة عصا التحكم
الكثير عصا التحكم التناظرية توفر وحدة التحكم PS2 قيمًا مستمرة يمكنك استخدامها لتحريك المحركات أو التحكم في اتجاه وسرعة الروبوت على سبيل المثال. تتراوح القيم من 0 إلى 255، حيث تكون 127 هي القيمة المركزية عندما تكون أذرع التحكم في حالة راحة.
int LX = ps2x.Analog(PSS_LX);
int LY = ps2x.Analog(PSS_LY);
int RX = ps2x.Analog(PSS_RX);
int RY = ps2x.Analog(PSS_RY);
Serial.print("Stick Values: ");
Serial.print(LX);Serial.print(",");
Serial.print(LY);Serial.print(",");
Serial.print(RX);Serial.print(",");
Serial.println(RY);
باستخدام هذه القيم يمكنك التحكم في سرعة المحركات اعتمادا على مقدار الضغط الواقع على أذرع التحكم.
أمثلة عملية
التحكم أ روبوت روفر 4x4 مع وحدة تحكم PS2 هو مثال كلاسيكي لتطبيقات هذا النوع من وحدات التحكم. يصبح هذا التجميع سهلاً بشكل خاص مع أ ميجا اردوينو، لأنه يوفر المزيد من الدبابيس والمزيد من الذاكرة، مما يسمح لك بإدارة العديد من المحركات وأجهزة الاستشعار في نفس الوقت.
يعرض التعليمة البرمجية التالية مثالاً أساسيًا لكيفية التحكم في العربة الجوالة باستخدام أزرار الاتجاه الموجودة على وحدة التحكم:
void loop() {
ps2x.read_gamepad();
if (ps2x.Button(PSB_PAD_UP)) {
avance();
} else if (ps2x.Button(PSB_PAD_DOWN)) {
retroceso();
} else if (ps2x.Button(PSB_PAD_LEFT)) {
giroIzquierda();
} else if (ps2x.Button(PSB_PAD_RIGHT)) {
giroDerecha();
} else {
paro();
}
}
هذا مثال بسيط لكيفية التحكم في الأزرار المختلفة الموجودة على وحدة التحكم في حركة السيارة، لكن استخدام عصي التحكم سيسمح بحركات أكثر سلاسة ودقة، والتحكم في اتجاه الروبوت وسرعته.
مع التكامل والتكوين الصحيحين، تصبح وحدة التحكم هذه أداة قوية جدًا للتحكم في أي مشروع إلكتروني يعتمد على Arduino تقريبًا.
الجمع بين أ وحدة تحكم بلاي ستيشن 2 مع Arduino، فإنه يفتح نطاقًا واسعًا من الإمكانيات للتحكم في مشاريع الروبوتات أو الأنظمة الآلية أو حتى الأنظمة الأبسط مثل الأذرع الآلية. إن العدد الكبير من الأزرار ودقة أذرع التحكم تجعل وحدة التحكم هذه خيارًا ممتازًا لأولئك الذين يتطلعون إلى إضافة جهاز تحكم عن بعد إلى أجهزتهم من خلال واجهة مألوفة ومريحة.