Taula de continguts:

Acceleròmetre / giroscòpica del controlador Xbox 360 Mod de direcció: 7 passos
Acceleròmetre / giroscòpica del controlador Xbox 360 Mod de direcció: 7 passos

Vídeo: Acceleròmetre / giroscòpica del controlador Xbox 360 Mod de direcció: 7 passos

Vídeo: Acceleròmetre / giroscòpica del controlador Xbox 360 Mod de direcció: 7 passos
Vídeo: ¿Qué es la zona muerta y el drift en controles? 2024, Desembre
Anonim
Controlador Xbox 360 Acceleròmetre / direcció giroscòpica Mod
Controlador Xbox 360 Acceleròmetre / direcció giroscòpica Mod

He estat jugant a Assetto Corsa amb el meu controlador Xbox 360. Malauradament, la direcció amb el pal analògic és molt difícil i no tinc espai per a la configuració de les rodes. Vaig intentar pensar en maneres de calçar un millor mecanisme de direcció al controlador, quan se'm va acudir que podia utilitzar tot el controlador com a volant.

El pal analògic té dos potenciòmetres. Un mesura el moviment vertical i un mesura el moviment horitzontal. Posa 1,6V a través de cadascun i mesura la tensió produïda a l’eixugaparabrises per determinar quant s’ha mogut el pal. Això significa que és possible controlar el moviment del pal alimentant un voltatge concret al passador del netejador. (més informació aquí:

Aquest mod utilitza un Arduino per calcular l’angle a partir de les lectures de l’acceleròmetre i convertir-lo en moviment de pal analògic mitjançant un DAC. Per tant, hauria de funcionar amb qualsevol joc que utilitzi el stick analògic com a entrada.

Pas 1: necessitareu:

Eines:

  • Soldador
  • Soldar
  • Soldador / trena
  • Decapant de filferro
  • Un tornavís, potser un Torx, segons els cargols del controlador (els meus són transversals)
  • Cola (preferiblement no és una cola súper forta, de manera que es pot desmuntar més endavant)
  • Un adaptador USB a sèrie per programar l'Arduino

Materials:

  • Controlador Xbox 360 (duh!)
  • Arduino Pro Mini (o un clon) (preferiblement 3,3 V. Si utilitzeu la versió de 5 V, probablement necessiteu un convertidor de tensió intensificat)
  • Un giroscopi / acceleròmetre MPU-6050
  • Un DAC MCP4725 (dos si voleu controlar els dos eixos)
  • Alguns fils prims
  • Un tauler per poder provar-ho tot abans de soldar (opcional, però recomanat)

Pas 2: traieu el controlador

Desmonteu el controlador
Desmonteu el controlador
Desmonteu el controlador
Desmonteu el controlador
Desmonteu el controlador
Desmonteu el controlador

Hi ha set cargols que heu de treure. Sis d’ells són obvis, però el setè està darrere d’un adhesiu. Suposo que l'eliminació d'ella anul·la la vostra garantia, així que procediu sota el vostre propi risc. Moltes guies diuen que necessiteu un tornavís Torx, però les meves són transversals, així que comproveu el controlador.

Després d'això, extreu amb cura la contraportada. Si es fa fora de la part frontal, els botons s’escamparan i probablement passaran per tota l’habitació. Aixequeu-lo des de la part inferior. A continuació, desconnecteu els dos motors de vibració. (el que tingui un pes reduït hauria d’estar a l’esquerra i el que té el pes gran a la dreta) Traieu el PCB i traieu els taps de goma dels palets analògics. Simplement s’allunyen.

El següent és treure el llapis analògic esquerre perquè no interfereixi amb la nostra entrada, però el mecanisme de disparador esquerre està en el camí. Per eliminar-lo, heu de dessoldar els tres pins del potenciòmetre des de la part frontal de la placa i, a continuació, desenganxar el mecanisme del PCB.

A continuació, dessoldeu els 14 pins que subjecten el pal analògic esquerre. A continuació, estireu el pal.

Pas 3: fixeu els components al seu lloc

Poseu els components al seu lloc
Poseu els components al seu lloc
Poseu els components al seu lloc
Poseu els components al seu lloc

Notareu que hi ha força espai entre la part posterior del PCB i la caixa. Això permet posar tot el maquinari a la funda sense treure res.

Només me’n vaig adonar més tard, però seria un bon moment per dessoldar el botó de restabliment de l’Arduino. Si no ho feu, premeu a la part posterior de la caixa i farà que el projecte deixi de funcionar si estrenyeu massa un dels cargols quan el torneu a muntar.

Vaig enganxar un tros prim de targeta a la part posterior de cada PCB per aïllar-lo, i després el vaig enganxar al PCB del controlador. Era reticent a utilitzar la cola, però no se m’acut una manera millor de fer-ho.

La posició de la imatge és la millor combinació que he pogut trobar. L'Arduino es troba a l'esquerra, amb la vora amb el botó de reinicialització enfront de la peça de plàstic del mecanisme de disparador dret, amb l'altre costat sota el cable i amb la cantonada el més a prop possible del connector blanc. Hi ha una petita protuberància al cas, però no he trobat un lloc millor per posar-lo.

L’acceleròmetre es troba a la dreta del cable. Ha de ser el més pla i el més recte possible, en cas contrari és possible que hagueu d’escriure algun codi més tard per compensar la compensació. Tingueu en compte que hi ha alguns trossos de plàstic que sobresurten a la part posterior de la caixa que heu d’anar amb compte per evitar. He descobert que podeu posar alguna cosa enganxosa i acolorida, com el llapis de llavis, sobre els trossos de plàstic que sobresurten i, a continuació, poseu-hi la tapa posterior per veure on deixa marques.

Els DAC apareixen a l'extrem inferior esquerre. Aquí hi ha prou espai per apilar dos DAC, un sobre l’altre, si voleu controlar els dos eixos. No cal enganxar-los. Es quedaran allà on siguin només amb les connexions soldades. Si col·loqueu la targeta entre ells, assegureu-vos de tallar la targeta per deixar accessibles SCL, SDA, VCC i GND, perquè hi accedireu des dels dos costats.

Si utilitzeu dos DAC, no us oblideu de canviar el pont d'adreces i desactivar les resistències pull up d'un d'ells, tal com es descriu aquí: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -converter-hookup-guide

Pas 4: soldeu els cables

Soldeu els cables
Soldeu els cables
Soldeu els cables
Soldeu els cables
Soldeu els cables
Soldeu els cables

Ara cal connectar-ho tot. VCC, GND, SDA i SCL de tots els dispositius 2/3 haurien d’estar connectats a VCC, GND, A4 i A5 a l’Arduino, respectivament. Els DAC són la part més complicada. Si en teniu dos, els heu de connectar junts, mentre deixeu un lloc, podreu connectar l’alimentació i les línies a l’acceleròmetre, mantenint els cables OUT separats.

El pin OUT del DAC hauria d’estar connectat al pin del PCB del controlador que solia ser el pin del potenciòmetre horitzontal mitjà del pal analògic. És a dir, on hi havia el pal analògic, hi ha una fila de tres pins a la part superior. Connecteu-lo al mig. Si teniu un altre DAC, connecteu-lo al pin del potenciòmetre vertical (la fila a l'esquerra) de la mateixa manera. No podreu arribar als passadors des de la part posterior quan es canvia el gallet, de manera que heu de fer passar un cable a la part frontal del tauler. Hi ha una "paret" de plàstic circular al voltant de la zona de pal analògic, però afortunadament hi ha un buit convenient que podeu passar per cables. Assegureu-vos que els cables no s’obstinguin al pal de cargol de la part frontal de la caixa.

El meu pla original era alimentar l’Arduino amb el 5V del cable USB connectat al pin RAW, però quan el vaig provar no funcionava. L'Arduino no va executar res, i tant l'Arduino com el controlador es van apagar al cap de pocs segons. Tanmateix, vaig descobrir que hi ha una sortida constant de 3,3 V de dos pins a la part davantera de la placa, a prop del sòcol perifèric negre, presumiblement per alimentar perifèrics. Funciona tant amb VCC com amb RAW, però he escollit VCC perquè ja és el voltatge adequat i perquè em permet soldar-lo al cable VCC del DAC que ja està a prop de la part inferior de la placa i estalviar-ne els cables.

Tingueu en compte que hi ha moltes peces de plàstic que sobresurten del cas que heu de treballar, però si enganxeu els cables al lloc, només us heu de preocupar una vegada.

Tot això és difícil de descriure amb paraules, així que he inclòs imatges i un diagrama cru.

Pas 5: programa l'Arduino

Ara heu de programar l'Arduino. Això requereix moure el cable USB al controlador perquè pugueu accedir als pins de sèrie de l’Arduino. He inclòs el codi que he fet servir. Requereix la biblioteca Adafruit MCP4725, que es pot trobar aquí:

Tal com és, el codi us permet recórrer tot el rang de moviment de la barra analògica de manera uniforme movent el controlador 90 graus a l’esquerra a 90 graus a la dreta i mantenint-lo al centre mantenint-lo pla.

Obté l’angle del controlador calculant la tangent inversa de la força g de l’eix X dividida per la força g de l’eix Z. Això vol dir que funciona si el controlador és vertical, pla o té algun angle intermedi. (Més informació aquí:

Funciona al meu controlador, però és possible que altres controladors necessitin tensions diferents, deixant-lo fora d'alineació. Crec que la millor manera de trobar el rang de tensió és mitjançant proves i errors. Molts jocs us mostraran un control lliscant per al moviment de pal analògic, però la forma més precisa que he trobat de determinar el moviment és amb jstest a Linux. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Us proporciona un número entre -32, 767 i 32, 767 en lloc d'un gràfic, de manera que pugueu saber exactament on és el pal. Connecteu tant el controlador com l’Arduino USB a l’adaptador sèrie, carregueu jstest i proveu diferents valors DAC fins que arribeu a la part superior i inferior del rang i anoteu-ne cadascun. Per a mi era 1, 593 - 382.

És d’interès particular la línia 36:

dacvalue = (controllerangle + 2,5617859169446084418) / 0,0025942135867793503208 + 0,5;

No és obvi immediatament què fa. Simplement, pren l'angle del controlador (mesurat en radians i entre ~ 1,57 i ~ -1,57) i el converteix en un valor entre 1, 593 i 382 per al DAC. Si teniu un rang DAC diferent, haureu de canviar aquesta línia.

La línia es pot escriure com:

dacvalue = (controlangle +) / + 0,5;

Amb i sent els números que heu de canviar. és igual al rang de l’angle del controlador (pi) dividit pel rang total de valors DAC. (la part superior del rang menys la part inferior del rang) Això us permetrà canviar el voltatge, tot i que els resultats estaran fora del rang que desitgeu. Per això necessiteu. és igual a multiplicat per la part inferior del rang més la meitat del rang de moviment del controlador. (pi / 2) Si afegiu la meitat del rang de moviment, assegureu-vos que no sigui un nombre negatiu i, si es multiplica per la part inferior del rang, assegureu-vos que estigui sincronitzat amb el rang que voleu.

En convertir els decimals en un enter, C ++ no arrodoneix. En lloc d'això, talla el decimal, de manera que el 9,9 es converteix en 9. Si afegiu 0,5 al final, assegureu-vos que qualsevol cosa que superi la meitat passi al següent enter, de manera que es fa rodó.

Un cop hàgiu penjat el programa, assegureu-vos que funcioni amb jstest.

Pas 6: torneu a muntar el controlador

Torneu a ajuntar el controlador de la mateixa manera que l’heu desmuntat, menys el llapis analògic esquerre. Hauria de funcionar ara. Trobo que no hi ha cap retard notable i és molt millor que fer servir el pal analògic. Com que fa servir un acceleròmetre, es veu afectat per moviments bruscos, però heu de fer tot el possible per notar-ho.

Pas 7: possibles millores

Hi ha algunes millores que es podrien fer. Això inclou:

  • Utilitzant un cable imant menys pesat
  • Gravant-ho tot en un PCB dissenyat per adaptar-se a la caixa del controlador
  • Torneu a col·locar el pal analògic esquerre i connecteu les potes a les entrades analògiques de l'Arduino perquè es puguin utilitzar per ajustar l'Arduino
  • Obtenir la peça posterior de la funda per a un controlador sense fils i col·locar el projecte al compartiment de la bateria (això requeriria tallar un forat per al cable USB)

Recomanat: