Tabla de contenido:

Retro-CM3: una potente consola de juegos con control retroPie: 8 pasos (con imágenes)
Retro-CM3: una potente consola de juegos con control retroPie: 8 pasos (con imágenes)

Video: Retro-CM3: una potente consola de juegos con control retroPie: 8 pasos (con imágenes)

Video: Retro-CM3: una potente consola de juegos con control retroPie: 8 pasos (con imágenes)
Video: CONSEGUí un TV BOX x96 air de 30€ ¿ sirve como CONSOLA de EMULACION ? 2024, Noviembre
Anonim
Retro-CM3: una poderosa consola de juegos con control retroPie
Retro-CM3: una poderosa consola de juegos con control retroPie
Retro-CM3: una poderosa consola de juegos con control retroPie
Retro-CM3: una poderosa consola de juegos con control retroPie
Retro-CM3: una poderosa consola de juegos con control retroPie
Retro-CM3: una poderosa consola de juegos con control retroPie

Este instructivo está inspirado en PiGRRL Zero de adafruit, la versión original de Gameboy Zero de Wermy y la consola de juegos Handled de GreatScottLab. Esas consolas de juegos basadas en RetroPie usan la raspberry pi zero (W) como su núcleo. PERO, después de haber construido varias consolas Pi Zero, se encontraron dos problemas principales.

1) La Raspberry Pi Zero (W) tiene solo un núcleo Cortex-A7 y 512 MB de RAM, lo que está bien para el tipo de cosas NES / SNES / GB. Sin embargo, cuando intenté ejecutar PS / N64 Emus, la experiencia fue bastante inaceptable. Incluso algunos de los juegos de GBA no pueden funcionar sin problemas (algún retraso de audio, también en algunos juegos NEOGEO como Metal Slug cuando se trata de escenas complicadas); 2) La mayoría de las compilaciones de consolas de juegos usan SPI o salida de TV como interfaz de pantalla. La pantalla SPI necesitará que la CPU ayude con el controlador del búfer de cuadros, lo que empeorará la experiencia del juego y los fps también están limitados por la velocidad del reloj SPI. Y la calidad de visualización de la salida de TV no es lo suficientemente buena.

En este instructivo, usaremos el Módulo de Computación 3 de RaspberryPi y una pantalla LCD de interfaz DPI para construir una consola de juegos RetroPie definitiva. Debería poder ejecutar todos los emuladores sin problemas y proporcionar una alta resolución y alta velocidad de fotogramas.

El tamaño final de la consola de juegos es 152x64x18 mm con una batería de hasta 2000 mAh. La construcción total cuesta alrededor de $ 65, incluida una PCB personalizada, todos los componentes, una tarjeta TF de 16 GB y un módulo de cómputo RaspberryPi 3 Lite. Como ya tengo una impresora 3D, la funda solo me cuesta 64g de filamento PLA.

Vamos a empezar.

Nota: Como el inglés no es mi primer idioma, si encuentra algún error o algo no está claro, por favor hágamelo saber.

Esta es mi primera publicación en instructable.com y realmente necesito todo tipo de sugerencias de ustedes.

Paso 1: ingredientes

Ingredientes
Ingredientes
Ingredientes
Ingredientes
Ingredientes
Ingredientes
Ingredientes
Ingredientes

Estos son los ingredientes que necesita para construir la consola de juegos. Es posible que algunas de las piezas no estén disponibles en su región, pruebe algunas piezas alternativas.

1) El módulo informático RaspberryPi 3 Lite. Cómprelo en la tienda donde consiguió su RaspberryPi 3B o pruébelo en eBay.

2) LCD de 3,2 pulgadas con interfaz RGB / DPI. ASEGÚRESE de tener un módulo LCD de interfaz RGB / DPI porque es imprescindible para construir esta consola. Obtuve mi pantalla LCD en una tienda electrónica local y el mismo módulo se puede encontrar en alibaba. Si compra un módulo LCD alternativo, PIDA al proveedor que le envíe el parámetro detallado y el código de inicialización. También es una buena elección comprar los conectores correspondientes en la misma tienda, ya que hay muchos tipos diferentes de conectores.

3) ALPS SKPDACD010. Interruptor táctil con recorrido de 1,75 mm. Búsquelo en su tienda local de componentes electrónicos.

4) Algunas otras claves. Utilice cualquier otra tecla táctil que pueda obtener para los botones START / SELECT / VOL + / VOL-.

5) Altavoz. Cualquier altavoz de 8 ohmios, 0,5-1,5 W.

6) Batería. Elegí una batería de iones de litio de 34 * 52 * 5.0 mm 1S 1000mAh x2.

7) Algunos circuitos integrados. STM32F103C8T6, IP5306, TDA2822, NC7WZ16, SY8113, PT4103 y etc.

8) Algunos conectores. USB-Micro Hembra, PJ-237 (conector de teléfono), conector de tarjeta TF, DDR2 SODIMM y etc.

9) Algunos componentes pasivos. Resistencias, condensadores e inductores.

10) Una PCB personalizada. Los archivos de esquema y PCB se proporcionan al final. Recuerde realizar cambios en él si utiliza piezas alternativas.

11) Una impresora 3D. Asegúrese de que pueda imprimir piezas de hasta 152 * 66 * 10 mm.

12) Filamento PLA suficiente.

Paso 2: el módulo de cálculo 3

El módulo de cómputo 3
El módulo de cómputo 3
El módulo de cómputo 3
El módulo de cómputo 3

El Raspberry Pi Compute Module 3 es una placa central muy poderosa para la creación de prototipos de algunos dispositivos de interés. La introducción detallada se puede encontrar aquí. Y aquí se puede encontrar información útil.

El módulo utiliza un conector de tipo DDR2 SODIMM, que es un poco más difícil de usar. Además, todos los pines GPIO del BCM2837 core BANK1 y BANK0 están conectados.

Para comenzar a usar el módulo de cómputo, necesitamos proporcionar varios voltajes diferentes: 1.8V, 3.3V, 2.5V y 5.0V. Entre ellos, 1.8V y 3.3V se utilizan para alimentar algunos periféricos que necesitan aproximadamente 350mA cada uno. La línea de alimentación de 2,5 V impulsa el DAC de salida de TV y se puede conectar a 3,3 V ya que no necesitamos la función de salida de TV. El 5.0V debe estar conectado a los pines VBAT y alimenta el Core. La entrada VBAT acepta un rango de voltaje de 2.5V a 5.0V y solo asegúrese de que la fuente de alimentación pueda generar hasta 3.5W. Los pines VCCIO (GPIO_XX-XX_VREF) se pueden conectar a 3.3V ya que usamos un nivel CMOS de 3.3V. El pin SDX_VREF también debe estar conectado a 3.3V.

Aquí no se utilizan todos los pines HDMI, DSI, CAM, simplemente déjelos flotando. Recuerde atar el pin EMMC_DISABLE_N a 3.3V ya que usaremos una tarjeta TF como disco duro en lugar de la función de arranque USB.

Luego, conecte los pines SDX_XXX a los pines correspondientes en la ranura de la tarjeta TF y no se necesitan resistencias pull-up ni pull-down. En este paso, estamos listos para iniciar el módulo de cómputo Raspberry Pi 3. Encienda la fuente de alimentación en orden decreciente: 5V, 3.3V y luego 1.8V, el sistema debería poder iniciarse pero como no hay salida dispositivo, simplemente no sabemos si funciona bien. Entonces, necesitamos agregar una pantalla para verificarlo en el siguiente paso.

Pero antes de continuar, primero debemos decirle al Pi cuál es la función de cada GPIO. Aquí proporciono algunos archivos, coloco "dt-blob.bin", "bcm2710-rpi-cm3.dtb" y "config.txt" en la carpeta de inicio de una tarjeta TF recién flasheada. Ponga el "dcdpi.dtbo" en la carpeta / boot / overlay. El dt-blob.bin define la función predeterminada de cada GPIO. Cambio el GPIO14 / 15 a GPIO normal y muevo la función UART0 a GPIO32 / 33 ya que necesitamos GPIO14 / 15 para interactuar con el módulo LCD. También le digo al Pi que use GPIO40 / 41 como función pwm y que sea la salida de audio derecha e izquierda. El dcdpi.dtbo es un archivo de superposición de árbol de dispositivos y le dice al Pi que usaremos GPIO0-25 como función DPI. Finalmente, escribimos "dtoverly = dcdpi" para que el Pi cargue el archivo de superposición que proporcionamos.

En este momento, las Raspberry Pi comprenden completamente qué función se debe usar para cada GPIO y estamos listos para seguir adelante.

Paso 3: Interfaz del módulo LCD

Interfaz del módulo LCD
Interfaz del módulo LCD
Interfaz del módulo LCD
Interfaz del módulo LCD
Interfaz del módulo LCD
Interfaz del módulo LCD

Como en esta consola se pueden usar diferentes módulos LCD de interfaz DPI / RGB, aquí tomamos el módulo usado en mi propia construcción como ejemplo. Y si elige uno diferente, verifique la definición de pines de su módulo y simplemente haga las conexiones de acuerdo con los nombres de los pines como se muestra en el ejemplo.

Hay dos interfaces en el módulo LCD: un SPI y un DPI. El SPI se utiliza para configurar los ajustes iniciales del IC del controlador LCD y podemos conectarlos a cualquier GPIO no utilizado. Solo conecte los pines Reset, CS, MOSI (SDA / SDI) y SCLK (SCL), no se utiliza el pin MISO (SDO). Para inicializar el controlador LCD, aquí utilizamos la biblioteca C BCM2835 para controlar los GPIO y generar una determinada secuencia de inicialización proporcionada por el proveedor del módulo. El archivo fuente se puede encontrar más adelante en este instructivo.

Instale la biblioteca BCM2835 C en otra Raspberry Pi 3 de acuerdo con las instrucciones aquí. Luego use el comando "gcc -o lcd_init lcd_init.c -lbcm2835" para compilar el archivo fuente. Luego agregue una nueva línea en el archivo /etc/rc.local antes de "exit 0": "/ home / pi / lcd_init" (suponga que ha puesto la aplicación compilada en la carpeta / home / pi). Debe enfatizarse que el archivo fuente solo se usa para el módulo específico que usé y para un módulo LCD diferente, simplemente solicite al proveedor una secuencia de inicialización y modifique el archivo fuente en consecuencia. Este proceso es bastante complicado porque en este punto no se puede ver nada en la pantalla, por eso le sugiero encarecidamente que haga esto en una placa RPI-CMIO, ya que lleva todos los GPIO para que pueda depurarlo con uart o wlan.

La siguiente parte es fácil, simplemente conecte los pines izquierdos del módulo LCD de acuerdo con aquí. Depende del tipo de módulo LCD que tenga, elija sabiamente el modo RGB. Para mí, aquí elegí el DPI_OUTPUT_FORMAT_18BIT_666_CFG2 (modo 6). Modifique la línea "dpi_output_format = 0x078206" según su elección. Y si su módulo LCD usa una resolución diferente, ajuste el "hdmi_timings = 480 0 41 60 20 800 0 5 10 10 0 0 0 60 0 32000000" consulte el archivo aquí.

Si todas las configuraciones son correctas, en el próximo arranque de su Pi, debería ver la pantalla en la pantalla después de 30-40 segundos en negro (desde la energía hasta el sistema carga su script de inicialización SPI).

Paso 4: el teclado y el audio

El teclado y el audio
El teclado y el audio
El teclado y el audio
El teclado y el audio

Hemos terminado con el Núcleo y la Salida en los dos últimos pasos. Ahora pasemos a la parte de entrada.

Una consola de juegos necesita teclas y botones. Aquí necesitamos 10 interruptores ALPS SKPDACD010 como los botones arriba / abajo / derecha / izquierda, LR y A / B / X / Y. Y las teclas normales de montaje en superficie de 6x6 se utilizan para otros botones como iniciar / seleccionar y subir / bajar el volumen.

Hay dos formas de conectar los botones con la Raspberry Pi. Una forma es conectar los botones directamente a los GPIO en el Pi y otra forma es conectar los botones a una MCU e interactuar con el Pi a través del protocolo USB HID. Aquí elegí el segundo, porque necesitamos un MCU para manejar la secuencia de encendido de todos modos y es más seguro mantener el Pi alejado del contacto humano.

Entonces, conecte las llaves al STM32F103C8T6 y luego conecte el MCU al Pi con USB. Puede encontrar un ejemplo del programa MCU al final de este paso. Modifique las definiciones de pines en hw_config.cy compílelo con la biblioteca USB de la MCU que se encuentra aquí. O simplemente puede descargar el archivo hexadecimal directamente a la MCU siempre que comparta las mismas definiciones de pines en el esquema al final de este instructivo.

En cuanto a las salidas de audio, el esquema oficial de la Raspberry Pi 3 B da una buena forma de filtrar la onda pwm y el mismo circuito debería funcionar perfectamente aquí. Una cosa que debe señalarse es que recuerde agregar la línea "audio_pwm_mode = 2" al final de config.txt para reducir el ruido de la salida de audio.

Para manejar el altavoz, se necesita un controlador de altavoz. Aquí elegí el TDA2822 y el circuito es el circuito BTL oficial. Tenga en cuenta que el conector telefónico PJ-327 tiene un pin de desconexión automática en la salida derecha. Cuando no hay auriculares enchufados, el pin 3 está conectado al canal derecho. Y tan pronto como se enchufan los auriculares, este pin se desconecta del canal derecho. Este pin se puede utilizar como pin de entrada del altavoz y el altavoz se silenciará cuando se conecten los auriculares.

Paso 5: El poder

El poder
El poder
El poder
El poder
El poder
El poder

Regresemos a la sección de energía y verifiquemos el diseño de energía detallado.

Hay 3 secciones de potencia: el suministro de MCU, el cargador / amplificador y los DC-DC Bucks.

La fuente de la MCU se divide de todas las demás fuentes de alimentación porque la necesitamos para realizar la secuencia previa al encendido. A medida que se presiona el botón de encendido, el PMOS conectará el pin EN del LDO a la batería para habilitar el LDO. Luego, se enciende la MCU (el botón aún está presionado). En el arranque de la MCU, verificará si el botón de encendido está presionado el tiempo suficiente. Después de aproximadamente 2 segundos, si la MCU encuentra que el botón de encendido aún está presionado, levantará el pin "PWR_CTL" para mantener el PMOS encendido. En este momento, la MCU asume el control de la fuente de alimentación de la MCU.

Cuando se presiona el botón de encendido durante 2 segundos nuevamente, la MCU ejecutará la secuencia de apagado. Al final de la secuencia de apagado, la MCU liberará el pin "PWR_CTL" para permitir que el PMOS se apague y luego se deshabilite el suministro de la MCU.

La parte del cargador / amplificador utiliza el IC IP5306. Este IC tiene una carga de 2.4A y una descarga de 2.1A Soc altamente integrado para el uso del banco de energía y se adapta perfectamente a nuestras necesidades. El IC puede cargar la batería, proporcionar una salida de 5 V y mostrar el nivel de la batería con 4 LED al mismo tiempo.

La pieza DC-DC Buck utiliza dos buck 3A de alta eficiencia SY8113. La tensión de salida se puede programar mediante 2 resistencias. Para garantizar la secuencia de energía, primero necesitamos la MCU para habilitar el Booster. La señal KEY_IP simulará una pulsación de tecla en el pin KEY de IP5306 y habilita el amplificador interno de 5V. Después de eso, la MCU habilitará el dólar de 3.3V tirando del pin RASP_EN hacia arriba. Y después de que se proporcionan 3.3V, el pin EN del buck de 1.8V se eleva y habilita la salida de 1.8V.

En cuanto a la batería, dos baterías de iones de litio de 1000 mAh son suficientes para la consola. El tamaño normal de este tipo de batería es de alrededor de 50 * 34 * 5 mm.

Paso 6: Configurar el sistema

Configurar el sistema
Configurar el sistema

En este paso, juntaremos todas las configuraciones.

Primero, debe descargar y actualizar la imagen de RetroPie en una nueva tarjeta TF. El tutorial y la descarga se pueden encontrar aquí. Descarga la versión Raspberrypi 2/3. Verá 2 particiones después de flashear la imagen: una partición de "arranque" de formato FAT16 y una partición "Retropie" de formato EXT4.

Cuando haya terminado, no lo inserte en la Raspberry Pi instantáneamente porque necesitamos agregar una partición FAT32 para las roms. Use herramientas de partición como DiskGenius para ajustar la partición EXT4 a aproximadamente 5-6GB y cree una nueva partición FAT32 con todo el espacio libre que queda en su tarjeta TF. Consulte la imagen que he subido.

Asegúrese de que su sistema pueda identificar el lector de tarjetas TF como un dispositivo USB-HDD y verá 3 particiones en su explorador. Dos de ellos son accesibles y Windows le pedirá que formatee el izquierdo. ¡NO lo formatee!

Primero abra la partición de "arranque" y siga el Paso 2 para configurar las configuraciones de los pines. O simplemente puede descomprimir el archivo boot.zip en este paso y copiar todos los archivos y carpetas en su partición de arranque. Recuerde copiar el script lcd_init compilado también en la partición de arranque.

Aquí estamos listos para realizar el primer arranque, pero como no hay pantalla, le recomiendo encarecidamente que utilice una placa RPI-CMIO con un dispositivo wlan usb. Luego, puede configurar el archivo wpa_supplicant y habilitar ssh en este paso. Sin embargo, si no tiene la intención de obtener uno, GPIO32 / 33 se puede utilizar como terminal UART. Conecte el pin TX (GPIO32) y RX (GPIO33) a una placa usb-to-uart y acceda al terminal con la velocidad en baudios de 115200. De cualquier manera, necesita obtener un acceso de terminal a su Pi.

En el primer arranque, el sistema se bloqueará cuando intente expandir el sistema de archivos. Ignórelo, presione inicio (tecla enter del teclado USB HID) y reinicie. En la terminal, copie el script lcd_init en la carpeta de inicio del usuario "pi" y siga el Paso 3 para configurar el inicio automático. Después de otro reinicio, debería ver que la pantalla se ilumina y muestra algo.

En este momento, su consola de juegos está lista para jugar. Sin embargo, para cargar roms y BIOS en su tarjeta TF, necesita acceder a un terminal cada vez. Para hacerlo simple, le sugiero que configure la partición FAT32.

Primero haga una copia de seguridad de la carpeta RetroPie en / home / pi en RetroPie-bck: "cp -r RetroPie RetroPie-bck". Luego agregue una nueva línea en / etc / fstab: "/ dev / mmcblk0p3 / home / pi / RetroPie defaults, uid = 1000, gid = 1000 0 2" para montar automáticamente la partición FAT32 en la carpeta RetroPie con la configuración del propietario como usuario "Pi". Después de reiniciar, encontrará que el contenido de la carpeta RetroPie desapareció (si no es así, reinicie nuevamente) y algunos errores aparecen en la pantalla. Copie todos los archivos en RetroPie-bck de nuevo en RetroPie y reinicie nuevamente. Los errores deberían desaparecer y puede configurar el dispositivo de entrada siguiendo las instrucciones en pantalla.

Si desea agregar roms o BIOS, desenchufe la tarjeta TF cuando esté apagada y conéctela a su computadora. Abra la tercera partición (¡RECUERDE IGNORAR la sugerencia de formato!) Y copie los archivos en las carpetas correspondientes.

Paso 7: la carcasa y los botones impresos en 3D

El estuche y los botones impresos en 3D
El estuche y los botones impresos en 3D
El estuche y los botones impresos en 3D
El estuche y los botones impresos en 3D
El estuche y los botones impresos en 3D
El estuche y los botones impresos en 3D

