PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Различные инструкции [FAQ] (https://www.pspx.ru/forum/forumdisplay.php?f=130)
-   -   Xbox 360 RF + Arduino = беспроводный приемник контроллера для PC (https://www.pspx.ru/forum/showthread.php?t=111171)

jekakmv 29.01.2021 13:05

Xbox 360 RF беспроводный приемник контроллера для PC
 
Вложений: 7
Подключаем Xbox 360 RF к PC


Xbox 360 RF + Arduino = беспроводный приемник контроллера для PC

В этой инструкции будут описаны шаги по подключению радиочастотного модуля от xbox 360 к вашему компьютеру, чтобы вы могли использовать беспроводной контроллер вместе с вашим компьютером.

Список деталей:
  1. Arduino - удивительный плата микроконтроллера.
  2. Модуль RF - со сломанной Xbox 360
  3. USB-кабель
  4. Диоды 1N4001-2шт (Диод может быть 1N4001, 1N914 или 1N4148. В основном каждый диод имеет падение 0,7V на нем, так что два последовательных диода дают 5 – 0.7 – 0.7 = 3,6V, что близко к требуемому 3V3. Точно так же стабилитрон-это грязный способ добраться от 5V до 3V3.
    Самый лучший и безопасный способ-это использовать регулятор напряжения 3V3, чтобы сделать преобразование 5V в 3V3)
  5. Резистор:
    • Arduini uno 10КоМ - 2шт
    • Arduino mini pro,nano нужно будет подтянуть с 3,3v резисторы на 100 Ом
Нажмите для увеличения


Регулятор 3V3 также можно получить из мертвого XBox:

Нажмите для увеличения
Схема подключения:


Нажмите для увеличения
Нажмите для увеличения
Нажмите для увеличения
Прошивка Ardyino:

Вам нужно будет запрограммировать свой Arduino с помощью этого кода.

код Ардуино устарело
Код:

/* Arduino code to communicate with xbox 360 RF module.
Original work by (yaywoop) / additional ideas from Alexander Martinez - modified by dilandou (www.dilandou.com, www.diru.org/wordpress)
First sends LED initialisation code followed by LED startup animation code, then sleeps until a button press for sync command.
RF module must be powered with 3.3V, two diodes in series with USB 5v will do. Connect the USB wires to a host computer, and the data and serial wires to Arduino.
of course, make sure to have a common ground */

#include <avr/sleep.h>

#define sync_pin 2 //power button repurposed for sync button (pin 5 on the module)
#define data_pin 3 //data line (pin 6 on the module)
#define clock_pin 4 //clock line (pin 7 on module)

int led_cmd[10] =  {0,0,1,0,0,0,0,1,0,0}; //Activates/initialises the LEDs, leaving the center LED lit.
int anim_cmd[10] = {0,0,1,0,0,0,0,1,0,1}; //Makes the startup animation on the ring of light.
int sync_cmd[10] = {0,0,0,0,0,0,0,1,0,0}; //Initiates the sync process.
volatile boolean sync_enable = 0;

void sendData(int cmd_do[]) {
  pinMode(data_pin, OUTPUT);
  digitalWrite(data_pin, LOW);    //start sending data.
  int prev = 1;
  for(int i = 0; i < 10; i++){

    while (prev == digitalRead(clock_pin)){} //detects change in clock
    prev = digitalRead(clock_pin);
      // should be after downward edge of clock, so send bit of data now
    digitalWrite(data_pin, cmd_do[i]);

    while (prev == digitalRead(clock_pin)){} //detects upward edge of clock
    prev = digitalRead(clock_pin);
  }
  digitalWrite(data_pin, HIGH);
  pinMode(data_pin, INPUT);
}

void initLEDs(){
        sendData(led_cmd);
        delay(50);
        sendData(anim_cmd);
        delay(50);
}

void wakeUp(){
  sync_enable = 1;
}

void sleepNow() {
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // set sleep mode
  sleep_enable(); //enable sleep bit
  attachInterrupt(0, wakeUp, LOW);
  sleep_mode();
  sleep_disable(); //disable sleep bit
  detachInterrupt(0); // disables interrupt 0 on pin 2
}

void setup() {
  Serial.begin(9600);
  pinMode(sync_pin, INPUT);
  digitalWrite(sync_pin,HIGH);
  pinMode(data_pin, INPUT);
  pinMode(clock_pin, INPUT);
  delay(2000);

  initLEDs();
//  sendData(sync_cmd);
}

void loop(){
  Serial.println("Sleeping.");
  sleepNow();
  delay(200);
  if(sync_enable==1) {
    Serial.println("Syncing.");
    sendData(sync_cmd);
    sync_enable = 0;
  }
}



Скачать:
  • :download: Код Ардуино устарело: xbox_360_controller
  • :download: Исправленный Код Ардуино (проверял на Arduino Pro Mini)
    Теперь не нужно подтягивать резисторы, подтяжка выполнена программно (внутренняя подтяжка)
    Убрано немного лишнего кода
  • Если установлена Windows 10 советую использовать драйвер встроенный в 10ку
    Диспетчер устройств => выбираем наше устройство => Обновить драйвер => Найти драйвер на этом компьютере => Выбрать драйвер из списка доступных драйверов на компьютере => Периферийные устройства Xbox 360 => Беспроводной приемник Xbox 360 для Windows


Установки драйверов XP W7

:download: Качаем драйвера: Xbox360_32Eng.rar Xbox360_64Eng.rar https://i.ibb.co/3MD3VkT/header-icon.png

После установки драйверов, зайдите в папку (Microsoft Xbox 360 Acessories) найти по пути
Код:

C:\Program Files\Microsoft Xbox 360 Accessories
Xusb21.inf файл драйвер, файл нужно будет изменить. Открыть его с помощью текстового редактора или программы, как Notepad++ (рекомендуемый)

И в данных секциях [MSFT.NTx86.6.0], [MSFT.NTamd64.6.0], [MSFT.NTx86], [MSFT.NTamd64].

Меняем это

Код:

%XUSB21.DeviceName.Wired%=CC_Install, USBVid_045E&Pid_028E
%XUSB21.DeviceName%=CC_Install, USBVid_045E&Pid_0719
%XUSB21.DeviceName.Wired%=CC_Install, USBMS_COMP_XUSB10
%XUSB21.DeviceName%=CC_Install, USBMS_COMP_XUSB20
%XUSB21.DeviceName.Jump%=CC_Install, USBVid_045E&Pid_028F

На это

Код:

%XUSB21.DeviceName.Wired%=CC_Install, USBVid_045E&Pid_0291
%XUSB21.DeviceName%=CC_Install, USBVid_045E&Pid_0291
%XUSB21.DeviceName.Wired%=CC_Install, USBUNKNOWN
%XUSB21.DeviceName%=CC_Install, USBUNKNOWN

После этого перегружаемся в режиме отключенной подписи драйверов. В win 8 делается так.

shutdown.exe /r /o /f /t 00
Диагностика - Дополнительные параметры - Параметры загрузки - F7

Перазагружаемся, подключаем устройство, указываем путь к драйверу, файлу Xusb21.inf

Синхронизируемся кнопкой включения.

Видео:

Arduino Uno
Arduino Uno


Xbox 360 Rf + Arduino mini pro 5v
Xbox 360 Rf + Arduino mini pro 5v


Xbox 360 Rf + Arduino Nano
Xbox 360 Rf + Arduino Nano




Список деталей:
  1. Плата из фатки RF-01 (до модулей из слимок руки не дошли, а с фатками уже сделал несколько штук себе, друзьям и родственникам)
  2. USB шнурок или прочие варианты (под прочими вариантами, для двух ресиверов я просто взял старые ADSL модемы, у которых есть USB вход, использовал их как корпус, и как разъём, и как кнопку)
  3. Диод для понижения напряжения c 5v до 3,3v(например 1n4006) или стабилизатор напряжения с 5в на 3.3 вольта
  4. Микроконтроллер pic12f629
  5. Простейший программатор, который собирается на коленках. (можно любой другой)


Но пойдём в обратном порядке:
Программатор:
Схема программатора для COM порта
Нажмите для увеличения
Нажмите для увеличения


Несколько раз собирал такие, был вариант и на монтажной плате (где просто втыкаешь детали и соединяешь проводками), потом спаял платку.

Программатор, пример платы
Нажмите для увеличения


Что бы прошить микросхему нам потребуется прошивка
SyncRF360.zip ( 133,21 КБ )

И программа для прошивки (на win10 я пользовался этой)
winpicpgm_1.8.0.rar ( 1,1 МБ )

Теперь по схемам можно использовать оригинальную схему



Альтернативные точки
Нажмите для увеличения
Нажмите для увеличения
Нажмите для увеличения


Для подручности мануала добавлю ещё эту фотку с распиновкой USB


Вот исходный код для PIC16F629.
;**********************************************************************
; This file is a basic code template for assembly code generation *
; on the PIC12F629. This file contains the basic code *
; building blocks to build upon. *
; *
; Refer to the MPASM User’s Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
; *
;**********************************************************************
; *
; Files Required: P12F629.INC *
; *
;**********************************************************************
; *
; Notes: *
; *
;**********************************************************************

list p=12f629 ; list directive to define processor
#include ; processor specific variable definitions

errorlevel -302 ; suppress message 302 from list file

__CONFIG 0x3FD4

; ‘__CONFIG’ directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See data sheet for additional information on configuration word settings.

CBLOCK 0x15
ENDC

;***** VARIABLE DEFINITIONS

;**********************************************************************
ORG 0
BSF STATUS,RP0
CALL 0x3ff
MOVWF T1CON
BCF STATUS,RP0
MOVLW 0x7
MOVWF CMCON
BSF STATUS,RP0
MOVLW 0xfd
MOVWF GPIO
MOVLW 0x1
MOVWF TMR0
MOVLW 0xff
MOVWF 0x15
BCF STATUS,RP0
BSF INTCON,T0IE
CLRF 0x23
BSF GPIO,GPIO1
CALL 0xf
CALL 0x78
CALL 0xf
GOTO 0x68
CALL 0xb
CALL 0xb
CALL 0xb
CALL 0xb
CALL 0x7c
CALL 0x9
CALL 0x76
BTFSC GPIO,GPIO5
GOTO 0x6b
BTFSS GPIO,GPIO5
GOTO 0x6d
CALL 0x7c
CALL 0x9
CALL 0x7a
GOTO 0x64
CLRF 0x23
BSF GPIO,GPIO1
RETURN
MOVLW 0xaf
GOTO 0x21
MOVLW 0x84
GOTO 0x21
MOVLW 0x4
GOTO 0x21
MOVLW 0x90
GOTO 0x21

end


Драйвера:


И видео на тему установки драйверов на примере win10 (при перетыкании в другой USB разъём действие нужно повторять)
bandicam 2020-12-15 20-59-42-394.mp4 ( 11,77 МБ )

После установки драйверов, зайдите в папку (Microsoft Xbox 360 Acessories) найти по пути
Код:

C:\Program Files\Microsoft Xbox 360 Accessories
Xusb21.inf файл драйвер, файл нужно будет изменить. Открыть его с помощью текстового редактора или программы, как Notepad++ (рекомендуемый)

И в данных секциях [MSFT.NTx86.6.0], [MSFT.NTamd64.6.0], [MSFT.NTx86], [MSFT.NTamd64].

Меняем это

Код:

%XUSB21.DeviceName.Wired%=CC_Install, USBVid_045E&Pid_028E
%XUSB21.DeviceName%=CC_Install, USBVid_045E&Pid_0719
%XUSB21.DeviceName.Wired%=CC_Install, USBMS_COMP_XUSB10
%XUSB21.DeviceName%=CC_Install, USBMS_COMP_XUSB20
%XUSB21.DeviceName.Jump%=CC_Install, USBVid_045E&Pid_028F

На это

Код:

%XUSB21.DeviceName.Wired%=CC_Install, USBVid_045E&Pid_0291
%XUSB21.DeviceName%=CC_Install, USBVid_045E&Pid_0291
%XUSB21.DeviceName.Wired%=CC_Install, USBUNKNOWN
%XUSB21.DeviceName%=CC_Install, USBUNKNOWN

После этого перегружаемся в режиме отключенной подписи драйверов. В win 8 делается так.

shutdown.exe /r /o /f /t 00
Диагностика - Дополнительные параметры - Параметры загрузки - F7

Перазагружаемся, подключаем устройство, указываем путь к драйверу, файлу Xusb21.inf

Синхронизируемся кнопкой включения.

RF-01 Xbox 360 PC
RF-01 Xbox 360 PC


XBox 360 HF Module + PIC16F628
XBox 360 HF Module + PIC16F628


Источник: google.com | 4pda.ru

Ghost-Tula 07.06.2021 08:35

jekakmv,
Немного исправленная прошивка для Arduino (проверял на Arduino Pro Mini)
Теперь не нужно подтягивать резисторы, подтяжка выполнена программно (внутренняя подтяжка)
Убрано немного лишнего кода

Если установлена Windows 10 советую использовать драйвер встроенный в 10ку
Диспетчер устройств => выбираем наше устройство => Обновить драйвер => Найти драйвер на этом компьютере => Выбрать драйвер из списка доступных драйверов на компьютере => Периферийные устройства Xbox 360 => Беспроводной приемник Xbox 360 для Windows

Скачать

jekakmv 09.06.2021 23:03

Цитата:

Сообщение от Ghost-Tula (Сообщение 1238156)
jekakmv,
Немного исправленная прошивка для Arduino (проверял на Arduino Pro Mini)
Теперь не нужно подтягивать резисторы, подтяжка выполнена программно (внутренняя подтяжка)
Убрано немного лишнего кода

Если установлена Windows 10 советую использовать драйвер встроенный в 10ку
Диспетчер устройств => выбираем наше устройство => Обновить драйвер => Найти драйвер на этом компьютере => Выбрать драйвер из списка доступных драйверов на компьютере => Периферийные устройства Xbox 360 => Беспроводной приемник Xbox 360 для Windows

Скачать

Обновил :good::thank_you:


Текущее время: 14:03. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.