Conectando Gamepads DB9 u otros al ESP32 TTGO

Avatar de Usuario
masteries
Mensajes: 1369
Registrado: 30 May 2018 11:33
Ubicación: Espaciando
Agradecido : 214 veces
Agradecimiento recibido: 911 veces

Conectando Gamepads DB9 u otros al ESP32 TTGO

Mensajepor masteries » 21 Sep 2022 18:18

Os quería preguntar si el título que reza este hilo se ha investigado con
anterioridad.

Porque está muy bien que tenga puertos PS2, pero si lo que deseas es conectar un mando DB9;
norma Atari o similar, ¿se pueden usar los pines de los puertos PS2?

Porque con los 6 pines GPIO que te proporciona la placa, se puede
conectar un mando con dos botones; pero difícil ingeniártelas para
poner ahí dos mandos.

Tal vez me estoy complicando, y ya hay una solución para los
puertos PS2
La maestría interior...

Vendo trapdoor 512KB A500: viewtopic.php?f=71&t=200034052
De 1MB A500+: viewtopic.php?f=71&t=200034115

Metal Slug Atari STE: www.youtube.com/watch?v=FMrdjrrtxWo

ackerman
Mensajes: 332
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 137 veces
Agradecimiento recibido: 277 veces

Re: Conectando Gamepads DB9 u otros al ESP32 TTGO

Mensajepor ackerman » 22 Sep 2022 18:17

masteries escribió:Os quería preguntar si el título que reza este hilo se ha investigado con
anterioridad.

En el hilo de WEMOS D1 R32 VGA(chip8) tienes como he implementado un ESP32 con DB9 norma ATARI, y puedes reutilizar cosas:

http://retrowiki.es/viewtopic.php?f=117&t=200038617

Yo uso la norma clásica ATARI de 5 y 6 botones de masa común, en donde las entradas usan el modo INPUT_PULLUP. En un ESP32 (independientemente de la placa), los GPIO 31 al 39 no se pueden usar nunca en dicho modo, por lo que de los 6 GPIO de la TTGO VGA32 v1.4 (21, 13, 14, 12, 39 y 34), perderíamos 2 en dicho modo, es decir, el 34 y 39. Además, los 2 del DAC (25, 26) mientras que se usen para audio o video, no se pueden usar como entrada.

c64.gif
c64.gif (2.6 KiB) Visto 93 veces

La TTGO VGA32 v1.2, es peor, porque la placa sólo tiene los GPIO 2 y 4 extra para soldar.
Todo esto es si sigues dicha norma. Siempre se puede hacer el truco de alimentación común, es decir, en lugar de masa común, alimentar 3.3v, resistencia y botones, usando el modo INPUT de toda la vida. En dicho caso, hay que asegurarse de que el joystick sólo sean botones pasivos y no exista masa con la carcasa u otro punto.

Se puede utilizar también el splitter, como se hacía en el CPC, bien en modo simple (Y-cable) con sus defectos:
splittersimple.gif
splittersimple.gif (13.15 KiB) Visto 93 veces

O bien se puede usar un pin extra de control del splitter (hay que programar), y con diodos usar el splitter profesional:
splitter.gif
splitter.gif (9.49 KiB) Visto 93 veces

Ese pin extra puede ser uno de los pines del PS/2 (reduciendo a 3.3v), por ejemplo el CLK que como se ha visto en la generación del video cvbs se puede usar.

En cuanto se pone uno a usar la TTGO VGA, aunque el teclado es muy útil para la emulación de microordenadores, cuando se juega, lo ideal es usar mandos. Y ahí es donde la placa se ve limitada. El uso de PS/2 a la larga, al igual que sucede con algunos FPGA's, casi hace que guardes los periféricos al lado del mismo cacharro, porque es probable que no te funcione con otro. Usar el mando, no es por el purismo del input lag, sino más bien, para poder independizarse de los periféricos, y montarlo todo de manera más simple.

Aquí tienes las especificaciones de la placa, junto con los esquemas en PDF:

http://retrowiki.es/viewtopic.php?f=116&t=200038361

El que te interesa sería las conexiones PS/2:
ps2.gif
ps2.gif (6.33 KiB) Visto 93 veces

Se está usando un Mosfet Sot23, al menos en la placa LILYGO.
De cara al exterior se trabaja con 5V, y en la parte ESP32 con 3.3v. Hay que prestar mucha atención a todo esto.

También tienes el truco de usar un arduino, en donde el arduino leería de un mando ATARI DB9, NES, SNES o incluso PSX, y envía por PS/2 la tecla, que en principio, con la librería ps2dev debería valer:

https://github.com/harvie/ps2dev

Lo más cómodo, de cara a usar varios mandos, sería usar mandos de tipo NES (3 pins), donde o bien alimentamos a 3.3v el mando y usamos alguno de los 6 GPIO's, o bien alimentamos a 5v y usamos las entradas de PS/2 con el MOSFET. De nuevo, prestar atención a no jugar con fuego, ya que el ESP32 trabaja con 3.3v. Tanto con los mandos originales, como con los chinorros de NES, nunca he tenido problema de alimentar el chip que hace de registro de desplazamiento a 3.3v.

Aquí tengo el código de cuando añadí soporte a mandos de NES al arduinocade, que es muy fácil de portar al ESP32.

https://github.com/rpsubc8/ArduinoVideoConsole



Todo esto, para el caso de querer usar mandos ya fabricados. Existen muchas formas alternativas de usar pocas entradas para contruir un mando casero, que van desde usar un único pin en modo analógico para todos los botones, charlieplexing con diodos, matrices o un multiplexor.

Avatar de Usuario
masteries
Mensajes: 1369
Registrado: 30 May 2018 11:33
Ubicación: Espaciando
Agradecido : 214 veces
Agradecimiento recibido: 911 veces

Re: Conectando Gamepads DB9 u otros al ESP32 TTGO

Mensajepor masteries » 22 Sep 2022 21:57

Muchass gracias Ackerman,

Va a ser más recomendable emplear un STM32 para leer los mandos programándolo con Arduino,
conectarlo como teclado PS2 (como bien has señalado), porque el número de pines es demasiado reducido
en este ESP32 con VGA.

De esta forma, tampoco se encarece casi nada, y se dispone de la libertad necesaria.
La maestría interior...

Vendo trapdoor 512KB A500: viewtopic.php?f=71&t=200034052
De 1MB A500+: viewtopic.php?f=71&t=200034115

Metal Slug Atari STE: www.youtube.com/watch?v=FMrdjrrtxWo


Volver a “ESP32 TTGO VGA32”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado