Tabla de contenido:

Controlador Lapcade Arcade: 6 pasos (con imágenes)
Controlador Lapcade Arcade: 6 pasos (con imágenes)

Video: Controlador Lapcade Arcade: 6 pasos (con imágenes)

Video: Controlador Lapcade Arcade: 6 pasos (con imágenes)
Video: ARMAR MANDO ARCADE | Paso a Paso | DIY Mando Arcade 2024, Junio
Anonim
Controlador Lapcade Arcade
Controlador Lapcade Arcade

No soy un gran jugador. Cuando era niño, estaba más interesado en ver cómo funcionaban que en interpretarlos. Puedo contar con una mano cuántos juegos de arcade jugué regularmente. Dicho esto, sería fácil para alguien encontrar extraño que me tomara el tiempo para construir un controlador arcade. Sin embargo, es uno de mis proyectos favoritos hasta la fecha. Además de ser un desafío para diseñar, codificar y construir, también es un recordatorio de una era pasada de robustos botones mecánicos y joysticks.

Atrás quedaron los días de Arcade, pero aún puedes tener la sensación de un juego de arcade clásico en tu propia sala de estar. Entonces, aquí les presento el Lapcade. Si eres como yo y disfrutas construyendo cosas más que jugando, es posible que disfrutes de esta construcción. Si tiene alguna pregunta o sugerencia que no esté incluida en la sección "Ideas para la versión 2" a continuación, deje un comentario.

Paso 1: descripción general

Visión general
Visión general
Visión general
Visión general

¿Que es esta cosa?

Primero, tenga en cuenta lo que no es Lapcade:

  • No es una consola de juegos.
  • No tiene juegos ni tiene la capacidad de cargar y jugar juegos.
  • No se conecta a un televisor o monitor.

El Lapcade es un teclado Bluetooth. Nada más y nada menos.

Menciono esto porque ha habido cierta confusión en torno a este punto. He tenido muchas preguntas sobre qué juegos se pueden cargar en él y qué tipo de interfaz de video usa, ¡no puede y no lo hace! Depende completamente de la PC a la que lo conectes y, en ese sentido, el cielo es el límite. Si su dispositivo puede aceptar un teclado Bluetooth, entonces el Lapcade debería funcionar con él. No lo he probado, pero he visto otros proyectos que han utilizado la tecla EZ-Key (descrita a continuación) conectada a dispositivos portátiles. Entonces, teóricamente, puede conectar este dispositivo a cualquier computadora que ejecute Windows, Linux, ChromeOS, MAC, etc., así como a Raspberry Pi, Android, iOS y otros que admitan Bluetooth v2.1. Sin embargo, es posible que sea necesario modificar los códigos clave.

Versión anterior 1

Originalmente, encontré un producto llamado Adafruit Bluefruit EZ-Key bluetooth HID (dispositivo de interfaz humana - piense en el teclado) que me permitiría conectar botones de clic familiares y enviar pulsaciones de teclas como un teclado. Cuando construí por primera vez un controlador basado en el EZ-Key, seguí un conjunto de instrucciones para construir un controlador simple y directo y funcionó muy bien. Usé el controlador en un marco de madera pesado sin problemas durante unos meses. Sin embargo, está limitado a 12 entradas y no hay forma de cambiar el código clave transmitido por el dispositivo sin reprogramar los pines de entrada EZ-Key.

Como estaba usando mi centro de medios Kodi para mostrar los juegos instalados, quería cambiar entre controlar el centro de medios y el juego sin tener que usar varios controladores / controles remotos. También quería ajustar el dispositivo para que mi hijo zurdo pudiera usarlo como quisiera.

También estaba usando 4 pilas AA para alimentar el dispositivo y, al salir de la caja, no parecía tener un modo de bajo consumo. Las baterías se secarían por aspiración en uno o dos días, incluso si no se estaban utilizando.

Entonces, a instancias de un amigo mío, decidí construir una versión programable del mismo controlador que tuviera cambios rápidos de modo, que me permitiera usar el mismo dispositivo para controlar múltiples aplicaciones, también podría ser "volteado" para la mano izquierda. uso y estaba en un maletín de computadora portátil que era mucho menor que mi solución actual de 10 libras.

Era el momento de una actualización.

Diseño de la versión 1 Objetivos del proyecto:

  • Flexible
  • Recargable
  • Para zurdos y diestros
  • Sin cordones
  • Ligero

Quería que este nuevo diseño fuera flexible. Los controles deben poder cambiarse sobre la marcha sin tener que reprogramar los componentes cada vez que sea necesario realizar una prueba o un cambio. Esto significaba que tenía que haber una interfaz en el controlador para elegir "modos" de operación. Cada posición de botón y joystick debería tener diferentes códigos de llave asociados. Esos mismos controles también deberían usarse para seleccionar los diferentes modos.

El EZ-Key no se podía programar directamente en tiempo real, por lo que la siguiente solución sería usar un controlador como un Arduino para administrar la funcionalidad. El EZ-Key se usaría únicamente para transmitir los códigos de teclas a la PC a través de Bluetooth. Elegí el Arduino Pro Mini debido a su compatibilidad directa con el UNO (con el que ya tenía experiencia) y debido a su tamaño compacto.

No quería lidiar con las baterías con esta nueva caja como lo hice con el predecesor de Lapcade, así que elegí usar una batería recargable de polímero de litio y una placa de carga / suministro. Esto significaba que podía usar un cargador USB estándar. También significaba que no tendría que abrir el estuche cada vez que se agotaran las baterías. El EZ-Key y el PowerBoost 500C tienen indicadores que debían transferirse a la parte superior del controlador para el estado de emparejamiento y la indicación de batería baja. Agregué algunos LED al diseño para poder reflejar estos prácticos indicadores de estado al usuario durante la operación.

A medida que maduraba la prueba de mi diseño, descubrí que varias de mis ideas originales no eran como esperaba. Por ejemplo, el indicador LBO del PowerBoost no funciona como se esperaba cuando está conectado a un microcontrolador. Permitirá que la corriente pase a través de la tierra común desde la batería mientras el dispositivo está "apagado" o deshabilitado, la luz LBO se encenderá y permanecerá encendida. Otros en el foro de Adafruit también se habían encontrado con este problema y ofrecían una mejor solución al muestrear el voltaje de la batería directamente en una entrada analógica. Una vez que el voltaje cae a un cierto nivel, es hora de informar al usuario que la batería está a punto de apagarse.

Paso 2: lo que necesita

Lista de piezas electrónicas

Esto terminó convirtiéndose en una construcción bastante complicada. No tiene que usar las mismas partes que yo, pero si usa una parte sustituta, asegúrese de comprender cómo interactuará con los otros circuitos y el código. Si bien me complace ofrecer sugerencias, no puedo ayudar a solucionar problemas de código o problemas para diferentes configuraciones.

1 Arduino Pro Mini 5V: me gusta el Pro porque es compacto. Puede utilizar cualquier placa compatible con pin / interrupción Uno con el código proporcionado

1 Adafruit Bluefruit EZ-Key bluetooth HID: como se describió anteriormente, este es el bluetooth HID que permite que los códigos de teclas se transmitan a la PC host.

1 MCP23017 - Expansor de puerto de entrada / salida i2c 16 -Este chip se usa para agregar 16 entradas más al Arduino a través del protocolo de comunicaciones I2C

1 cargador Adafruit PowerBoost 500 +: esta es la placa de control de energía para alimentar el Lapcade y cargar el LiPo

1 batería de polímero de litio (usé 2500 mAh, pero puedes usar una capacidad mayor / menor)

1 Joystick arcade de 8 direcciones: consulte la sección "Pensamientos para la versión 2" a continuación sobre los joysticks

9 botones de Arcade: colores variados y serigrafías

2 botones pulsadores momentáneos iluminados: utilicé estos 2 botones para los botones del centro 4 y 5 y son de Adafruit: rojo (centro 4), azul (centro 5)

1 Botón de enganche iluminado Usé esto para el botón de encendido de Adafruit: Verde

2 LED Se utilizan para hacer referencia a la señal de emparejamiento y la batería baja. Usé dos piezas RadioShack 2760270 y 2760271

1 pantalla LCD de 16 x 2

1 Mochila LCD I2C / SPI: se utiliza para la comunicación I2C con la pantalla 16x2.

1 Cable de extensión USB para montaje en panel: se utiliza para extender el conector USB micro-b del PowerBoost a la pared del gabinete.

1 PCB de placa de pruebas de tamaño completo Adafruit Perma-Proto: no es necesario, pero hace que el montaje permanente sea mucho más fácil.

5 resistencias de 220 ohmios

7 resistencias de 1K ohmios

2 resistencias de 2.2K ohmios

1 resistencia de 4,7 K ohmios

18 conectores de pala hembra n. ° 10: para conectar a los contactos del botón de arcade. Recomendado en lugar de soldar ya que los botones eventualmente se desgastarán.

Cable de conexión de calibre 22: utilicé cable de conexión sólido en lugar de trenzado para hacer una gestión de cables independiente. Esto fue solo para fines de demostración y no se recomienda ya que el alambre sólido es frágil y propenso a romperse.

Los siguientes elementos no son necesarios, pero simplificarán el proceso de mounging y, en caso de tostar un componente, facilitarán el reemplazo:

  • Zócalo IC - para chips de 0.3 "de 28 pines
  • Zócalo IC - para chips de 0,6 "de 28 pines
  • Conector hembra de 0,1 "(al menos 1 cabezal de 36 pines)

Partes del gabinete:

  • 3 paneles de abedul de 12 x 24 1/8 de pulgada
  • 1 panel de acrílico transparente de 12 x 24 1/8 de pulgada

Archivos:

  • Lapcade V1.xlsx: la hoja de cálculo mencionada a continuación que tiene las conexiones del circuito.
  • LapcadeV1-code.zip: archivo zip que contiene el código Arduino escrito para este proyecto.
  • Lapcade_v1.zip: archivo zip que contiene los dibujos svg del gabinete.
  • LapcadeV1-Circuit_Diagram_Large.zip: archivo zip que contiene una versión de alta resolución del diagrama de circuito fritzing que se muestra a continuación.

Enlaces a más recursos:

  • Documentación de Adafruit Bluefruit EZ-Key
  • Documentación de Adafruit PowerBoost 500 +
  • Documentación de la mochila LCD I2C / SPI
  • Documentación del extensor de puerto I2C MCP23017
  • Biblioteca Arduino Adafruit MCP23017

Paso 3: Montaje: el gabinete

Ensamblaje - El gabinete
Ensamblaje - El gabinete
Ensamblaje - El gabinete
Ensamblaje - El gabinete
Ensamblaje - El gabinete
Ensamblaje - El gabinete
Ensamblaje - El gabinete
Ensamblaje - El gabinete

Quería tener una caja muy liviana que también pudiera recibir una paliza. Sin volverse demasiado exótico con los materiales, liviano es igual a delgado y delgado generalmente es igual a quebradizo. El usuario principal del Lapcade probablemente sea mi hijo pequeño, al que le gusta "presionar" los botones y "navegar" por el joystick con un entusiasmo extremo. Si bien es bueno para no dejar caer cosas, logró desgastar los microinterruptores industriales en un joystick en unos pocos meses.

Para solucionar este problema y dado que el Lapcade tiene 20 de ancho, mi diseño agregó dos nervaduras verticales que aseguran la parte superior y los lados izquierdo y derecho. Durante la instalación en seco, el diseño pudo soportar 70 libras de libros colocados sobre él. Una vez pegado, la caja se volvió aún más duradera. Después de recibir los materiales cortados, inicialmente encajé todos los paneles para asegurarme de que funcionaban. Luego los lijé ligeramente y les quité el polvo al aire. Usé pegamento para madera para unir las piezas.

Los libros de las fotos a continuación se colocaron para ejercer presión sobre las piezas recién pegadas hasta que fraguaran. Una vez que el pegamento se curó, lijé los bordes. Mi diseño compensó intencionalmente los paneles para que sobresalieran un poco en las esquinas. Esto me permitiría redondear las esquinas durante el lijado sin entrar demasiado en la junta.

Después de limpiar las superficies, apliqué varias capas de poliuretano, lo que permitió curar entre capas. El resultado fue una caja de madera liviana con una cubierta inferior acrílica. Originalmente quería una caja completamente transparente, pero cuando me envió las piezas de "prueba" de abedul, cambié de opinión de inmediato. No solo era más liviano, era un buen regreso a la idea de los juegos de gabinete. Los archivos svg se encuentran a continuación.

Tenga en cuenta: Este es un dibujo de varias capas y cada capa representa un conjunto de cortes en una hoja de material. Cuando envíe una impresión a su cortadora, asegúrese de que todas las demás capas estén ocultas antes de cortar.

Otra nota: cuando dibujé el área para la pantalla LCD, utilicé una pantalla que tenía a mano para las mediciones. Entre el momento en que hice el dibujo y luego coloqué las piezas en el estuche, había usado la pantalla LCD original en otro proyecto y pedí un reemplazo. Resulta que los orificios de montaje para el segundo eran ligeramente diferentes al original y terminaron sin alinearse. Por lo tanto, tenga cuidado antes de cortar su material para verificar que las partes que tiene encajen en los orificios del dibujo.

Una tercera nota: no incluí un recorte para el cable de carga USB en el dibujo original simplemente porque no estaba seguro de dónde quería colocarlo para que no interfiriera con el uso. Más tarde corté los agujeros en el lado izquierdo muy cerca de donde ves la palabra "Lapcade" en las imágenes de abajo. La versión 2 tendrá el puerto de carga en una posición diferente.:)

Paso 4: Ensamblaje - Electrónica

Ensamblaje - Electrónica
Ensamblaje - Electrónica
Ensamblaje - Electrónica
Ensamblaje - Electrónica
Ensamblaje - Electrónica
Ensamblaje - Electrónica
Ensamblaje - Electrónica
Ensamblaje - Electrónica

Primero echemos un vistazo al diagrama de cableado que se muestra arriba.

Lo primero que hay que tener en cuenta aquí es que los rieles de alimentación y de tierra de la placa de pruebas. Los rieles con la línea azul son de tierra (-) y los rieles con la línea roja son de potencia (+). Esto es estándar, pero lo estoy tomando nota porque la línea común del joystick (cable negro) está conectada a la alimentación y no a tierra. En Fritzing utilicé el color del cable del joystick en lugar del color convencional y pensé que eso podría causar cierta confusión, así que lo mejor es dejar eso fuera del camino.

Conexiones de componentes

En lugar de intentar establecer cada conexión en forma larga aquí (el pin 0 analógico de Arduino pasa por un resistor de 220 ohmios al pin PowerBoost Bat), creé una hoja de cálculo que contiene todas las conexiones desde el punto de vista del componente. Entonces, en la pestaña Arduino de la hoja de cálculo, verá APM A0 -> 2.2K OHM -> PB Bat y en la pestaña PowerBoost verá PB BAT -> 2.2K OHM -> APM A0. Consulte la sección de recursos a continuación para ver todos los archivos asociados con este proyecto.

Otra nota sobre la hoja de cálculo es que algunos dispositivos muestran dos columnas de conexión. Esto es para mostrar más de una conexión a un pin. Por ejemplo, cada una de las conexiones de la palanca de mando, excepto el cable común, utiliza una resistencia desplegable para garantizar que el extensor de puerto reciba una señal sólida alta o baja. Para mostrar esto para el Joystick 2, verá dos columnas para la conexión, una para el cable del joystick al pin MCP 21 y la otra para una conexión desde el pin 21 a través de una resistencia a tierra. Estoy seguro de que hay mejores formas de documentar esto, pero me temo que estás atascado con mi forma de hacer las cosas en este caso.:)

Cada uno de los botones de arcade tiene un contacto común (com), normalmente abierto (no) y normalmente cerrado (nc). Para cada uno de estos botones, estoy usando conexiones com y nc.

Paso 5: Código

Código
Código

En primer lugar, necesito dar crédito a lo que es debido. Confié en gran medida en el siguiente artículo para codificar el Lapcade:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid ¡Un agradecimiento especial a Benjamin Gould por un proyecto bien escrito y documentado!

Entonces, en el corazón de este proyecto hay un teclado. Desde el punto de vista de la PC, el Lapcade es simplemente un teclado conectado a través de bluetooth, que es en lo que el EZ-Key es tan bueno. Toma los complicados protocolos, tiempos y códigos de Bluetooth y los encapsula de modo que todo lo que necesito hacer con el arduino es enviarle códigos clave. Para hacer eso, utilicé los mapas de código en el proyecto anterior y mis propias matrices para crear modos operativos. Cada modo cambia lo que hacen las mismas pulsaciones de botón en el Lapcade y lo que se envía a la PC. Hay tres modos operativos "integrados" y todos los modos posteriores son modos de aplicación.

Modos operacionales

A continuación se resumen los modos operativos del Lapcade:

  1. Inicio: este modo verifica la conectividad con la PC y establece las variables de inicio. Si el EZ-Key no está emparejado con una PC, cambia al modo de emparejamiento
  2. Emparejamiento: en este modo, el EZ-Key está esperando ser emparejado con una PC.
  3. Selección de modo: este modo permite al usuario seleccionar qué modo de aplicación utilizar. No se envían códigos de tecla a la PC en este modo. También hay selecciones de modo rápido basadas en el modo de aplicación anterior. Por ejemplo, al presionar el botón Mode y luego el botón Player Two cuando está en el modo Mame Player 1, simplemente cambia el modo sin tener que buscar y seleccionar Mame Player 2 en la pantalla.

Modos de aplicación

Los modos de aplicación se utilizan para enviar códigos de teclas apropiados a la PC según la aplicación en la que se encuentre el usuario. Por ejemplo, en el modo Kodi, la tecla de acción 2 envía "P", que es una pausa. En Mame, ese mismo botón envía la tecla Alt izquierda. Si uno quisiera usar el controlador para jugar Minecraft para PC, entonces todo lo que tendría que hacer es agregar los mapas de matriz apropiados.

Cada aplicación debe definirse en 4 matrices de datos.

  • mode : esta matriz contiene el texto que se presentará en la pantalla para cada modo. Para usar la segunda línea de la pantalla, simplemente coloque un ~ en la matriz como un salto de línea.
  • keyModes [14] - Esta matriz de matriz contiene los códigos de tecla enviados a la PC. Cada línea de 14 elementos representa botones individuales para asignaciones de códigos clave.
  • keyModifiers [14] - Esta matriz de matriz contiene los modificadores de código de tecla para cada pulsación de tecla, como mantener presionada la tecla Mayús.
  • quickMode [3]: esta matriz de matriz contiene el patrón de selección de modo rápido para el modo actual.

Operación básica

Cuando el sistema se enciende, entra en modo de inicio, donde se comprueba el estado de la conexión Bluetooth y se muestra al usuario. El Arduino obtiene el estado del EZ-Key contando y cronometrando los pulsos del pin L1 del EZ-Key. Hay cuatro subestados para el modo de inicio:

  • Emparejamiento: el EZ-Key está en modo de emparejamiento activo esperando para conectarse a un dispositivo.
  • Emparejado pero no conectado: el EZ-Key se emparejó anteriormente pero no está actualmente conectado al dispositivo anfitrión.
  • Emparejado y conectado: el EZ-Key está emparejado y la conexión se ha establecido con el host. En este punto, el sistema pasará a Selección de modo.
  • Estado desconocido: el EZ-Key está devolviendo un código desconocido o hay una interferencia de señal que está produciendo un patrón de señal desconocido. El sistema retendrá y notificará al usuario. Debe reiniciar si esto ocurre.

Si el sistema está emparejado pero no puede conectarse a la PC, el sistema permanecerá en estado de conexión en el modo de inicio. Si el usuario mantiene presionado el botón de escape mientras enciende el dispositivo, omitirá la verificación de la conexión Bluetooth y pasará a la Selección de modo.

Si el sistema no se ha emparejado previamente, el Modo de inicio será reemplazado por el Modo de emparejamiento. En este estado, el sistema transmitirá que está disponible para emparejamiento. Una vez que un host lo descubre y lo adjunta, pasará a Selección de modo. El dispositivo se puede desemparejar en Selección de modo presionando el botón Acción 1.

En la selección de modo, las acciones del joystick hacia arriba y hacia abajo lo moverán a través de los modos de aplicación disponibles en la pantalla LCD. Para seleccionar uno de los modos, presione el botón Enter (centro 5).

Una vez en un modo de aplicación, cada uno de los botones y el joystick enviarán códigos de teclas según los mapas de teclas especificados en las cuatro matrices como se describe anteriormente.

Modos rápidos

Una vez que se ha seleccionado un modo de aplicación, se establece su definición de modo rápido. En pocas palabras, los modos rápidos son los modos de aplicación que se pueden seleccionar con los primeros tres botones centrales (Centro 1-3). Estos tres botones corresponden al elemento de matriz en la matriz.

Por ejemplo, en la configuración actual, cuando se usa Mame en el modo jugador 1 (Modo 4 o el quinto modo definido), luego presionando el botón de modo y luego el botón del reproductor dos carga el elemento de matriz de modo rápido [4] [1] (Arduino usa 0), que es 5. El sistema cambia al Modo de aplicación 5, que es Mame, jugador 2.

Paso 6: Ideas para la versión 2

Pantalla de botones: supongo que no se puede planificar todo, pero hay una idea de diseño que desearía tener desde el principio para la versión uno: paneles LCD de botones individuales. Quedó claro muy rápidamente después de la construcción que el solo hecho de saber en qué modo estás no significa que recuerdes lo que hace cada botón, especialmente después de que te has alejado de él durante un par de días o meses. Realmente desearía haber agregado algún tipo de pantalla pequeña en o encima de cada botón que mostrara cuál es su acción actual. Este está en la parte superior de mi lista para la versión 2.

Joystick de 4 vías frente a 8 - Otra cosa que quedó clara una vez que comencé a usar la palanca de mando fue que los juegos más antiguos no estaban destinados a usar joysticks de 8 direcciones. El caso en cuestión es pac-man. Desde que construí este controlador, he descubierto que existen joysticks que pueden cambiarse mecánicamente de 4 a 8 direcciones. Sí, ese está en la lista y si planeas jugar juegos de arcade clásicos, simplemente pasa a uno que se pueda cambiar. Por supuesto, asegúrese de tener en cuenta los cambios en el cableado y la programación en función del joystick con el que termine. A continuación, se muestran algunos proveedores de controles arcade clásicos:

  • https://www.ultimarc.com/controls.html
  • https://groovygamegear.com/webstore/index.php?main…

Botones "Flipper" del lado derecho e izquierdo: la versión 2 definitivamente agregará un botón en cada lado izquierdo y derecho del gabinete. Un posible uso será para las aletas de pinball.

Otros controles: estoy analizando la viabilidad de agregar otros controles comunes como un trackball y / o un control giratorio a la próxima versión. Dado que el EZ-Key es capaz de transmitir las coordenadas del mouse, esto no debería ser demasiado difícil.

Programación a bordo: la próxima versión debe tener la capacidad de agregar nuevas configuraciones sin abrir la carcasa. Quería agregar esto a la versión 1, pero requería más tiempo y recursos de los que tenía.

Concurso inalámbrico
Concurso inalámbrico
Concurso inalámbrico
Concurso inalámbrico

Segundo premio en el concurso Wireless

Recomendado: