Mục lục:

Bộ điều khiển Xbox 360 Gia tốc / Chỉ đạo con quay hồi chuyển Mod: 7 bước
Bộ điều khiển Xbox 360 Gia tốc / Chỉ đạo con quay hồi chuyển Mod: 7 bước

Video: Bộ điều khiển Xbox 360 Gia tốc / Chỉ đạo con quay hồi chuyển Mod: 7 bước

Video: Bộ điều khiển Xbox 360 Gia tốc / Chỉ đạo con quay hồi chuyển Mod: 7 bước
Video: 8 Người Cực KHÁC BIỆT Và Khó Tin Có Thể Bạn Không Tin Họ Đang Tồn Tại | Top 10 Huyền Bí 2024, Tháng bảy
Anonim
Bộ điều khiển Xbox 360 Chế độ điều khiển gia tốc / con quay hồi chuyển
Bộ điều khiển Xbox 360 Chế độ điều khiển gia tốc / con quay hồi chuyển

Tôi đã chơi Assetto Corsa bằng bộ điều khiển Xbox 360 của mình. Thật không may, tay lái bằng cần điều khiển tương tự rất khó sử dụng và tôi không có không gian để thiết lập bánh xe. Tôi đã cố gắng nghĩ cách có thể gắn một cơ cấu lái tốt hơn vào bộ điều khiển, khi tôi chợt nhận ra rằng tôi có thể sử dụng toàn bộ bộ điều khiển làm vô lăng.

