Tabla de contenido:

Pocket ZX (Handheld ZX Spectrum): 10 pasos
Pocket ZX (Handheld ZX Spectrum): 10 pasos

Video: Pocket ZX (Handheld ZX Spectrum): 10 pasos

Video: Pocket ZX (Handheld ZX Spectrum): 10 pasos
Video: Pocket PICOZX (Zx Spectrum 128k) Handheld - Tape loading emulation 2024, Noviembre
Anonim
Pocket ZX (portátil ZX Spectrum)
Pocket ZX (portátil ZX Spectrum)
Pocket ZX (portátil ZX Spectrum)
Pocket ZX (portátil ZX Spectrum)
Pocket ZX (portátil ZX Spectrum)
Pocket ZX (portátil ZX Spectrum)

Soy un niño de los 80 y tengo buenos recuerdos de las computadoras de 8 bits de esa época. Mi primera computadora, una que ocupa un lugar especial en mi corazón, fue una Sinclair ZX Spectrum 48K. Habiendo descubierto recientemente algunas comunidades enfocadas en computadoras más antiguas en la web, decidí que quería revivir algo de esa nostalgia por mí mismo e instalé el emulador Fuse en mi MacBook. Esto fue divertido por un tiempo, pero realmente quería un dispositivo dedicado, preferiblemente algo pequeño, portátil y autónomo para adaptarse a mi estilo de vida. La elección en esta etapa fue seguir el camino del asombroso Ben Heck y reducir el hardware ZX original a algo portátil o hacer trampa y usar la emulación en una pequeña computadora de una sola placa. Voy a hacer trampa:)

Entonces, ¿qué quiero de mi ZX Spectrum portátil?

  • Barato: tengo demasiados proyectos para gastar grandes sumas de dinero en un poco de nostalgia divertida.
  • Portátil: debe ser algo con lo que pueda jugar en el sofá o en una tarde de ocio en el jardín.
  • Teclado: no solo quiero jugar, también quiero programarlo. Para obtener la experiencia completa, necesita tener esas maravillosas claves de palabras clave.
  • Joystick: nunca me gustó jugar juegos de plataformas con un teclado. Juegos de aventuras, claro, pero no solo quiero jugar juegos de aventuras, así que necesitaré un joystick.
  • Instantáneo: Odiaba cargar cintas en los años 80 y no puedo imaginar que me haya encariñado más en los años intermedios.

Con todo esto en mente, redacté un diagrama de bloques para ayudarme a comprender los distintos componentes. Así que empecemos a construir.

Paso 1: teclado y joystick USB

Joystick y teclado USB
Joystick y teclado USB
Joystick y teclado USB
Joystick y teclado USB
Joystick y teclado USB
Joystick y teclado USB

Obtener el teclado correcto es la clave para capturar la apariencia del ZX Spectrum original. Es posible que estemos construyendo un dispositivo emulado de mano que no comparte nada en común con los componentes internos originales de Spectrum pero, con un diseño cuidadoso, debería ser posible crear algo que parezca una reminiscencia de la experiencia informática de los 80.

Comenzando con algunos protoboards y una gran pila de interruptores táctiles, experimenté con algunas ideas y me decidí por el diseño escalonado que se muestra en las fotos. Los protoboards que estamos usando son un estándar de 7x9cm (26x31 agujeros) disponibles en línea en muchos minoristas. Los interruptores son versiones de montaje en superficie que tienen una sensación más suave y son menos ruidosos que sus homólogos de orificios pasantes más comunes, pero deberían funcionar ya que el tamaño de su cuerpo es casi idéntico.

Luego, los controles del joystick pasaron al espacio restante inmediatamente encima del teclado. Decidí usar un interruptor de navegación táctil de 5 posiciones a la izquierda y un botón de disparo grande a la derecha. El joystick se duplicará como controlador para el sistema de menú del emulador y como mouse para interactuar con el sistema Linux subyacente, así que también agregué un pequeño botón secundario.

El microcontrolador del teclado es un Arduino Pro Micro. Esta es una placa pequeña que se puede programar como un dispositivo de interfaz humana USB (HID), como un teclado, mouse o joystick.

Una vez que los interruptores se soldaron en su lugar, se debe construir la matriz que conecta las filas y columnas de interruptores al microcontrolador. Esta matriz nos permitirá conectar las 40 teclas más los 7 botones del joystick a los 18 pines de E / S del Pro Micro. El teclado Spectrum no necesita manejar múltiples pulsaciones de teclas, excepto las teclas Mayús Mayús y Cambio de símbolo, por lo que las colocaremos en pines dedicados, luego no tendremos que preocuparnos por usar diodos para evitar teclas fantasma. prensas. He incluido un esquema para mostrar cómo está conectado el teclado, incluida la matriz. Primero, cada columna está vinculada con un tramo de cable de un solo núcleo y luego las filas se conectan utilizando un cable de un solo núcleo que se forma cuidadosamente para cruzar las columnas sin cortocircuito. Esto puede ser un poco complicado porque necesita colocar los cables de la fila lo suficientemente altos para evitar el contacto con las columnas, pero lo suficientemente bajos como para dejar espacio para todo el cableado que necesitamos introducir durante el ensamblaje final. Finalmente, las filas y columnas están conectadas a los pines Arduino con cables de viejos cables IDE.

Como se mencionó anteriormente, el controlador de joystick también funcionará como un controlador de cursor y un mouse, por lo que tendremos que poder cambiar entre los modos. El modo predeterminado será el modo de cursor, una combinación de Mayúsculas + el botón de disparo cambiará al modo de joystick y la combinación del botón de cambio de símbolo + disparo cambiará al modo de ratón. Para mostrar en qué modo está, hay un par de LED de 3 mm en el medio del panel del joystick. Un LED de encendido también será útil y una buena manera de proporcionar esto con el Pi es conectar un LED al pin UART TX del Pi, ya que constantemente enviará datos mientras el dispositivo está encendido.

Para evitar que los cables sueltos se deshilachen durante el uso, o que los cables de la matriz se pongan en cortocircuito, todo está cubierto generosamente con pegamento caliente: ¡feo pero efectivo!

El último paso para que el teclado funcione es programar el Arduino con el código ZX_Spectrum_Keyboard de mi repositorio. Una vez hecho esto, puedes dejar el soldador, conectar el teclado a una computadora normal y usarlo con un emulador Spectrum como Fuse o Spectaculator. Pero no nos detendremos aquí, así que sigamos …

Paso 2: pantalla LCD

Pantalla LCD
Pantalla LCD

El Spectrum original tiene una resolución de pantalla de 256x192 píxeles. Para mantener (aproximadamente) esta proporción y evitar tener barras negras en ambos lados, seleccioné una pantalla táctil LCD TFT de 320x240 Waveshare de 3.2 diseñada para Raspberry Pi. No se conectará directamente al encabezado GPIO de Pi, por lo que podemos eliminar el borde de plástico del conector y recorté los pines. Recorté un protoboard de 7x9 cm a 2,1x9 cm (el tamaño exacto no importa siempre que los dos orificios de las esquinas restantes se alineen con los orificios superiores del teclado y haya suficiente espacio para soldar los pines del cabezal GPIO) y soldó los pines en su posición, lo que nos dará una forma sencilla de montar la pantalla sobre el teclado.

Solo necesitamos conectar los pines de E / S de SPI, alimentación y pantalla táctil al Pi; puede ser bastante complicado rastrear qué pines son realmente necesarios, pero la información está disponible si miras lo suficiente. La pantalla de Waveshare usa 10 pines: 4, 6, 9, 13, 15, 19, 21, 23, 24 y 26. Obviamente, si está haciendo esto con una pantalla diferente, deberá verificar los pines correctos antes agarrando su soldador.

No se necesita una configuración de software especial; simplemente instale el software del controlador del fabricante y estará listo para usar.

Paso 3: Inalámbrico (Bluetooth)

La placa Raspberry Pi Zero no tiene capacidad inalámbrica, solo un puerto USB útil y no habrá suficiente espacio en la carcasa para un concentrador USB, así que tuve que ponerme un poco inventivo para agregar algún tipo de capacidad inalámbrica para mi construcción. Si está construyendo esto con Zero W, puede omitir este paso.

Hay una característica interesante de la Raspberry Pi que nos permitirá agregar una capacidad inalámbrica útil. Al conectar un módulo de serie Bluetooth HC-05 barato a los pines UART de Pi y ajustar la configuración del sistema, es posible obtener acceso inalámbrico a la terminal de línea de comandos utilizando serial sobre Bluetooth. Luego, podemos usar herramientas comunes para enviar archivos al dispositivo y administrar el sistema de archivos.

Paso 4: Poder

Poder
Poder
Poder
Poder

Elegí mi batería al final del desarrollo, por lo que necesitaba elegir una celda que encajara en el espacio disponible. El que elegí fue un Lipo 2000mAH 25C 1S (dimensiones: 81x34x9 mm) vendido como reemplazo del dron Walkera Syma X5. Sería bueno poder cargar la batería in situ con una conexión USB normal y poder usar el dispositivo mientras se carga. Realmente no queremos jugar con circuitos de control de energía complejos, por lo que vamos a usar un módulo listo para usar que proporciona carga USB y también una salida de 5V mejorada para alimentar el Pi directamente. Para garantizar que el dispositivo se pueda apagar por completo, hay un interruptor deslizante entre la salida de este módulo y el Pi que garantiza que la batería aún se pueda cargar incluso cuando el dispositivo está apagado. El Pi debe apagarse correctamente para evitar problemas de corrupción de datos. En lugar de tener que iniciar sesión a través de la serie Bluetooth, podemos conectar un interruptor táctil al pin 5 de Pi (GPIO3) y escribir un pequeño script que observe esto e inicie un apagado cuando se presiona. Los componentes de alimentación e inalámbricos se soldaron a otro protoboard de 7x9 cm que se colocará directamente debajo del teclado.

Paso 5: conectándolo todo junto

Conectándolo todo junto
Conectándolo todo junto
Conectándolo todo junto
Conectándolo todo junto
Conectándolo todo junto
Conectándolo todo junto

Con todas las piezas construidas, podemos ensamblar las partes internas. El mayor problema con el que me encontré durante el ensamblaje fue que el puerto USB se rompió en mi Arduino Pro Micro, lo que me obligó a soldar los cables directamente a las almohadillas de soldadura en lugar de usar un cable USB. Este es un punto débil notorio en las placas Pro Micro, por lo que probablemente valga la pena aplicarle una buena cantidad de pegamento caliente antes del ensamblaje para evitarlo. Suponiendo que esta desgracia en particular no le ocurra, tiene una opción: puede hacer un cable micro USB a micro USB súper delgado para conectar su teclado al Pi o puede soldar uno o ambos extremos directamente a las placas. Como necesitaba soldar el lado de Arduino, también soldé el lado de Pi directamente a los puntos de prueba en la parte posterior de la placa. Hay ventajas y desventajas para cada opción, por lo que depende de usted cuál prefiera.

Mantendremos las tablas juntas con separadores de nailon M3. Necesitamos separadores de 2x 9 mm para conectar los orificios inferiores entre el teclado y la placa de alimentación. Los orificios superiores también retienen la pantalla, por lo que queremos separadores de 2,5 mm entre el teclado y la pantalla, y separadores de 4,5 mm entre la pantalla y la placa de alimentación. La foto lateral muestra cómo se ve esto. Los separadores necesitarán un poco de recorte cuidadoso para que todo quede en paralelo; puede quedar un poco ajustado con todos los cables del teclado, pero deberían ir juntos. Como se puede ver en las fotos, el dispositivo se puede encender y usar después del ensamblaje, sin necesidad de una carcasa real. Pronto imprimiremos un gabinete, pero antes de llegar a eso, necesitaremos instalar el sistema operativo y configurarlo.

Paso 6: software

Con los componentes internos ensamblados, podemos continuar con la instalación y configuración del software. La Raspberry Pi se ejecutará en una instalación estándar de Raspbian. El único software adicional que debe instalarse, además de los controladores de pantalla TFT, es la aplicación Fuse. Estamos usando la versión de SDL para obtener la funcionalidad de pantalla completa adecuada, que se puede instalar con:

sudo apt-get install fusible-emulador-sdl

Para manejar nuestras pulsaciones del botón de apagado, copie el script 'shutdown' de mi repositorio de código a / home / pi /

Para obtener una consola en serie a través de Bluetooth, agregue la siguiente línea a / boot / config:

enable_uart = 1

Queremos que nuestro script de apagado y el emulador Fuse se ejecuten en el lanzamiento, así que agregue estas líneas a / etc / xdg / lxsession / LXDE-pi / autostart:

@ / home / pi / shutdown

@ fuse-sdl --no-sound --kempston --no-auto-load

Reinicie la Pi después de realizar estos cambios y debería haber terminado.

Paso 7: Gabinete y ensamblaje final

Cerramiento y montaje final
Cerramiento y montaje final
Cerramiento y montaje final
Cerramiento y montaje final
Cerramiento y montaje final
Cerramiento y montaje final

El gabinete se modeló en Fusion 360 (cómo hacerlo está fuera del alcance de este instructivo). Hay 5 partes: la parte posterior de la carcasa, la parte frontal de la pantalla, la parte frontal del teclado, el botón de encendido y la cubierta del panel de control. La cubierta del panel de control debe imprimirse en un filamento flexible (usé PLA flexible, pero un material más suave como NinjaFlex podría ser mejor); todo lo demás debe imprimirse en un plástico rígido (yo usé Filamentum black PLA).

Para darle algo de resistencia al botón de encendido y evitar que suene, pegue un poco de espuma adhesiva de 3 mm en su parte posterior y luego haga un orificio de 4 mm para permitir que se asiente cómodamente sobre el interruptor tac vertical en la PCB de alimentación. Es posible que deba recortar un borde ligeramente, como se puede ver en las fotos, para evitar enganchar la placa de alimentación. También me resultó útil usar un poco de pegamento para mantener el botón en el interruptor de encendido.

Necesitamos pegar un par de separadores de nailon en los soportes superiores del panel frontal de la pantalla para permitir que las partes superiores del gabinete se sujeten de forma segura. Una vez secos, recorte los separadores al ras.

Para colocar las tablas, primero necesitamos crear los postes de montaje. Retire las cabezas de algunos tornillos de nailon M3 y pegue las partes roscadas en los orificios inferiores de cada uno de los paneles frontales. Cuando se hayan secado, los 2 paneles frontales se pueden pegar y el teclado se puede fijar en su lugar usando los separadores de 9 mm y 2,5 mm. A continuación, con esto en su lugar, la pantalla se puede colocar en los postes superiores y se pueden agregar los separadores de 4.5 mm. Finalmente, la placa de potencia se puede colocar en posición y los cables se pueden arreglar para permitir el montaje de la parte trasera.

La batería debe estar pegada en su lugar con cinta adhesiva de doble cara o lámina de espuma y enchufada al conector de alimentación. Ahora las dos mitades se pueden unir y se pueden usar algunos tornillos de máquina M3 avellanados cortos para asegurar todo en su lugar.

Finalmente, déle la vuelta y pegue la cubierta del panel de control al panel del teclado. Hice esto con un adhesivo epoxi de dos partes para una unión fuerte.

Paso 8: superposición de teclado

Superposición de teclado
Superposición de teclado
Superposición de teclado
Superposición de teclado
Superposición de teclado
Superposición de teclado

Ya casi hemos terminado. Todo lo que falta son algunas marcas clave y una superposición para que sepamos cómo llegar a todas esas maravillosas palabras clave.

Las letras y números principales están en las tapas de los interruptores reales. Encontré algunas transferencias de letras de 2,5 mm realmente pequeñas que encajan perfectamente en las tapas de 4 mm de diámetro. Son un poco difíciles de aplicar porque la parte superior se mueve cuando los frotas, pero obtienes bastantes letras en un paquete, por lo que está bien cometer algunos errores. Terminé tocando algunos con un marcador permanente fino aunque, en retrospectiva, debería haber intentado remojarlos en agua tibia y deslizarlos en su lugar (si alguna vez has construido un kit modelo, estarás familiarizado con este proceso). Para proteger las letras durante el uso, apliqué un poco de esmalte de uñas transparente en la parte superior de cada tecla.

Para evitar que los cuerpos plateados de los interruptores se vean a través de los espacios en la superposición, utilicé un marcador permanente para colorearlos; esto se puede ver en la fila inferior de una de las fotos.

Diseñé las superposiciones impresas en el programa de gráficos de código abierto GIMP y luego las imprimí en papel mate de calidad fotográfica. Idealmente, las superposiciones serán lo más delgadas posible; pude despegar el respaldo del papel de la marca Epson que usé muy fácilmente, aunque este no será el caso con todas las marcas. Para proteger la impresión, cubrí el papel con una hoja de vinilo adhesivo transparente y apliqué cinta adhesiva de doble cara en la parte posterior para pegarlo a la carcasa. Sin embargo, antes de pegar las superposiciones, debemos perforar los agujeros. Utilicé una perforadora de cuero barata de 4 mm y obtuve los mejores resultados afilando las perforaciones y cortando directamente contra un trozo de chapa de aluminio de 3 mm. Luego, las superposiciones solo deben alinearse y pegarse.

Paso 9: Conclusión

¡Y hemos terminado! Este ha sido un proyecto bastante grande que exige una variedad de habilidades que incluyen electrónica básica, soldadura, modelado 3D, programación e incluso un poco de diseño gráfico. En última instancia, ha sido muy gratificante y es muy divertido jugar con el dispositivo terminado, pero ¿cómo se compara con mis criterios originales?

Barato: el costo total de todo, incluidos los precios minoristas actuales de los artículos que ya tenía y los artículos de papelería como la cinta de doble cara que durará mucho más allá de este proyecto, es de alrededor de £ 80, lo que lo convierte en un proyecto asequible.

Portátil: Definitivamente es portátil. Este dispositivo cabe cómodamente en un bolsillo y es completamente autónomo, por lo que se puede usar en cualquier lugar. Si tuviera que construirlo de nuevo, haría un controlador plano de estilo joypad de 4 vías en lugar de usar la palanca de navegación, ya que sobresale por encima de la línea del dispositivo, dejándolo vulnerable a daños. También me gustaría ver si hay disponible una pantalla no táctil de tamaño y relación similares con una cubierta más resistente a los arañazos, ya que no necesito la interfaz de pantalla táctil y la superficie resistiva es particularmente propensa a dañarse.

Teclado y joystick: Estoy realmente satisfecho con cómo funcionaron. Aunque no tiene la sensación de carne muerta del original, usar el teclado recuerda sorprendentemente al antiguo ZX Spectrum: el diseño, la superposición y la implementación de palabras clave funcionan bien juntos para lograr esto. El teclado USB también se puede usar solo con una computadora que ejecute el emulador Fuse para brindar la misma experiencia.

Instantáneo: el uso del módulo en serie Bluetooth hace que sea relativamente fácil transferir archivos de cinta al dispositivo desde otra computadora sin necesidad de salir de la interfaz Fuse, y debería ser posible agilizar aún más el proceso escribiendo un script del lado del cliente para enviar un archivo al dispositivo. Preferiría poder usar la función de transferencia de archivos estándar de Bluetooth "enviar al dispositivo" integrada en la mayoría de los sistemas operativos, o un sistema de intercambio de archivos adecuado como Samba. Sin embargo, esos solo estarán disponibles con la placa Pi Zero W y no los usé para esta compilación.

Además de los elementos mencionados anteriormente, si comenzara este proyecto nuevamente desde cero, elegiría una batería más delgada con una capacidad más grande al principio del proyecto y diseñaría a su alrededor en lugar de tener que seleccionar una batería del tamaño adecuado al final de el proyecto. También usaría un Pi Zero W en lugar de un módulo de serie Bluetooth para expandir las opciones para enviar archivos al dispositivo. Otra mejora obvia sería algún tipo de indicación del estado de la batería del hardware, ya que actualmente no hay forma de ver cuánta carga queda. También consideraría usar un sistema operativo basado en Ramdisk como Alpine Linux, que sería más tolerante a los apagados bruscos y debería permitir un solo interruptor de encendido / apagado sin la necesidad de un botón de apagado por separado, mucho más como el ZX Spectrum original, solo desenchúfelo cuando haya terminado.

Podría ser interesante diseñar una PCB personalizada para este dispositivo que, potencialmente, nos permitiría colocar los componentes de alimentación en la parte posterior del teclado en lugar de tener una placa separada. Esto podría reducir significativamente la profundidad del dispositivo terminado. También facilitaría el montaje del dispositivo y ofrecería el potencial de algún tipo de kit de autoensamblaje. Si hay suficiente interés en este proyecto, podría hacer una versión 2 que aborde estos problemas.

Paso 10: Recursos

Se necesitan los siguientes recursos para construir este proyecto:

Archivos de casos imprimibles en 3D (Thingiverse):

Código (Github):

Recomendado: