Spisu treści:
- Krok 1: Będziesz potrzebować:
- Krok 2: Rozbierz kontroler
- Krok 3: Przyklej komponenty na miejscu
- Krok 4: Przylutuj przewody
- Krok 5: Zaprogramuj Arduino
- Krok 6: Złóż ponownie kontroler
- Krok 7: Możliwe ulepszenia
Wideo: Akcelerometr kontrolera Xbox 360 / modyfikacja sterowania żyroskopem: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Gram w Assetto Corsa na moim kontrolerze Xbox 360. Niestety sterowanie drążkiem analogowym jest bardzo nieporęczne i nie mam miejsca na ustawienie kół. Próbowałem wymyślić sposoby na wrzucenie lepszego mechanizmu sterującego do kontrolera, kiedy przyszło mi do głowy, że mógłbym użyć całego kontrolera jako kierownicy.
Drążek analogowy ma dwa potencjometry. Jeden mierzy ruch w pionie, a drugi mierzy ruch w poziomie. Wprowadza do każdego 1,6 V i mierzy napięcie wytwarzane na wycieraczkach, aby określić, jak bardzo drążek się poruszył. Oznacza to, że można kontrolować ruch drążka, doprowadzając określone napięcie do sworznia wycieraczki. (więcej informacji tutaj:
Ten mod wykorzystuje Arduino do obliczania kąta z odczytów akcelerometru i konwertowania go na ruch drążka analogowego za pomocą przetwornika cyfrowo-analogowego. Dlatego powinien działać z każdą grą, która używa drążka analogowego jako wejścia.
Krok 1: Będziesz potrzebować:
Narzędzia:
- Lutownica
- Lutować
- Przyssawka/warkocz lutowniczy
- Ściągacz izolacji
- Śrubokręt, może Torx, w zależności od śrub w kontrolerze (moje to krzyżak)
- Klej (najlepiej nie super mocny klej, aby można go było później rozebrać)
- Adapter USB na port szeregowy do programowania Arduino
Materiały:
- Kontroler Xbox 360 (tak!)
- Arduino Pro Mini (lub klon) (najlepiej 3,3V. Jeśli używasz wersji 5V, prawdopodobnie będziesz potrzebować konwertera napięcia podwyższającego)
- Żyroskop/akcelerometr MPU-6050
- DAC MCP4725 (dwa, jeśli chcesz kontrolować obie osie)
- Jakiś cienki drut
- Płytka stykowa, dzięki której możesz przetestować wszystko przed lutowaniem (opcjonalne, ale zalecane)
Krok 2: Rozbierz kontroler
Trzeba odkręcić siedem śrub. Sześć z nich jest oczywistych, ale siódmy jest za naklejką. Zakładam, że usunięcie go powoduje utratę gwarancji, więc postępuj na własne ryzyko. Wiele przewodników mówi, że potrzebujesz śrubokręta Torx, ale moje są krzyżowe, więc sprawdź kontroler.
Następnie ostrożnie podważ tylną pokrywę. Jeśli podważysz przód, przyciski rozleją się i prawdopodobnie rozejdą się po całym pokoju. Podnieś go od dołu. Następnie odłącz oba silniki wibracyjne. (ten z małą wagą powinien być po lewej, a ten z dużym po prawej) Wyjmij płytkę i zdejmij gumowe zaślepki z drążków analogowych. Po prostu ściągają.
Następną rzeczą jest usunięcie lewego drążka analogowego, aby nie przeszkadzał nam w działaniu, ale lewy mechanizm spustowy przeszkadza. Aby go wyjąć należy wylutować trzy piny potencjometru z przodu płytki, a następnie odpiąć mechanizm od płytki.
Następnie wylutuj 14 pinów trzymających lewą gałkę analogową. Następnie wyciągnij kij.
Krok 3: Przyklej komponenty na miejscu
Zauważysz, że między tyłem płytki drukowanej a obudową jest dość duży luz. Umożliwia to umieszczenie całego sprzętu w etui bez wyjmowania czegokolwiek.
Dopiero później zdałem sobie sprawę, że byłby to dobry moment na wylutowanie przycisku resetowania na Arduino. Jeśli tego nie zrobisz, naciśnie tył obudowy i spowoduje, że projekt przestanie działać, jeśli za mocno dokręcisz jedną ze śrub podczas ponownego montażu.
Przykleiłem cienki kawałek karty z tyłu każdej płytki, aby ją zaizolować, a następnie przykleiłem to do płytki kontrolera. Nie chciałem używać kleju, ale nie mogłem wymyślić lepszego sposobu, aby to zrobić.
Pozycje na obrazie to najlepsza kombinacja, jaką udało mi się znaleźć. Arduino znajduje się po lewej stronie, z krawędzią z przyciskiem resetowania zlicowaną z kawałkiem plastiku z prawego mechanizmu spustowego, z drugą stroną pod przewodem i narożnikiem jak najbliżej białego złącza. W futerale jest niewielkie wybrzuszenie, ale nie mogłem znaleźć lepszego miejsca, żeby je umieścić.
Akcelerometr znajduje się po prawej stronie przewodu. Powinien być jak najbardziej płaski i prosty, w przeciwnym razie może być konieczne napisanie kodu później, aby skompensować przesunięcie. Zwróć uwagę, że z tyłu obudowy znajdują się wystające kawałki plastiku, których musisz uważać, aby ich uniknąć. Odkryłem, że na wystające kawałki plastiku można nałożyć coś lepkiego i kolorowego, na przykład szminkę, a następnie założyć tylną okładkę, aby zobaczyć, gdzie zostawia ślady.
Przetworniki cyfrowo-analogowe znajdują się w lewym dolnym rogu. Jest tu wystarczająco dużo miejsca, aby ustawić dwa przetworniki cyfrowo-analogowe, jeden na drugim, jeśli chcesz kontrolować obie osie. Nie musisz ich sklejać. Pozostaną tam, gdzie są, dzięki tylko lutowanym połączeniom. Jeśli wkładasz kartę między nie, upewnij się, że przecinasz kartę tak, aby SCL, SDA, VCC i GND były dostępne, ponieważ będziesz mieć do nich dostęp z obu stron.
Jeśli używasz dwóch przetworników cyfrowo-analogowych, nie zapomnij przełączyć zworki adresu i wyłączyć rezystory podciągające na jednym z nich, jak opisano tutaj: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -Przewodnik podłączania konwertera
Krok 4: Przylutuj przewody
Teraz musisz wszystko połączyć. VCC, GND, SDA i SCL ze wszystkich 2/3 urządzeń należy podłączyć odpowiednio do VCC, GND, A4 i A5 na Arduino. Najtrudniejszą częścią są przetworniki cyfrowo-analogowe. Jeśli masz dwa, to musisz je ze sobą połączyć, zostawiając gdzieś można podłączyć zasilanie i linie do akcelerometru, zachowując osobne przewody OUT.
Pin OUT na przetworniku cyfrowo-analogowym powinien być podłączony do pinu na płytce drukowanej kontrolera, który kiedyś był środkowym pinem potencjometru poziomego dla drążka analogowego. To znaczy tam, gdzie była gałka analogowa, na górze jest rząd trzech pinów. Podłącz go do środkowego. Jeśli masz inny DAC podłącz go do pinu potencjometru pionowego (rząd po lewej) w ten sam sposób. Po wymianie spustu nie będziesz mógł dostać się do pinów od tyłu, więc musisz poprowadzić przewód do przodu płytki. Wokół obszaru drążka analogowego znajduje się okrągła plastikowa „ściana”, ale na szczęście jest w niej wygodna szczelina, przez którą można przełożyć przewody. Upewnij się, że przewody nie przeszkadzają w śrubie w przedniej części obudowy.
Moim pierwotnym planem było zasilanie Arduino napięciem 5V z kabla USB podłączonego do pinu RAW, ale kiedy próbowałem, nie zadziałało. Arduino nic nie uruchamiało, a Arduino i kontroler wyłączały się po kilku sekundach. Odkryłem jednak, że na dwóch pinach z przodu płyty w pobliżu czarnego gniazda peryferyjnego jest stałe wyjście 3,3 V, prawdopodobnie do zasilania urządzeń peryferyjnych. Działa zarówno z VCC, jak i RAW, ale wybrałem VCC, ponieważ jest to już odpowiednie napięcie i ponieważ pozwala mi go przylutować do przewodu VCC na DAC, który jest już w dolnej części płytki i zaoszczędzić na przewodach.
Pamiętaj, że z obudowy wystaje wiele plastikowych części, które musisz obejść, ale jeśli przykleisz przewody na miejscu, musisz się o nie martwić tylko raz.
Wszystko to jest trudne do opisania słowami, więc zamieściłem zdjęcia i prymitywny diagram.
Krok 5: Zaprogramuj Arduino
Teraz musisz zaprogramować Arduino. Wymaga to przesunięcia kabla USB na kontrolerze, aby uzyskać dostęp do pinów szeregowych Arduino. Dołączyłem kod, którego użyłem. Wymaga biblioteki Adafruit MCP4725, którą można znaleźć tutaj:
Tak jak jest, kod pozwala na równomierne przejście przez cały zakres ruchu drążka analogowego, przesuwając kontroler o 90 stopni w lewo do 90 stopni w prawo, i trzymając go w środku, trzymając go płasko.
Uzyskuje kąt kontrolera poprzez obliczenie odwrotnego tangensa siły g osi X podzielonej przez siłę g osi Z. Oznacza to, że działa, jeśli kontroler jest pionowy, płaski lub pod dowolnym kątem pomiędzy nimi. (więcej informacji tutaj:
Działa na moim kontrolerze, ale inne kontrolery mogą wymagać innych napięć, co powoduje jego niewspółosiowość. Myślę, że najlepszym sposobem na znalezienie zakresu napięcia jest metoda prób i błędów. Wiele gier pokazuje suwak dla ruchu drążka analogowego, ale najdokładniejszym sposobem na określenie ruchu, jaki znalazłem, jest użycie jstest na Linuksie. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Daje liczbę od -32, 767 do 32, 767 zamiast grafiki, więc wiesz dokładnie, gdzie jest kij. Podłącz zarówno kontroler, jak i adapter Arduino USB do portu szeregowego, załaduj jstest i wypróbuj różne wartości DAC, aż osiągniesz górną i dolną granicę zakresu, i zanotuj każdą z nich. Dla mnie było to 1 593 - 382.
Szczególnie interesująca jest linia 36:
wartość dac = (kąt kontrolny + 2,5617859169446084418) / 0,0025942135867793503208 + 0,5;
Nie od razu wiadomo, co robi. Po prostu bierze kąt kontrolera (mierzony w radianach i między ~1,57 a ~-1,57) i konwertuje go na wartość między 1, 593 a 382 dla DAC. Jeśli masz inny zakres DAC, będziesz musiał zmienić tę linię.
Wiersz można zapisać jako:
dacvalue = (kąt kontrolera +) / + 0,5;
Z i będąc liczbami, które musisz zmienić. jest równy zakresowi kąta kontrolera (pi) podzielonemu przez całkowity zakres wartości DAC. (górna część zakresu minus dół zakresu) To pozwala na zmianę napięcia, chociaż wyniki będą poza żądanym zakresem. Dlatego potrzebujesz. równa się pomnożonemu przez dół zakresu plus połowa zakresu ruchu kontrolera. (pi / 2) Dodanie połowy zakresu ruchu zapewnia, że nie jest to liczba ujemna, a dodanie pomnożonej przez dolną granicę zakresu zapewnia synchronizację z żądanym zakresem.
Podczas konwersji ułamków dziesiętnych na liczbę całkowitą C++ nie zaokrągla. Zamiast tego odcina liczbę dziesiętną, więc 9,9 staje się 9. Dodanie 0,5 na końcu upewnia się, że wartość powyżej połowy przechodzi do następnej liczby całkowitej, więc jest zaokrąglana.
Po przesłaniu programu upewnij się, że działa z jstest.
Krok 6: Złóż ponownie kontroler
Złóż kontroler w taki sam sposób, w jaki go rozłożyłeś, z wyjątkiem lewego drążka analogowego. Powinno już działać. Uważam, że nie ma zauważalnego opóźnienia i jest to o wiele lepsze niż użycie drążka analogowego. Ponieważ używa akcelerometru, wpływają na niego nagłe ruchy, ale musisz zrobić wszystko, aby to zauważyć.
Krok 7: Możliwe ulepszenia
Można wprowadzić pewne ulepszenia. Obejmują one:
- Używanie mniej kłopotliwego drutu magnetycznego
- Wytrawianie wszystkiego na jednej płytce drukowanej, która pasuje do obudowy kontrolera
- Ponowne przymocowanie lewego drążka analogowego i podłączenie nóg do wejść analogowych w Arduino, aby można było ich użyć do regulacji Arduino
- Zdobycie tylnej obudowy kontrolera bezprzewodowego i umieszczenie projektu w komorze baterii (wymagałoby to wycięcia otworu na kabel USB)
Zalecana:
Sześciostronne kości PCB LED z WIFI i żyroskopem - PIKOCUBE: 7 kroków (ze zdjęciami)
Sześciostronne kości PCB LED z WIFI i żyroskopem - PIKOCUBE: Witajcie twórcy, to producent moekoe! Dzisiaj chcę wam pokazać, jak zbudować prawdziwe kości LED oparte na sześciu PCB i łącznie 54 diodach LED. Oprócz wewnętrznego czujnika żyroskopowego, który może wykrywać ruch i pozycję kostki, kostka jest wyposażona w ESP8285-01F, który jest
Wymiana obudowy bezprzewodowego kontrolera Xbox 360: 15 kroków (ze zdjęciami)
Wymiana obudowy bezprzewodowego kontrolera Xbox 360: Przewodnik krok po kroku dotyczący wymiany obudowy kontrolera Xbox 360 na nową obudowę. Ten samouczek może pomóc uczniom w zrozumieniu podstaw sprzętu, inżynierii elektrycznej/komputerowej i informatyki za pomocą gier wideo
Zdalnie sterowany samochód - sterowanie za pomocą bezprzewodowego kontrolera Xbox 360: 5 kroków
Zdalnie sterowany samochód - sterowany za pomocą bezprzewodowego kontrolera Xbox 360: Są to instrukcje umożliwiające zbudowanie własnego zdalnie sterowanego samochodu, sterowanego za pomocą bezprzewodowego kontrolera Xbox 360
Demontaż, czyszczenie i ponowny montaż kontrolera Xbox 360.: 11 kroków (ze zdjęciami)
Demontaż, czyszczenie i ponowny montaż kontrolera dla konsoli Xbox 360.: Ten przewodnik krok po kroku zawiera instrukcje dotyczące demontażu, czyszczenia i ponownego montażu kontrolera dla konsoli Xbox 360. Przeczytaj każdy krok w całości bardzo uważnie przed wykonaniem, aby uniknąć problemów podczas procesu
Modyfikacja szybkiego ognia na konsolę Xbox 360 Rumble: 6 kroków
Xbox 360 Rumble Powered Rapid Fire Mod: Łatwy sposób na modyfikację kontrolera Xbox 360 bez wszystkich fantazyjnych mikrochipów i nadal niewykrywalny (DOSTĘPNE). (NIE ODPOWIADAM ZA JAKIEKOLWIEK USZKODZENIA KONTROLERA PODCZAS PROCESU MODYFIKOWANIA ---- KONTYNUUJ NA WŁASNE RYZYKO) PRZEPRASZAM ZA ZDJĘCIE