fbpx

لوحة الألعاب “Circuito”

متطلبات عمل مشروع لمسابقة الProduct Design
فبراير 26, 2019
عالم إفتراضي لمشاريع أردوينو
مارس 11, 2019

لوحة الألعاب “Circuito”

هل فكرت في تصميم لوحة الألعاب الخاصة بك من قبل؟
أو ربما حتى زر إطلاق سريع يسمح لك بضغط زر معين 100 مرة في الثانية. حسنًا ..

سأشرح لك في هذا المشروع كيفية إنشاء وحدة تحكم لألعاب الفيديو (لعبة على الكمبيوتر) وحدة التحكم هذه قابلة للتخصيص وفقًا للعبتك المفضلة ويمكن تصنيعها باستخدام أي لوحة اردوينو.

“Circuito” هي لوحة تحكم DIY لكل المهتمين بألعاب الكمبيوتر “Gamers” وهي أيضاً مشروع تكميلي لمشروع الذراع الروبوتي السابق. لوحة التحكم هذه هي عبارة عن تركيبة ميكانيكية من عدة أجزاء بسيطة، تساعد على تحريك وإدارة أي ذراع روبوتي وأيضاً فعالة جداً لألعاب الكمبيوتر.

لعمل هذا المشروع، تحتاج إلى خبرة مسبقة في:

استخدام كاوية اللحام، توصيل الدوائر الإكترونية البسيطه، خبرة بسيطه بالأرديونو

مستوى صعوبة المشروع:

متوسط

مدة عمل هذا المشروع:

30 ساعة

المكونات المستخدمة في المشروع:

  1. – 10k resistor
  2. – LED lights
  3. – Toggle switch 3 pin
  4. – Stop switch
  5. – Joystick Module
  6. – Potentiometer
  7. – On/off switch
  8. – Active Buzzer
  9. – Arduino Uno

الأدوات المستخدمة في المشروع:

  1. كاوية لحام – Soldering iron
  2. أداة حفر – ROTARY TOOL
  3. سكين – ورق الصنفرة أو غيرها من معدات الخشب
    Knife – Sandpaper or other sanding equipment
  4. مفك – Screwdriver
  5. كماشة – Pliers

المواد المستخدمة في المشروع:

  1. مسامير 3مم
  2. خسب ام دي اف – MDF 4mm 30cm * 21cm
  3. – كابلات توصيل 10 سم
  4. – كابلات تغليف shrink cables

اخترت تصميم اللوحة كتلك اللوحات الحقيقية للتحكم لأن مثل هذا التصميمها حل فعال من حيث التكلفة وتوفر فرص تصميم مثيرة للاهتمام، أما عن الطلاء فكان ورق ملون باستخدام طابعة Inkjet الملونة ، لوحة خشبية MDF وطبقات اللحام.

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

الخطوة الأولى: السيناريو

Circuito هي لوحة ألعاب إلكترونية تٌدار من خلال لوحة أردوينو.

يتوفر بها بعض القطع الإلكترونية مثل مقاومات متغيرة الجهد “potentiometer” للتحكم اليدوي باستخدام مقياس الجهد في تسريع المحركات، و ذراع تحكم واحد “joystick”، ومفتاح تبديل للتحكم في البرنامج أو لتشغيل وإطفاء الأنوار “toggle on/off switch”، والتفاعل الصوتي باستخدام وحدة طنان بييزو سلبي الجهد 5 فولت أو 3.3 فولت “pizzo”.

هذه الوحدة متوافقة تماماً مع جميع لوحات أردوينو، والتشغيل المستقل ممكن أيضا. أما عن مخرجات Circuito هي بعض أوامر المنفذ التسلسلي “USB Serial Port” المعدة مسبقاً والتي يمكن رؤيتها على جهاز مراقبة المنفذ التسلسلي Arduino وسهولة تعديله.

الخطوة الثانية: التجربة الأولية

في هدة الخطوة يجب توصيل المكونات الإلكترونية بلوحة الأردوينو على النحو التالي

1- توصيل ذراع التحكم joystick

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

مثال:

عند تحريك الذراع إلى أعلى يرسل إشارات تناظرية Analog بقيم رقمية محصورة بين ” 0 و 1023 ” يتم بعد دلك معالجة هذه القيم لتحريك شي ما، فعند تحريك الذراع إلى اقصاه يقوم بزيادة السرعة مثلاً وعند تحريكة إلى أدنى مستوي يتم التوقف و هكذا.

كما أن الموديول أيضاً يحتوي على زر ضغط ويعمل عند الضغط على ذراع التحكم Joystick، يرسل إشارات رقمية Digital يتم قرائتها مثلاً بحالتين 0 و 1

VRx للمحور الرأسي ويعمل حين يتم تحريك الذراع للأمام والخلف

VRy للمحور الأفقي ويعمل حين يتم تحريك الدراع لليمين واليسار

Btn وهو الزر الدي يتم الضغط عليه عند ضغط الدراع لأسفل

VCC وهو الطرف الموجب يتم توصيله بمنفذ الـ 5 فولت بلوحة الأرديونو

GND وهو الطرف السالب يتم توصيله بمنفذ الـ GND بلوحة الأردوينو

2- تركيب مقياس الجهد potentiometer 

مقياس الجهد هو مقبض بسيط يوفر مقاومة متغيرة ، والتي يمكننا قراءتها في لوحة Arduino كقيمة تناظرية Analog ويعمل كما يعمل ذراع التحكم.

فمثلا  يمكنك أن تتحكم هذه القيمة في معدل وميض LED. و للتوصيل نوصل ثلاثة أسلاك بلوحة Arduino. …

الأول من جهة اليسار يذهب إلى 5 فولت

الأوسط إلى منفذ A2 ويقرأ القيم التناظرية من 0 إلى 1023

و الأخير يتم توصيله بالمنفذ الأرضي أو السالب GND

الخطوة الثالثة:تصنيع اللوحة

فيما يلي بعض الصور توضح مراحل التصنيع:

1- استخذم خشب MDF 2mm لواجهة اللوحة و حدد فيها مكان تواجد القطع الإلكترونية، ومن ثم فرغ أماكنها

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

3- قم بتقطيع خشب MDF 4mm على شكل صندوق ذو زاوية مائلة نحو الأمام لوضع القطع الإلكترونية بداخلة.

4- قم بحفر أربعة ثقوب في الأطراف لتثبيت الغطاء المثبت فيه القطع الإلكترونية

5- قم بتثبيت عدد 2 لمبة LED متصلين مقاومة 10 ك آوم وذلك لإعطاء ضوء خافت للمبات الليد، ثم قم بتثبيتهم في مكان مناسب بالصندوق الخشبي.

 

6- تركيب زر فتح و إغلاق الدائرة الكهربية

7- تركيب زر التبديل toggle switch وهو يشبة زر الفتح و الإغلاق

8- تركيب زر التوقف Stop والذي يعمل على فصل طاقة البطارية عن اللوحة بالكامل

الخطوة الرابعة: الدائرة الكهربية

قم بتوصيل المكونات الإلكترونية كما هو موضح.

الخطوة الخامسة: تجربة القطع الإلكترونية

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

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

الخطوة السادسة : تحويل الأردوينو لـ GamePad

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

هناك بعض الأدوات التي تتيح لك تحويل الأدروينو إلى وحدة تحكم لعبة USB أصلية ، متوافقه مع Windows و OSX و PlayStation 3.

وذلك عن طريق بعض البرامج التي تثبت على نظام التشغيل وتعمل على تحويل الإشارات الترددية القادمة عن طريق المنفذ التسلسلي “serial port” إلى أوامر يفهمها نظام التشغيل .

ومثال لهذه البرامج هو UnoJoy!  أو غيرها، كل ما عليك هو تحديد نوع اللوحة و ما هي الأزرار التي تريدها

int xPin = A1;
int yPin = A0;
int buttonPin = 2;
int buzzer = 9;

int xPosition = 0;
int yPosition = 0;
int buttonState = 0;

//define servos
Servo servo1;
Servo servo2;

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);

pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(buzzer, OUTPUT);

//activate pull-up resistor on the push-button pin
pinMode(buttonPin, INPUT_PULLUP);

// ******* S 13/ B 11/ G 12 / E 10
servo1.attach(13);
servo2.attach(10);
}

void loop() {
JoyStickControl();
}

void JoyStickControl()
{
xPosition = analogRead(xPin);
yPosition = analogRead(yPin);
buttonState = digitalRead(buttonPin);

// Servos
xPosition = map(xPosition, 0, 1023, 0, 180);
servo1.write(xPosition);

yPosition = map(yPosition, 0, 1023, 0, 180);
servo2.write(yPosition);

if(buttonState ==0)
{
// you may control another servo motor
tone(buzzer, 1000); // Send 1KHz sound signal… sound indicator for pressing
noTone(buzzer); // Stop sound…
}

Serial.print(“X: “);
Serial.print(xPosition);
Serial.print(” | Y: “);
Serial.print(yPosition);
Serial.print(” | Button: “);
Serial.println(buttonState);

delay(100); // add some delay between reads
}

X