XBOX 360 RF MODULE a USB Con ATTINY85

by alvin.jcg in Circuits > Arduino

1904 Views, 5 Favorites, 0 Comments

XBOX 360 RF MODULE a USB Con ATTINY85

IMG_20210401_222327.jpg
DIGISPARK.png
x360 rf.JPG
Demo Modulo X360 Attiny85 USB

Este instructable es para el reciclado de un modulo RF de Xbox 360 para su uso en PC o Laptop mediante USB, para conectar mandos inalámbricos tal cual si fuera el adaptador vendido por MS.

Del 0 siendo nada complicado, al 10 siendo muy complicado, considero una complejidad de 5 para este proyecto.

Oprimiendo la "X" del logotipo de Xbox se pulsara el botón originalmente de power, que se ha reutilizado para enviar el comando (con el attiny) de sincronización de mandos. los LEDs verdes harán la animación en circulo.

Se requieren el siguiente material

Cables pequeños varios.

Cautín y soldadura

1x Attiny85 Genérico (Digispark)

1x Regulador de voltaje a 3.3 volts de su preferencia. (No recomiendo utilizar los 2x diodos en serie, pero cada quien bajo su responsabilidad)

Contenedor plástico o caja impresa en 3D (dejo modelo en STL tiempo de impresión aproximado 5h)

Programar Y Conectar Attiny85 (Digispark)

IMG_20210320_142016_.jpg
IMG_20210320_103503_.jpg
IMG_20210320_085745_.jpg
IMG_20210320_085802_.jpg

Primero programaremos el Attiny85 con el siguiente código:

Si no compila descarguen el archivo ino adjunto mejor. Ahí vienen los links para utilizar el Digispark

// IMPORTANTE instalar drivers especiales para Digispark ATTINY85, gestor de tarjetas y tarjeta//Codigo modificado tomado de: /* Arduino code to communicate with xbox 360 RF module.Original work by (yaywoop) / additional ideas from Alexander Martinez - modified by dilandou (www.dilandou.comFirst 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> /*Al utilizar la tarjeta Digispark Attiny85 las interrupciones no funcionan bien, asi que no las utilizo, posiblemente por conflicto con el bootloader.Pudiera suceder lo mismo con Arduino Leonardo o cualquier otro que tenga bootloader integrado con USB nativo.*/#define sync_pin 2 //power button repurposed for sync button (pin 5 on the module)#define data_pin 1 //data line (pin 6 on the module)#define clock_pin 0 //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.//int all_red[10] = {0,0,1,0,1,1,1,1,1,1};//int all_orange[10] = {0,0,1,1,1,0,0,0,0,0};int CLEAR_ERROR[10] = {0,0,1,1,0,0,0,0,0,0};volatile boolean sync_enable = 0;void setup() {  pinMode(sync_pin, INPUT_PULLUP);  digitalWrite(sync_pin,HIGH);  pinMode(data_pin, INPUT);  pinMode(clock_pin, INPUT);  delay(2000);  initLEDs();//  sendData(sync_cmd);}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);  sendData(CLEAR_ERROR);  delay(50);}//void clr_errors(){//  sendData(CLEAR_ERROR);//  delay(50);//  sendData(led_cmd);//  delay(50);//  sendData(anim_cmd);//  delay(50);//}void loop(){  sync_enable = !digitalRead(sync_pin);  if(sync_enable==1) {    sendData(sync_cmd);    sync_enable = 0;    delay(10000);    digitalWrite(sync_pin,HIGH);  }}<br>

Una vez programado procederemos a levantar los pines 2 y 3 del PCB con ayuda de un cautín de punta fina o un cautín y una aguja (esto es necesario ya que se utilizara el puerto micro USB para comunicar el modulo RF del x360) de lo contrario causaría conflictos al tratar de enumerar ambos dispositivos al mismo tiempo o incluso podría causar daño en alguno de los circuitos. Posteriormente se deberá conectar como se muestra en la segunda imagen.

Detallar Soldadura, Montaje Y Contenedor

IMG_20210320_103543.jpg
IMG_20210320_103604.jpg
IMG_20210401_222027.jpg

Al final dejo los archivos de INO y STL

Atentos que el Attiny85 quedo aislado del modulo RF con un sobrante de bolsa anti estática de la misma en la que vino empaquetada, se ve en la foto.

Si realizaron los pasos de forma correcta, al conectar con un cable microUSB les debería aparecer el modulo en el administrador de dispositivos,

en Windows 10 los drivers ya vienen instalados?? mi Windows ya los tenia, solo hay que dar clic secundario... actualizar controlador... Buscar controladores en mi equipo... Elegir de una lista de controladores disponibles en el equipo... Periféricos de Xbox 360... Receptor inalámbrico de Xbox 360 para Windows... siguiente y aceptar aceptar aunque diga algo que no es compatible... Los controles se deben enumerar solos cuando se sincronizan pero por si no, es el mismo procedimiento solo que al ultimo seleccionar "Controlador de Xbox 360 para Windows"

NOTA: al emparejar los mandos NO se iluminaran los leds verdes como si fuera un 360 normal, sin embargo si los reconocerá en el administrador de dispositivos.