Xbox 360 RF + Arduino = беспроводный приемник контроллера для PC
В этой инструкции будут описаны шаги по подключению радиочастотного модуля от xbox 360 к вашему компьютеру, чтобы вы могли использовать беспроводной контроллер вместе с вашим компьютером.
Список деталей:
Arduino - удивительный плата микроконтроллера.
Модуль RF - со сломанной Xbox 360
USB-кабель
Диоды 1N4001-2шт (Диод может быть 1N4001, 1N914 или 1N4148. В основном каждый диод имеет падение 0,7V на нем, так что два последовательных диода дают 5 – 0.7 – 0.7 = 3,6V, что близко к требуемому 3V3. Точно так же стабилитрон-это грязный способ добраться от 5V до 3V3.
Самый лучший и безопасный способ-это использовать регулятор напряжения 3V3, чтобы сделать преобразование 5V в 3V3)
Резистор:
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;
}
}
Исправленный Код Ардуино (проверял на Arduino Pro Mini)
Теперь не нужно подтягивать резисторы, подтяжка выполнена программно (внутренняя подтяжка)
Убрано немного лишнего кода
Если установлена Windows 10 советую использовать драйвер встроенный в 10ку
Диспетчер устройств => выбираем наше устройство => Обновить драйвер => Найти драйвер на этом компьютере => Выбрать драйвер из списка доступных драйверов на компьютере => Периферийные устройства Xbox 360 => Беспроводной приемник Xbox 360 для Windows
Перазагружаемся, подключаем устройство, указываем путь к драйверу, файлу Xusb21.inf
Синхронизируемся кнопкой включения.
Видео:
Arduino Uno
Xbox 360 Rf + Arduino mini pro 5v
Xbox 360 Rf + Arduino Nano
Список деталей:
Плата из фатки RF-01 (до модулей из слимок руки не дошли, а с фатками уже сделал несколько штук себе, друзьям и родственникам)
USB шнурок или прочие варианты (под прочими вариантами, для двух ресиверов я просто взял старые ADSL модемы, у которых есть USB вход, использовал их как корпус, и как разъём, и как кнопку)
Диод для понижения напряжения c 5v до 3,3v(например 1n4006) или стабилизатор напряжения с 5в на 3.3 вольта
Микроконтроллер pic12f629
Простейший программатор, который собирается на коленках. (можно любой другой)
Но пойдём в обратном порядке:
Программатор:
Схема программатора для 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.
И видео на тему установки драйверов на примере 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].
jekakmv,
Немного исправленная прошивка для Arduino (проверял на Arduino Pro Mini)
Теперь не нужно подтягивать резисторы, подтяжка выполнена программно (внутренняя подтяжка)
Убрано немного лишнего кода
Если установлена Windows 10 советую использовать драйвер встроенный в 10ку
Диспетчер устройств => выбираем наше устройство => Обновить драйвер => Найти драйвер на этом компьютере => Выбрать драйвер из списка доступных драйверов на компьютере => Периферийные устройства Xbox 360 => Беспроводной приемник Xbox 360 для Windows
Другие консоли: PS5, Xbox Series X, xbox360, PS4 Slim, sega, dendy
Регистрация: 30.04.2017
Адрес: Ставропольский край
Возраст: 38
Сообщений: 6,328
Вы сказали Спасибо: 2,199
Поблагодарили 12,028 раз(а) в 3,126 сообщениях
Сила репутации: 1
Репутация: 18367 
(репутация неоспорима)
Сообщение от Ghost-Tula
jekakmv,
Немного исправленная прошивка для Arduino (проверял на Arduino Pro Mini)
Теперь не нужно подтягивать резисторы, подтяжка выполнена программно (внутренняя подтяжка)
Убрано немного лишнего кода
Если установлена Windows 10 советую использовать драйвер встроенный в 10ку
Диспетчер устройств => выбираем наше устройство => Обновить драйвер => Найти драйвер на этом компьютере => Выбрать драйвер из списка доступных драйверов на компьютере => Периферийные устройства Xbox 360 => Беспроводной приемник Xbox 360 для Windows
Другие консоли: PS5, Xbox Series X, xbox360, PS4 Slim, sega, dendy
Регистрация: 30.04.2017
Адрес: Ставропольский край
Возраст: 38
Сообщений: 6,328
Вы сказали Спасибо: 2,199
Поблагодарили 12,028 раз(а) в 3,126 сообщениях
Сила репутации: 1
Репутация: 18367 
(репутация неоспорима)
Сообщение от Ghost-Tula
jekakmv,
Немного исправленная прошивка для Arduino (проверял на Arduino Pro Mini)
Теперь не нужно подтягивать резисторы, подтяжка выполнена программно (внутренняя подтяжка)
Убрано немного лишнего кода
Если установлена Windows 10 советую использовать драйвер встроенный в 10ку
Диспетчер устройств => выбираем наше устройство => Обновить драйвер => Найти драйвер на этом компьютере => Выбрать драйвер из списка доступных драйверов на компьютере => Периферийные устройства Xbox 360 => Беспроводной приемник Xbox 360 для Windows
Очень странно так как у меня все хорошо раотает проверял на 2х RF модулях, единственное на данный момент у меня нету другой ардуинки, что бы лучше проверить
Очень странно так как у меня все хорошо раотает проверял на 2х RF модулях, единственное на данный момент у меня нету другой ардуинки, что бы лучше проверить
делал на ардуино нано китай. по обновленному коду все работает
Может мне драйвер по новый поставить не пойму с чем связанно.
Подключи RF и зайди в диспетчер устройств, если там неизвестное устройство и нет (Периферийные устройства Xbox360) то обнови драйвер вручную. Он находиться в папке Microsoft Xbox 360 Accessories в Program Files (x86) , вручную выбери файл Xusb21.inf и в окне потом Xbox360 Controller for Windows . Вот пример если у тебя работало и вдруг перестало подключать геймпад, то это тоже слетают драйвера. А слетают они банально то обнова на венду прилетит то если ты сменишь юсб гнездо куда подключал модулятор .
Сделал свой ресивер из платы от фатки.
атмегу, пик или даже тиньку чет жалко для такого, но были под рукой копеечные smt8 (которые как то купил горстью, так и лежали не понятно для чего) и на платке еще и стабилизатор 3.3 есть.
немного пришлось поправить код. не верная работа с подтяжками! и в моем контроллере не стал разбираться как усыплять его (смысл)
исходники тоже прилагаю (вроде как и на меге код должен работать так же корректно).
пасибо, но я хотел именно прикрепить (загрузить).
ну да ладно, кстати смоделил корпус и напечатал себе с кнопочкой. если надо забирайте https://www.thingiverse.com/thing:6122589
angellfear, karenjan99, обычно в Хекс-редакторе делают Export в формат Intel Hex любой битности с расширением *.hex
А затем, после вставки кода в текстовой файл *.hex, делают Import в Хекс-редактор:
Другие консоли: PS1, PS2, PS3, PSVITA, XBOX360, XBOX ONE
Регистрация: 07.03.2015
Возраст: 34
Сообщений: 418
Вы сказали Спасибо: 3
Поблагодарили 57 раз(а) в 43 сообщениях
Сила репутации: 1
Репутация: 57 
(скоро придёт к известности)
пробую собрать с pic, собрал программатор из шапки залил дамп, вот то что считывает picpgm в файл. он должен быть одинаковым или я чет не понимаю или накосячил?
и второй снятый через ic prog в формате binary