Thanh tương tự có hai chiết áp. Một đo chuyển động dọc và một đo chuyển động ngang. Nó đặt 1,6V qua mỗi cái và đo điện áp được tạo ra ở cần gạt nước để xác định thanh đã di chuyển bao nhiêu. Điều này có nghĩa là có thể kiểm soát chuyển động của thanh gạt bằng cách cấp một điện áp cụ thể vào chốt gạt nước. (thông tin thêm tại đây:

Bản mod này sử dụng Arduino để tính toán góc từ các kết quả đo gia tốc và chuyển nó thành chuyển động của thanh analog thông qua DAC. Do đó, nó sẽ hoạt động với bất kỳ trò chơi nào sử dụng thanh analog làm đầu vào.

Bước 1: Bạn sẽ cần:

Công cụ:

  • Hàn sắt
  • Hàn
  • Mút hàn / bím tóc
  • Thợ thoát y dây
  • Tua vít, có thể là Torx tùy thuộc vào các vít trong bộ điều khiển của bạn (của tôi là đầu chéo)
  • Keo (tốt nhất không phải là keo siêu mạnh để có thể tháo rời sau này)
  • Bộ chuyển đổi USB sang nối tiếp để lập trình Arduino

Vật liệu:

  • Bộ điều khiển Xbox 360 (duh!)
  • Arduino Pro Mini (hoặc một bản sao) (tốt nhất là 3,3V. Nếu bạn sử dụng phiên bản 5V, bạn có thể cần một bộ chuyển đổi điện áp nâng cấp)
  • Một con quay hồi chuyển / gia tốc kế MPU-6050
  • Một MCP4725 DAC (hai nếu bạn muốn điều khiển cả hai trục)
  • Một số dây mỏng
  • Một bảng mạch để bạn có thể kiểm tra mọi thứ trước khi hàn (tùy chọn, nhưng được khuyến nghị)

Bước 2: Lấy bộ điều khiển ra ngoài

Bỏ ngoài bộ điều khiển
Bỏ ngoài bộ điều khiển
Bỏ ngoài bộ điều khiển
Bỏ ngoài bộ điều khiển
Bỏ ngoài bộ điều khiển
Bỏ ngoài bộ điều khiển

Có bảy con vít bạn phải tháo. Sáu trong số đó là hiển nhiên, nhưng thứ bảy nằm sau một nhãn dán. Tôi cho rằng việc loại bỏ nó sẽ làm mất hiệu lực bảo hành của bạn, vì vậy hãy tự chịu rủi ro khi tiếp tục. Nhiều người hướng dẫn nói rằng bạn cần một tuốc nơ vít Torx, nhưng của tôi thì quá khó, vì vậy hãy kiểm tra bộ điều khiển của bạn.

Sau đó, cẩn thận cạy nắp sau ra. Nếu bạn cạy ra phía trước, các nút sẽ tràn ra ngoài và có thể đi khắp phòng. Nâng nó từ dưới lên. Sau đó rút phích cắm của hai động cơ rung. (cái có trọng lượng nhỏ nên ở bên trái và cái có trọng lượng lớn ở bên phải) Lấy PCB ra và tháo các nắp cao su trên các que tương tự. Họ chỉ đơn giản là kéo ra.

Điều tiếp theo là loại bỏ thanh tương tự bên trái để nó không ảnh hưởng đến đầu vào của chúng tôi, nhưng cơ chế kích hoạt bên trái đang cản trở. Để tháo nó ra, bạn phải tháo ba chân của chiết áp ra khỏi mặt trước của bo mạch, sau đó tháo cơ chế ra khỏi PCB.

Tiếp theo, hủy bỏ 14 chân giữ thanh tương tự bên trái. Sau đó rút que ra.

Bước 3: Dán các thành phần vào vị trí

Dán các thành phần vào vị trí
Dán các thành phần vào vị trí
Dán các thành phần vào đúng vị trí
Dán các thành phần vào đúng vị trí

Bạn sẽ nhận thấy có khá nhiều khe hở giữa mặt sau của PCB và vỏ máy. Điều này giúp bạn có thể đặt tất cả phần cứng vào trong trường hợp mà không cần tháo bất cứ thứ gì.

Tôi chỉ nhận ra sau đó, nhưng đây sẽ là thời điểm tốt để hủy bỏ nút đặt lại trên Arduino. Nếu bạn không làm như vậy, nó sẽ đè lên mặt sau của vỏ và khiến dự án ngừng hoạt động nếu bạn siết chặt một trong các con vít khi lắp ráp lại.

Tôi dán một miếng thẻ mỏng vào mặt sau của mỗi PCB để cách nhiệt, sau đó dán nó vào PCB của bộ điều khiển. Tôi rất ngại dùng keo, nhưng không thể nghĩ ra cách nào tốt hơn để làm điều đó.

Các vị trí trong hình ảnh là sự kết hợp tốt nhất mà tôi có thể tìm thấy. Arduino nằm ở bên trái, với cạnh có nút đặt lại nằm ngang với miếng nhựa từ cơ chế kích hoạt bên phải, với mặt còn lại dưới dây và với góc càng gần đầu nối màu trắng càng tốt. Có một chỗ phồng nhẹ trong trường hợp, nhưng tôi không thể tìm thấy một nơi tốt hơn để đặt nó.

Gia tốc kế ở bên phải của dây. Nó phải phẳng và thẳng nhất có thể, nếu không bạn có thể phải viết một số mã sau đó để bù đắp cho phần bù đắp. Lưu ý rằng có một số miếng nhựa nhô ra ở mặt sau của ốp lưng mà bạn phải cẩn thận để tránh. Tôi thấy rằng bạn có thể đặt một thứ gì đó dính và nhiều màu sắc, chẳng hạn như son môi, lên những miếng nhựa nhô ra, sau đó đặt nắp sau lên để xem nó để lại dấu vết ở đâu.

(Các) DAC đi ở góc dưới cùng bên trái. Ở đây có đủ khoảng trống để xếp hai DAC, một chiếc chồng lên nhau, nếu bạn muốn điều khiển cả hai trục. Bạn không cần phải dán chúng xuống. Chúng sẽ ở lại vị trí của chúng chỉ với các kết nối được hàn. Nếu bạn đang dính thẻ giữa chúng, hãy đảm bảo rằng bạn cắt thẻ để có thể truy cập SCL, SDA, VCC và GND, vì bạn sẽ truy cập chúng từ cả hai phía.

Nếu bạn sử dụng hai DAC, đừng quên chuyển đổi jumper địa chỉ và tắt các điện trở kéo lên trên một trong số chúng, như được mô tả tại đây: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -converter-hookup-guide

Bước 4: Hàn dây điện vào

Hàn dây điện trên
Hàn dây điện trên
Hàn dây điện trên
Hàn dây điện trên
Hàn dây điện trên
Hàn dây điện trên

Bây giờ bạn phải kết nối mọi thứ. VCC, GND, SDA và SCL từ tất cả 2/3 thiết bị phải được kết nối với VCC, GND, A4 và A5 tương ứng trên Arduino. DAC là phần phức tạp nhất. Nếu bạn có hai, bạn phải kết nối chúng với nhau, trong khi rời khỏi một nơi nào đó, bạn có thể kết nối nguồn và đường dây với gia tốc kế, trong khi giữ dây OUT riêng biệt.

Chân OUT trên DAC phải được kết nối với chân trên PCB của bộ điều khiển, chân này từng là chân chiết áp ngang ở giữa cho thanh analog. Đó là, nơi có thanh tương tự, có một hàng ba chân ở trên cùng. Kết nối nó với cái ở giữa. Nếu bạn có một DAC khác, hãy kết nối nó với chân chiết áp dọc (hàng bên trái) theo cách tương tự. Bạn sẽ không thể truy cập các chân từ phía sau khi thay thế bộ kích hoạt, vì vậy bạn phải chạy dây đến phía trước của bảng. Có một "bức tường" bằng nhựa hình tròn xung quanh khu vực thanh tương tự, nhưng may mắn thay, có một khoảng trống thuận tiện trong đó để bạn có thể luồn dây qua. Đảm bảo rằng các dây không vướng vào trụ vít ở phần trước của vỏ máy.

Kế hoạch ban đầu của tôi là cấp nguồn cho Arduino bằng nguồn 5V từ cáp USB được kết nối với chân RAW, nhưng khi tôi thử nó, nó không hoạt động. Arduino không chạy bất cứ thứ gì và cả Arduino và bộ điều khiển đều tắt sau vài giây. Tuy nhiên, tôi phát hiện ra rằng có một đầu ra 3.3V ổn định từ hai chân ở mặt trước của bo mạch gần ổ cắm ngoại vi màu đen, có lẽ là để cấp nguồn cho các thiết bị ngoại vi. Nó hoạt động với cả VCC và RAW, nhưng tôi chọn VCC vì nó đã có điện áp phù hợp và vì nó cho phép tôi hàn nó vào dây VCC trên DAC đã gần cuối bảng và tiết kiệm dây.

Cần biết rằng có rất nhiều phần nhựa nhô ra từ vỏ máy mà bạn phải thao tác xung quanh, nhưng nếu bạn dán dây vào vị trí, bạn chỉ phải lo lắng về chúng một lần.

Tất cả những điều này rất khó diễn tả bằng lời, vì vậy tôi đã đưa vào các bức tranh và một sơ đồ thô sơ.

Bước 5: Lập trình Arduino

Bây giờ bạn phải lập trình Arduino. Điều này yêu cầu di chuyển cáp USB trên bộ điều khiển để bạn có thể truy cập các chân nối tiếp trên Arduino. Tôi đã bao gồm mã mà tôi đã sử dụng. Nó yêu cầu thư viện Adafruit MCP4725, có thể tìm thấy ở đây:

Tương tự như vậy, mã cho phép bạn đi qua toàn bộ phạm vi chuyển động của thanh tương tự bằng cách di chuyển bộ điều khiển 90 độ sang trái đến 90 độ sang phải và giữ nó ở giữa bằng cách giữ nó phẳng.

Nó nhận được góc của bộ điều khiển bằng cách tính toán tiếp tuyến nghịch đảo của lực g trục X chia cho lực g trục Z. Điều này có nghĩa là nó hoạt động nếu bộ điều khiển thẳng đứng, phẳng hoặc bất kỳ góc nào ở giữa. (thêm thông tin tại đây:

Nó hoạt động trên bộ điều khiển của tôi, nhưng các bộ điều khiển khác có thể yêu cầu điện áp khác nhau, khiến nó bị lệch. Tôi nghĩ rằng cách tốt nhất để tìm dải điện áp là dùng thử và sai. Nhiều trò chơi sẽ hiển thị cho bạn một thanh trượt cho chuyển động của thanh tương tự, nhưng cách chính xác nhất mà tôi đã tìm thấy để xác định chuyển động là với jstest trên Linux. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Nó cung cấp cho bạn một số từ -32, 767 đến 32, 767 chứ không phải là một hình ảnh, vì vậy bạn biết chính xác vị trí của cây gậy. Cắm cả bộ điều khiển và Arduino USB vào bộ chuyển đổi nối tiếp, tải jstest và thử các giá trị DAC khác nhau cho đến khi bạn đạt đến đỉnh và cuối của dải và ghi chú lại từng giá trị. Đối với tôi, đó là 1, 593 - 382.

Đặc biệt quan tâm là dòng 36:

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

Nó không rõ ràng ngay lập tức nó làm gì. Đơn giản, nó lấy góc của bộ điều khiển (đo bằng radian và từ ~ 1,57 đến ~ -1,57) và chuyển nó thành giá trị từ 1, 593 đến 382 cho DAC. Nếu bạn có dải DAC khác, bạn sẽ cần thay đổi dòng đó.

Dòng có thể được viết là:

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

Với và là những con số bạn cần thay đổi. bằng phạm vi của góc bộ điều khiển (pi) chia cho tổng phạm vi giá trị DAC. (phần trên cùng của dải trừ phần dưới của dải) Điều này giúp bạn có thể thay đổi điện áp, mặc dù kết quả sẽ nằm ngoài dải mà bạn muốn. Đó là lý do tại sao bạn cần. bằng nhân với đáy của phạm vi cộng với một nửa phạm vi chuyển động của bộ điều khiển. (pi / 2) Thêm một nửa phạm vi chuyển động để đảm bảo rằng đó không phải là số âm và thêm nhân với dưới cùng của phạm vi đảm bảo rằng nó được đồng bộ hóa với phạm vi bạn muốn.

Khi chuyển đổi số thập phân thành số nguyên, C ++ không làm tròn. Thay vào đó, nó cắt bỏ số thập phân, do đó 9,9 trở thành 9. Thêm 0,5 vào cuối đảm bảo bất kỳ thứ gì trên một nửa sẽ chuyển sang số nguyên tiếp theo, do đó, nó sẽ làm tròn.

Khi bạn đã tải lên chương trình của mình, hãy đảm bảo rằng nó hoạt động với jstest.

Bước 6: Lắp ráp lại Bộ điều khiển

Đặt bộ điều khiển lại với nhau giống như cách bạn đã tách nó ra, trừ thanh tương tự bên trái. Nó sẽ hoạt động ngay bây giờ. Tôi thấy không có độ trễ đáng chú ý và nó tốt hơn rất nhiều so với việc sử dụng thanh analog. Bởi vì nó sử dụng một gia tốc kế, nó bị ảnh hưởng bởi các chuyển động đột ngột, nhưng bạn phải cố gắng hết sức để nhận thấy nó.

Bước 7: Những cải tiến có thể xảy ra

Có một số cải tiến có thể được thực hiện. Bao gồm các:

  • Sử dụng dây điện từ ít rườm rà hơn
  • Khắc mọi thứ lên một PCB được thiết kế để vừa với vỏ bộ điều khiển
  • Gắn lại thanh tương tự bên trái và kết nối các chân với đầu vào tương tự trên Arduino để chúng có thể được sử dụng để điều chỉnh Arduino
  • Lấy phần vỏ sau cho bộ điều khiển không dây và đặt dự án vào ngăn chứa pin (điều này sẽ yêu cầu cắt một lỗ cho cáp USB)

Đề xuất: