مقياس تسارع وحدة تحكم Xbox 360 / جهاز توجيه الدوران: 7 خطوات
مقياس تسارع وحدة تحكم Xbox 360 / جهاز توجيه الدوران: 7 خطوات
Anonim
جهاز تحكم Xbox 360 ، مقياس تسارع / وضع توجيه الدوران
جهاز تحكم Xbox 360 ، مقياس تسارع / وضع توجيه الدوران

لقد كنت ألعب Assetto Corsa مع جهاز التحكم Xbox 360 الخاص بي. لسوء الحظ ، فإن التوجيه باستخدام العصا التناظرية غير عملي للغاية ، وليس لدي مساحة لإعداد عجلة. حاولت التفكير في طرق يمكنني من خلالها وضع آلية توجيه أفضل في وحدة التحكم ، عندما خطر لي أنه يمكنني استخدام وحدة التحكم بالكامل كعجلة قيادة.

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

يستخدم هذا الوضع Arduino لحساب الزاوية من قراءات مقياس التسارع وتحويلها إلى حركة عصا تناظرية عبر DAC. لذلك ، يجب أن تعمل مع أي لعبة تستخدم العصا التناظرية كمدخلات.

الخطوة 1: سوف تحتاج:

أدوات:

  • لحام حديد
  • جندى
  • مصاصة اللحام / جديلة
  • متجرد الأسلاك
  • مفك براغي ، ربما واحد من نوع Torx اعتمادًا على البراغي الموجودة في وحدة التحكم الخاصة بك (لي مفك متقاطع)
  • الغراء (يفضل ألا يكون الغراء فائق القوة بحيث يمكن تفكيكه لاحقًا)
  • محول USB إلى تسلسلي لبرمجة Arduino

المواد:

  • جهاز تحكم Xbox 360 (duh!)
  • Arduino Pro Mini (أو نسخة) (يفضل 3.3 فولت. إذا كنت تستخدم الإصدار 5 فولت ، فربما تحتاج إلى محول جهد تصاعدي)
  • جيروسكوب / مقياس تسارع MPU-6050
  • DAC MCP4725 (اثنان إذا كنت تريد التحكم في كلا المحورين)
  • بعض الأسلاك الرقيقة
  • لوح توصيل حتى تتمكن من اختبار كل شيء قبل اللحام (اختياري ، لكن موصى به)

الخطوة 2: فك وحدة التحكم

تفكيك وحدة التحكم
تفكيك وحدة التحكم
تفكيك وحدة التحكم
تفكيك وحدة التحكم
تفكيك وحدة التحكم
تفكيك وحدة التحكم

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

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

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

بعد ذلك ، قم بإزالة 14 دبوسًا التي تحمل العصا التناظرية اليسرى. ثم اسحب العصا.

الخطوة 3: الصق المكونات في مكانها

الصق المكونات في مكانها
الصق المكونات في مكانها
الصق المكونات في مكانها
الصق المكونات في مكانها

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

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

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

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

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

تذهب DAC (ق) في الزاوية اليسرى السفلية. هناك خلوص كافٍ هنا لتكديس اثنين من DAC ، أحدهما فوق الآخر ، إذا كنت تريد التحكم في كلا المحورين. لا تحتاج إلى لصقها. سيبقون في مكانهم فقط من خلال الوصلات الملحومة. إذا كنت تلصق البطاقة بينهما ، فتأكد من قطع البطاقة لتترك إمكانية الوصول إلى SCL و SDA و VCC و GND ، لأنك ستتمكن من الوصول إليها من كلا الجانبين.

إذا كنت تستخدم اثنين من DAC ، فلا تنس تبديل وصلة العنوان وتعطيل مقاومات السحب على أحدهما ، كما هو موضح هنا: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -محول-ربط-دليل

الخطوة 4: لحام الأسلاك

جندى الأسلاك
جندى الأسلاك
جندى الأسلاك
جندى الأسلاك
جندى الأسلاك
جندى الأسلاك

الآن عليك توصيل كل شيء. يجب توصيل VCC و GND و SDA و SCL من جميع الأجهزة 2/3 بـ VCC و GND و A4 و A5 على Arduino ، على التوالي. DACs هي الجزء الأصعب. إذا كان لديك اثنان ، فيجب عليك توصيلهما معًا ، بينما تغادر مكانًا ما يمكنك توصيل الطاقة والخطوط بمقياس التسارع ، مع إبقاء أسلاك OUT منفصلة.

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

كانت خطتي الأصلية هي تشغيل Arduino باستخدام 5 فولت من كبل USB المتصل بدبوس RAW ، لكن عندما جربته ، لم ينجح. لم يقم Arduino بتشغيل أي شيء ، وتم إيقاف تشغيل كل من Arduino ووحدة التحكم بعد بضع ثوانٍ. ومع ذلك ، اكتشفت أن هناك خرجًا ثابتًا يبلغ 3.3 فولت من دبابيس على مقدمة اللوحة بالقرب من المقبس المحيطي الأسود ، ويفترض أنه لتشغيل الأجهزة الطرفية. إنه يعمل مع كل من VCC و RAW ، لكنني اخترت VCC لأنه الجهد الصحيح بالفعل ولأنه يسمح لي بلحامه بسلك VCC على DAC الموجود بالفعل بالقرب من أسفل اللوحة وحفظه على الأسلاك.

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

كل هذا يصعب وصفه بالكلمات ، لذلك قمت بتضمين صور ومخطط أولي.

الخطوة 5: برمجة Arduino

الآن عليك برمجة Arduino. يتطلب ذلك تحريك كبل USB على وحدة التحكم حتى تتمكن من الوصول إلى المسامير التسلسلية على Arduino. لقد قمت بتضمين الكود الذي استخدمته. يتطلب مكتبة Adafruit MCP4725 ، والتي يمكن العثور عليها هنا:

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

تحصل على زاوية وحدة التحكم عن طريق حساب المماس المعكوس لمحور X- القوة- g مقسومًا على المحور Z- القوة. هذا يعني أنه يعمل إذا كانت وحدة التحكم عمودية أو مسطحة أو أي زاوية بينهما. (مزيد من المعلومات هنا:

إنه يعمل على وحدة التحكم الخاصة بي ، ولكن قد تتطلب وحدات التحكم الأخرى الفولتية المختلفة ، مما يجعلها خارج المحاذاة. أعتقد أن أفضل طريقة للعثور على نطاق الجهد هي التجربة والخطأ. ستعرض لك العديد من الألعاب شريط تمرير لحركة العصا التناظرية ، ولكن الطريقة الأكثر دقة التي وجدتها لتحديد الحركة هي باستخدام jstest على Linux. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) يمنحك رقمًا بين -32 و 767 و 32 و 767 بدلاً من الرسم ، حتى تعرف بالضبط مكان العصا. قم بتوصيل كل من وحدة التحكم و Arduino USB بالمحول التسلسلي ، وقم بتحميل jstest وجرب قيم DAC مختلفة حتى تصل إلى أعلى وأسفل النطاق ، وقم بتدوين كل منهما. بالنسبة لي كان 1 ، 593 - 382.

ذو أهمية خاصة السطر 36:

dacvalue = (Controllerangle + 2.5617859169446084418) / 0.0025942135867793503208 + 0.5 ؛

ليس من الواضح على الفور ما يفعله. ببساطة ، تأخذ زاوية وحدة التحكم (تقاس بالراديان وبين ~ 1.57 و ~ -1.57) وتحولها إلى قيمة بين 1 و 593 و 382 لـ DAC. إذا كان لديك نطاق DAC مختلف ، فستحتاج إلى تغيير هذا الخط.

يمكن كتابة السطر على النحو التالي:

dacvalue = (controllerangle +) / + 0.5 ؛

مع وجود الأرقام التي تحتاج إلى تغييرها. يساوي نطاق زاوية وحدة التحكم (pi) مقسومًا على النطاق الإجمالي لقيم DAC. (الجزء العلوي من النطاق مطروحًا منه الجزء السفلي من النطاق) هذا يجعلك تصل إلى حد تغيير الجهد ، على الرغم من أن النتائج ستكون خارج النطاق الذي تريده. لهذا السبب تحتاج. يساوي مضروبًا في الجزء السفلي من النطاق زائد نصف نطاق حركة وحدة التحكم. (pi / 2) تؤدي إضافة نصف نطاق الحركة إلى التأكد من أنه ليس رقمًا سالبًا ، وإضافة مضروبًا في الجزء السفلي من النطاق يضمن مزامنته مع النطاق الذي تريده.

عند تحويل الكسور العشرية إلى عدد صحيح ، لا يتم تقريب C ++. بدلاً من ذلك ، تقطع العلامة العشرية ، لذا تصبح 9.9 9. إضافة 0.5 في النهاية تضمن أن أي شيء أعلى من النصف ينتقل إلى العدد الصحيح التالي ، لذلك يتم تقريبه.

بمجرد تحميل البرنامج الخاص بك ، تأكد من أنه يعمل مع jstest.

الخطوة 6: أعد تجميع وحدة التحكم

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

الخطوة 7: التحسينات الممكنة

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

  • استخدام سلك مغناطيسي أقل تعقيدًا
  • نقش كل شيء على ثنائي الفينيل متعدد الكلور مصمم ليلائم علبة جهاز التحكم
  • إعادة توصيل العصا التناظرية اليسرى وربط الأرجل بالمدخلات التناظرية على Arduino حتى يمكن استخدامها لضبط Arduino
  • الحصول على قطعة الغلاف الخلفي لوحدة تحكم لاسلكية ووضع المشروع في حجرة البطارية (سيتطلب ذلك قطع ثقب لكابل USB)