Proyecto: Mandos wireless con un arduino.

Buenas,

os quiero presentar mi proyecto ACDCW (Arduino Controller DreamCast Wireless), sip, el nombre no es muy agraciado, y espero que provisional hasta que se me ocurra/ se os ocurra algo mejor. Mientras tanto la culpa de @Zokormazo, xd

La idea básicamente es usar un arduino de por medio para poder usar otros mandos en la dreamcast.

En un principio tengo intención de adaptar el mando wireless de xbox 360 (básicamente porque voy a hacer las pruebas con el), aunque no estoy seguro si voy a tener demasiado lag y que tal se comportara. Por ejemplo el mando oficial de dreamcast tarda 58 μS en responder a los comandos, mientras que un mando de una third party ( Performance pad) tarda 161μS.

El problema viene, que un arduino anda algo justo para manejar la comunicación, tengo 4 ciclos para procesar cada señal, y encima la variante sincrona del protocolo que implementa, toca un poco los cojones (dos cables de datos a 1Mhz, en la primera mitad uno hace de reloj y el otro envia datos y en la segunda parte al reves, mas explicacion en mi github o http://mc.pp.se/dc/maplewire.html)

A parte de la implementación que haga del protocolo, tendré que sumar los ciclos que ocupará https://github.com/felis/USB_Host_Shield_2.0

Por ahora ando jugando con un analizador lógico (un clon de Saleae_Logic que en vez de costar 160$ cuesta 7 en aliexpress) y con http://sigrok.org/
Tengo escrito una primera versión muy básica del decodificador del protocolo, luego ya lo iré completando mostrando mas info de los mensajes y no solo el chorro de bytes enviados.
Imagen

Si todo va bien, y hay potencia suficiente o sino con una rbpi de por medio mi idea final (sino abandono antes, xd) es implementar lo máximo posible del protocolo de dreamcast en un arduino y habilitando mediante usb host shield mandos de xbox360, ps3/4 y bluetooth.

Ya puestos a desvariar sustituir la visual memory por una tarjeta sd. Implementar la visual memory (pantalla) en una pantalla externa (creo que no se usa la cpu de vm para nada, sino habría que meterse en emulación y ahi ya un arduino no da) o usar un wiimotion como lightgum.

Pero bueno todo poco a poco, que nunca he tocado nada de arduino y no tengo la placa para usar usb host para arduino, a ver si la pido mañana.

Ya iré informando de los progresos, aunque sino en https://github.com/nukru/ACDCW podréis ver los progresos.
Con el gran nombre que te invente y ya empieza a renegar de el xDDD
nu_kru escribió:Buenas,

os quiero presentar mi proyecto ACDCW (Arduino Controller DreamCast Wireless), sip, el nombre no es muy agraciado, y espero que provisional hasta que se me ocurra/ se os ocurra algo mejor. Mientras tanto la culpa de @Zokormazo, xd

La idea básicamente es usar un arduino de por medio para poder usar otros mandos en la dreamcast.

En un principio tengo intención de adaptar el mando wireless de xbox 360 (básicamente porque voy a hacer las pruebas con el), aunque no estoy seguro si voy a tener demasiado lag y que tal se comportara. Por ejemplo el mando oficial de dreamcast tarda 58 μS en responder a los comandos, mientras que un mando de una third party ( Performance pad) tarda 161μS.

El problema viene, que un arduino anda algo justo para manejar la comunicación, tengo 4 ciclos para procesar cada señal, y encima la variante sincrona del protocolo que implementa, toca un poco los cojones (dos cables de datos a 1Mhz, en la primera mitad uno hace de reloj y el otro envia datos y en la segunda parte al reves, mas explicacion en mi github o http://mc.pp.se/dc/maplewire.html)

A parte de la implementación que haga del protocolo, tendré que sumar los ciclos que ocupará https://github.com/felis/USB_Host_Shield_2.0

Por ahora ando jugando con un analizador lógico (un clon de Saleae_Logic que en vez de costar 160$ cuesta 7 en aliexpress) y con http://sigrok.org/
Tengo escrito una primera versión muy básica del decodificador del protocolo, luego ya lo iré completando mostrando mas info de los mensajes y no solo el chorro de bytes enviados.
Imagen

Si todo va bien, y hay potencia suficiente o sino con una rbpi de por medio mi idea final (sino abandono antes, xd) es implementar lo máximo posible del protocolo de dreamcast en un arduino y habilitando mediante usb host shield mandos de xbox360, ps3/4 y bluetooth.

Ya puestos a desvariar sustituir la visual memory por una tarjeta sd. Implementar la visual memory (pantalla) en una pantalla externa (creo que no se usa la cpu de vm para nada, sino habría que meterse en emulación y ahi ya un arduino no da) o usar un wiimotion como lightgum.

Pero bueno todo poco a poco, que nunca he tocado nada de arduino y no tengo la placa para usar usb host para arduino, a ver si la pido mañana.

Ya iré informando de los progresos, aunque sino en https://github.com/nukru/ACDCW podréis ver los progresos.


la idea no esta mal amigo, tomate el tiempo necesario y no abandones pues es un gran proyecto, ademas los controles de sega escasean en muchas partes y los controles de las nuevas generaciones son mucho mas comodos, estaria muy bueno poder utilisar 1 mando de dreamcast y 1 de xbox 360 por ejemplo si juegan 2 personas. :cool:
Seguiremos estos avances expectantes, es mucho curro pero creo que vale la pena, a parte que aprenderás un huevo con el proyecto.

Saludos.
Desde la ignorancia completa y absoluta
Habra q encufar algo en el puerto del mando no? Y luego, de alguna manera hacer q se comunique el mando de la 360 con la dc no?
Enchufar mediante un cable cortado o soldar directamente a la placa (hace mucho que no desponto una dc, pero no debería ser una soldadura dificil), yo por ahora las pruebas las estoy haciendo con un cable (extension) cortado.

No se como ira la latencia, por ahora tengo medio escrito el código de arduino que interpreta los datos que le llegan de la dreamcast. Luego tengo que ver la latencia que añade la comunicación con el mando de xbox y de que forma funciona USB_Host_Shield_2.0. Si funciona de manera asincrona casi seguro que tendre que buscar otra opción por falta de potencia. Si de manera sincrona hay mucha latencia pues lo mismo...

La otra solución pasaría por usar o un arduino due (que lleva un arm en sus tripas) u otro arduino encargado unicamente de la comunicación con el mando. Pero bueno todo con calma, además un pedido de alienexpress se ha perdirdo por el camino y me he quedado sin alguna que otra cosa que necesito para trastear.
Muy interesante tu proyecto, lo he pensado pero ni idea de programar
6 respuestas