Diseñé el estuche estilo GameBoy Micro para la consola de juegos.

Solo imprime

4x ABXY. STL

2x LR. STL (Necesita agregar soporte)

1x CROSS. STL

1x TOP. STL

1x BOTTOM. STL

Los imprimo usando PLA con 20% de relleno, capa de 0,2 mm y es lo suficientemente fuerte.

Como el estuche está apretado, verifique la precisión de la impresora con un cubo de prueba antes de imprimir.

Y se necesitan tres tornillos de 3 mm de 5 mm de largo y cuatro tornillos de φ3 mm de 10 mm de largo para ensamblarlos.

Paso 8: Todos juntos y solución de problemas

Todos juntos y resolución de problemas
Todos juntos y resolución de problemas
Todos juntos y resolución de problemas
Todos juntos y resolución de problemas
Todos juntos y resolución de problemas
Todos juntos y resolución de problemas
Todos juntos y resolución de problemas
Todos juntos y resolución de problemas

Como el circuito es un poco complicado, es una buena opción hacer algunos trabajos de PCB. El esquema completo y mi propia versión de PCB se cargan al final de este paso. Si tiene la intención de utilizar mi versión de PCB, no elimine mi logotipo en la capa Top_Solder. Es mejor hacer su propia personalización y entregar su propio archivo de PCB al fabricante local para que lo sepa porque es realmente difícil comprar las mismas piezas que uso en mi PCB.

Después de soldar todos los componentes en la PCB y probarlos, lo primero que debe hacer es descargar el archivo hexadecimal a la MCU. Después de eso, pegue el módulo LCD en la PCB. El módulo LCD debe estar 3 mm por encima de la PCB para que quepa en la carcasa. Use un poco de cinta gruesa de doble cara para pegarlo. Luego conecte el FPC al conector e inserte la tarjeta CM3L y TF. NO suelde la batería ahora, conecte una fuente de alimentación USB y enciéndalo.

Compruebe todos los botones y la pantalla. Mida el voltaje entre BAT + y GND, verifique si el voltaje es de alrededor de 4.2V. Si el voltaje es correcto, desenchufe el cable USB y suelde la batería. Prueba el botón de encendido.

Coloque el botón CROSS y ABXY en la carcasa SUPERIOR y coloque la PCB en la carcasa. Utilice 3 tornillos para fijar la PCB en la carcasa. Agregue un poco de cinta gruesa de doble cara en la parte posterior de todos los botones SKPDACD010 y pegue la batería. USE cinta gruesa para evitar que las clavijas del SKPDACD010 dañen la batería. Luego pegue el altavoz a la carcasa INFERIOR. Antes de cerrarlo, es posible que deba probar todos los botones, verificar si funcionan y rebotar correctamente. Luego cierre la caja con 4 tornillos.

Disfrutar.

Algunos consejos para solucionar problemas:

1) Verifique tres veces la conexión de los pines del módulo LCD en el esquema y la PCB.

2) Enrute los cables de señal de la pantalla LCD con restricción de longitud.

3) Cuando no esté seguro acerca de las secciones de potencia, suelde y pruebe cada sección siguiendo la secuencia de potencia. 5V primero y luego 3.3V y 1.8V. Después de probar todas las secciones de potencia, suelde los otros componentes.

4) Si la pantalla aparece borrosa con frecuencia, intente invertir la polaridad de la señal PCLK configurando dpi_output_format.

5) Si la pantalla está muy descentrada, intente invertir la polaridad de la señal HSYNC o VSYNC.

6) Si la pantalla está ligeramente descentrada, intente ajustar la configuración de sobreexploración.

7) Si la pantalla está en negro, intente esperar a que el sistema se inicie con el script rc.local. Si necesita una pantalla desde el principio, intente conectar la interfaz SPI a la MCU y use la MCU para inicializar el módulo LCD.

8) Si la pantalla está negra todo el tiempo, verifique nuevamente la secuencia de inicialización.

9) No dude en hacer cualquier pregunta aquí o por correo electrónico: [email protected]

Recomendado: