Gameboy customizada
Hace un tiempo, me entraron las ganas de hacer una gameboy, y hace unas semanas la terminé. Este fue el resultado:
Voy a explicar todos los pasos desde cero hasta el ensamblaje final:
Hardware
- Raspberry pi 3
- Tarjeta micro SD >= 4GB
- 2.8" PiTFT Display Plus
- PiGRRL Gamepad PCB o cualquier otro PCB que se ajuste a las especificaciones
- PowerBoost 1000c
- 40pin GPIO ribbon cable
- 2500mAh battery
- PAM8302 2.5W Audio Amp
- Slide Switch
- 10x 6mm + 2x 12mm tactile buttons
- 1x 2by20 pin IDC box header
Material
- Una impresora 3D y filamento. En mi caso estoy usando una aleación de PLA con madera para la carcasa, y filaflex para los botones ya qué para que funcionen con los pulsadores táctiles, estos deben ser algo elásticos y no rigidos.
- Soldador
- Cables 30AWG y 26AWG
- Cutter
- Pegamento
- 14x #4-40 3/8 tornillos para máquinas
- 6x #2-56 3/8 tornillos para máquinas
- Y un soporte o teceras manos, para realizar las soldaduras.
Diagrama
Pasos
Paso 1: Imprimir las partes
Descargamos los archivos .STL de ThingiVerse.
La carcasa la imprimiremos con PLA, mientras que los botones con filaflex.
Paso 2: Preparando la Raspberry pi 3
Descargamos la imagen de Retropie desde la página oficial.
Montamos la imagen en la micro SD, para ello podéis utilizar el software que más os guste. En concreto, si usáis OS X, hay uno muy sencillo llamado ApplePi-Baker
:
Una vez montada, conectamos la RP3 por HDMI a cualquier pantalla/monitor para comprobar que todo ha ido correctamente.
Si conectáis un teclado a las RP3, podréis configurar los controles, y una red wifi para poder conectaros via SSH. En caso de que tengáis problemas configurando la red wifi, podéis usar un cable Ethernet.
Nos conectamos via SSH a nuestra RP3:
|
|
Por defecto, la contraseña es raspberry
Preparando el software para la pantalla PiTFT
Expandir el sistema
|
|
Instalamos el nuevo kernel
|
|
Habilitamos y configuramos la PiTFT
|
|
Por defecto la PiTFT (al menos de momento no funciona directamente), esta invertida, así que tendremos que ajustarla, al igual que la velocidad con la que el driver maneja el display, y los FPS.
|
|
Buscamos esta línea:
|
|
Y la cambiamos por esta otra:
|
|
Ahora buscamos:
|
|
Y lo cambiamos a:
|
|
Esto último, ayudará a quitar una banda lateral negra en el display.
Instalamos fbcp
|
|
Y lo añadimos al arranque de nuestro sistema:
|
|
Y antes del exit 0
, añadimos:
|
|
Configurando retrogame
Ahora vamos a configurar los pines con los GPIO. Nos descargamos retrogame:
|
|
Para cambiar los pines hay que configurar retrogame.cfg
, aunque la configuración por defecto nos sirve. Posiblemente, luego podáis darle utilidad a los botones que trae el display PiTFT para crear acceso rápidos u otras funcionalidades.
|
|
Y lo añadimos al arranque de nuestro sistemas:
|
|
Y antes del exit 0
, añadimos:
|
|
Y por último, cambiaremos la configuración para que EmulationStation detecte retrogame como un teclado.
|
|
Y añadimos lo siguiente:
|
|
Y hasta aquí todo lo que tiene que ver con el software.
Paso 3: Preparando el hardware
Empezaremos soldando los botones a la PCB, y el pin header para poder conectar luego el 40pin GPIO ribbon cable.
y los botones L y R:
Ahora nos vamos a la pantalla PiTFT:
Le damos la vuelta, e identificamos el pad que pone #18
.
Tenemos que cortar la línea fina que une los dos pads para poder usar correctamente GPIO 18, ya que el botón Y está siendo usado por ese GPIO. Cortando la línea haremos que no haya un parpadeo en el display:
Ahora vamos a soldar el altavoz:
Al amplificador clase D:
Y soldamos el amplificador al PowerBoost:
Quedándonos algo así:
Al PowerBoost le soldamos ahora un interruptor, que servirá para apagar y encender la gameboy:
Ahora cogemos nuestra RP3, e identificamos los pines del audio, que son los que están justo debajo del pin PP26
y PP24
:
Y llevamos unos cables desde esos pines a nuestro amplificador:
Ya tenemos casi todo listo. Ahora conectamos el gamepad a la pantalla con el cable, y lo insertamos en la RP3. A continuación lo vamos a encender para ver si salió todo bien. Previamente había cargado un juego para poder probar el gamepad:
¡Parece que funciona! Ahora toca montarlo todo en la carcasa. Ya podéis conectar la batería al PowerBoost. Haced pruebas antes del montaje final. Y os recomiendo que antes de ir al paso 4, vayais al final del todo, en el apartado de pequeños fixes
, ya que posiblemente os sea de mucha ayuda.
Paso 4: Montaje final
Colocamos el display, y lo atornillamos a la carcasa. Hay que tener cuidado ya que puede perforarla.
Colocamos el gamepad, así como el altavoz. En la otra carcasa, ponemos la RP3, el amplificador, PowerBoost y el interruptor:
Cerramos y aseguramos todo, y… ¡Ya tenemos la gameboy hecha!
Os incluyo un pequeño vídeo para que podáis ver como arranca, y como se maneja:
Pequeños fixes
El altavoz, no es que sea de muy buena calidad. Introduce mucho ruido en el audio, y aunque cuando estas jugando tampoco es que se escuche demasiado, a veces puede llegar a cansar. Incluso cuando no hay nada de audio, sigue habiendo ruido.
Lo que vamos a hacer, es añadir una forma para desactivar por completo el amplificador para que de esa manera desactivemos el altavoz, lo que reducirá a su vez el consumo eléctrico.
En el amplificador, podemos ver un pad SD
o shutdown. Cuando metemos un cero lógico, se queda inactivo.
Estos son los GPIO que usamos nosotros:
Botón | PIN | GPIO |
---|---|---|
LEFT | Pin 7 | GPIO 4 |
UP | Pin 36 | GPIO 16 |
RIGHT | Pin 35 | GPIO 19 |
DOWN | Pin 37 | GPIO 26 |
SELECT | Pin 29 | GPIO 5 |
START | Pin 31 | GPIO 6 |
A | Pin 8 | GPIO 14 |
B | Pin 10 | GPIO 15 |
X | Pin 38 | GPIO 20 |
Y | Pin 12 | GPIO 18 |
L | Pin 32 | GPIO 12 |
R | Pin 33 | GPIO 13 |
Vamos a utilizar algún GPIO que esté libre, y vamos a soldar un cable desde la RP3 hasta el pad SD
del amplificador. Aquí podéis ver los GPIO disponibles:
Descargamos WiringPi
|
|
|
|
|
|
|
|
Para más info: WiringPi
Configuring Emulation Station
Copiamos el archivo de configuración de Emulation Station a la configuración del usuario:
|
|
Vamos a añadir una opción apps
a Emulation Station:
|
|
Añadimos al final antes de </systemList>
lo sigiente:
|
|
Creamos un directorio que contendrá los scripts para habilitar/deshabilitar el altavoz:
|
|
Yo voy a usar el GPIO 22, así que para silenciarlo, vamos a mandar un cero lógico por ese GPIO:
|
|
Y otro, para poder habilitarlo de nuevo:
|
|
Hacemos que los scripts sean ejecutables:
|
|
Ahora puedes probar que, efectivamente se silencia el altavoz:
|
|
Reiniciamos la RP3, y ya tendremos la opción apps
al lado de las plataformas de los juegos que hayamos instalado.
Para hacer que el altavoz esté silenciado desde el arranque, tenemos que modificar /etc/rc.local
:
|
|
Y añadimos el script para silenciar, después de /usr/local/bin/retrogame &
pero antes de exit 0
:
|
|
Y listo, con eso tendríamos apagado por defecto el altavoz.
Espero que os haya gustado esta guía.
Un saludo.