Gamepads Bluetooth: Blueretro + Arduino / Conversor AE: Pruebas, experiencias y resultados.

* Para saber como emparejar los Dualshock3, ir al final del post.

Venimos de estos dos hilos, pero que todo está muy mezclado

Hilo de @puga hilo_mando-bluetooth-en-xbox_2445234 y el hilo de @superfenix2020 hilo_mandos-bluetooth-modernos-en-xbox_2475836

Vídeos de @davidx

Vídeo 1

Vídeo 2

He montado tres prototipos, uno con esp32 + level shifter + arduino pro mini (es como el nano pero sin conector USB) el otro con esp32 + level shifter + arduino pro micro El precio no se va mas de unos 12€ por unidad. En el último utilizo el extinto conversor comercial psx2xbox.
Para flashear los arduinos he usado un programador USBasp, es parecido al USBtiny, ya que vía el USB que llevan incorporado tanto el nano como el pro micro, no se deja flashear bien los fuses. Al arduino pro micro parece no afectarle el tema de los fuses y no he visto diferencias de flashear vía su USB nativo..
Conexionado del programador USBasp a un Arduino Pro Mini, también es válido para el Nano / Pro Micro y muchos mas. Las dos primeras fotos no son mías.

Imagen

Imagen

Esta si son mías

Imagen

Imagen

Prototipos:

En todos los casos el ESP32 (30 pines) esta flasheado con el firm v1.83 hw1 Blueretro playstation de darkcloud

Imagen

Prototipo 1: esp32 + level shifter + arduino pro mini

Hay dos hex, el suministrado por davidx que le fue suministrado por el propio scener Dimitris Lagos y el otro que he compilado directamente de las fuentes de su github

Resultados con el hex de davidx

Pros: Funciona la vibración, probado con un mando original de XBOX Series s/x y Gamesir T4 Pro en modo Swicht

Neutro:**** Los gatillos están mal mapeados, los gatillos inferiores están mapeados como los botones Black y White. Los gatillos superiores está mapeados como lo que normalmente serian los gatillos inferiores. Se puede cambiar desde la configuración de Blueretro

Contras: Reinicia la consola al conectarlo por primera vez. Los thumbsticks / pinchar las setas no funcionan. El IGR se hace de rogar y en según que apps / juegos / emus es casi imposible hacerlo.

Resultados con el hex que compilado

Pros: Funciona la vibración, probado con un mando original de XBOX Series s/x y Gamesir T4 Pro en modo Swicht

Neutro: Los gatillos están mal mapeados, los gatillos inferiores están mapeados como los botones Black y White. Los gatillos superiores está mapeados como lo que normalmente serian los gatillos inferiores. Se puede cambiar desde la configuración de Blueretro

Contras: Reinicia la consola al conectarlo por primera vez. thumbsticks / pinchar las setas no funcionan. Es inestable, es como si pulsaras varias veces el mismo botón. El IGR se hace de rogar y en según que apps / juegos / emus es casi imposible hacerlo.

El primer hex de davidx es mejor. No entiendo como no está actualizado en el github

Imagen

Imagen

Imagen

Prototipo 2: esp32 + level shifter + arduino pro micro

Es el que propone davidx pero con algunas modificaciones, esp32 + level shifter + arduino pro micro. El fichero.hex es el proporcionado por davidx.
No le quito el diodo, personalmente creo que lo correcto es usar level shifter para la adaptación de lógicas de distinto voltaje, eso queda a gusto del consumidor.

Pros: IGR funciona correctamente, no se reinicia la consola a la primera al conectarlo. thumbsticks / pinchar las setas funcionan correctamente. El mapeado de los gatillos es correcto . Menos cableado y mayor simplicidad que el prototipo 1

Neutro:

Contras: No funciona la vibración

De los dos prototipos con conversor vía Arduino, el prototipo 2 es el mejor.

Test efectuado con el gamepad de Microsoft y la app xbox controller test

Vídeo

Imagen

Foto inferior de Ervin Olvera

Imagen

El hex para el Pro Micro de Ervin Olvera es muy interesante porque en su github está en formato .ino y esto hace factible el poder modificarlo, por desgracia no consigo compilarlo, por mas librerías que instale, siempre aparece un error nuevo. Estoy intentando ponerme en contacto con el, a ver si hay suerte y me muestra la luz.

También he hecho pruebas con el gamepad Pro (original) de WiiU, es sin duda con el que más rápido sincroniza, seguido del gamepad de Gamesir y ya por último el gamepad de XBOX series s/x que es mas puñetero de emparejar.

El talón de Aquiles de todos prototipos con conversor vía Arduino, es el tema que convierten los botones y gatillos analógicos en digitales. Esto puede hacer que según que juegos sean hasta injugables. En los emuladores no vamos a notar nada, ya que no aprovechan está característica.
Haciendo mas pruebas me acabo de dar cuenta que el firm de Blueretro para PSX también hace lo mismo, convirtiendo los botones y gatillos analógicos en digitales

Prototipo 3: esp32 + adaptador psx2xbox de Aliexpress

Imagen

Imagen

Vídeo de Yakara Colombia


Pros: Funciona TODO, nada mas que decir.

Contras: Por desgracia este cacharrito se encuentra totalmente descatalogado y los pocos que se encuentran de segunda mano o de algún stock antiguo tienen precios prohibitivos.

El prototipo3 es el ideal.

Es triste decirlo pero de momento el adaptador chino de hace 14 años es infinitamente mejor que los dos adaptadores vía Arduino aparecidos hasta el momento.

Imagen

Imagen

Para poder comprobar si el problema de la conversión a analógico a digital era problema del ESP32 o de los Arduinos, lo que hice fue montar el tinglado sin el ESP32 y conectarlos a un mando Sony Dualshock2 original.
Si pincho el mando a un adaptador psx2xbox de aliexpress, todo lo analógico sigue siendo analógico. Cuando hago la mismo prueba con el nano /pro mini o el pro micro lo analógico pasa a ser digital.

Imagen


Como emparejar gamepads Dualshock3 con Blueretro

Todos los gamepads mencionados anteriormente tienen un botoncito especifico para emparejar / sincronizar con cualquier dispositivo bluetooth compatible.
El Dualshock3 no dispone de este botón y para poder emparejarlo hay que saber lo siguiente:
Todos los dispositivos bluetooth incluidos el ESP32 tienen un MAC BT única.
Para saber este dato nada mas sencillo que alimentar al ESP32 y sin emparejar mando alguno entrar desde el la/el PC o desde el celular/móvil (como es mi caso) en https://blueretro.io/system.html una vez conectado tiene que salir una ventana como esta:

Imagen

Copiar el tal cual el número que aparece, no el de la imagen!, sino el suyo ;) en este caso el número es el 3C:E9:0E:88:AF:3A no pasa nada si son mayúsculas o minúsculas, no influye. Guardar este número en un TXT ya que siempre va a ser el mismo.
Ahora descargar e instalar en la/el PC el siguiente programa SixaxisPairToolSetup una vez hecho pinchar el Dualshock3 al PC y ejecutar SixaxisPairTool, si no están instalados los drivers del Dualshock3, el mismo programa los instalará, es algo lento. Al final nos tiene que mostrar una ventana parecida a esta:

Imagen

Introduzco mi MAC BT

Imagen

Actualizo con el botón Updade

Imagen

A partir de ese momento el número mostrado arriba es igual que el introducido, salgo y vuelvo a entrar en la app, para confirmar al 100% que el cambio ha sido efectivo.

Imagen

Ahora el Dualshock3 se emparejará sin problemas con nuestro ESP32
Si mas tarde se empareja de nuevo con una PS3 y lo queremos usar de nuevo en el ESP32 habrá que volver a pincharlo en la/el PC y repetir los pasos (ni 10 segundos se tarda)








Links de interés

Github de Dimitris Lagos
Github de Ervin Olvera
Github de davidx
Github de darkcloud
2 respuestas