Buenas famigos!!
He creado un hilo nuevo para recopilar todo lo que he ido posteando en este otro hilo sobre este proyecto y sobre todo....para terminar el proyecto de una vez que ultimamente no he tenido mucho tiempo libre.
El proyecto basicamente consiste en meter una Raspberry Pi2 dentro de una carcasa de GameBoy clasica!!!!
MATERIALES
- Raspberry Pi 2 Model B
- Micro SDHC Samsung 16Gb Clase 10
- Un mando de snes viejuno para reutilizar el PBC y usarlo para los controles.
- Disipadores para la Raspberry Pi
- Repuesto de Carcasa GameBoy Classsic chinorris
- PiTFT Plus 480x320 3.5" TFT
- 3W Mini Digital Audio Amplifier
- Mini Speaker - 8 ohm 0.5W
-Control de Volumen GBA
- SPDT Slide Switch ON/OFF
- 3.5mm Stereo Jack PCB (Si enchufamos unos cascos, para que el sonido se deje de oir por el altavoz)
- 16mm Pushbutton (un par de botones traseros, la SNES es mi consola favorita XD)
- Batería Externa AUKEY 3000mAh
AUDIO
Bueno vamos a empezar por sacar el AUDIO (Quiero tener un control de volumen, una salida a jack 3.5mm para auriculares y una salida a un mini altavoz).
No soy un experto, asi que si alguien ve algun fallo o algo que no esta bien en los esquemas, agradeceria que me avise
Por lo que he estado viendo por foros, se puede hacer de varias maneras, desde la más elaborada a la más sencilla, yo voy a realizar la opcion #1:
- Salida Jack 3.5mm de auriculares en STEREO + Conversión STEREO a MONO para la salida al altavoz
- Salida Jack 3.5mm de auriculares en STEREO + Coger un canal para salida al altavoz
- Salida Jack 3.5mm de auriculares cogiendo un canal + un canal para salida al altavoz
Creo que lo mejor seria la primera opcion, para no perder sonidos si solo cojo un canal, que opinais???
Prueba del audio:
CONFIGURACION DE LOS CONTROLES
Para los controles vamos a usar los pines libres que nos quedan del GPIO.
En la Raspberry Pi 2 disponemos de 15 pines libres, ampliables a 19 desactivando ciertas opciones desde “raspi-config”.
En la siguiente imagen podemos ver los pines ocupados, algunos por la PiTFT (si no vamos a usar este tipo de pantalla tendremos mas pines libres), y los pines libres:
***A pesar que sale el GPIO 18 libre, las pantallas de Adafruit utilizan ese pin para algo del backlighting, asi que si lo necesitais por narices me preguntais porque por poder se puede usar, pero hay que hacer una pequeña modificacion en el pcb de la pantalla....yo he preferido no usarlo XDD
Para usar los pines del puerto GPIO como controles vamos a instalar “Adafruit Retrogame”.
INSTALACION Y CONFIGURACIÓN DE RETROGAME:
1. Descargamos e instalamos Adafruit Retrogame de github.
Código:
git clone git://github.com/adafruit/Adafruit-Retrogame
2. Editamos el archivo retrogame.c del directorio Adafruit-Retrogame
Código:
cd Adafruit-Retrogame
Código:
sudo nano retrogame.c
3. Localizamos la línea donde pone ioStandard[] y editamos añadiendo los botones que necesitemos asociando letras del teclado a los pines del puerto GPIO.
Importante editamos el ioStandard y NO el ioTFT a pesar de que luego vayamos a usar una pantala PiTFT.
Yo necesito 4 botones para la cruceta, select, start, A, B, X, Y, L y R.
OJO!! No podemos usar pines reservados, cogemos los que están libres.
Mi retrogame.c queda así: (UN APUNTE IMPORTANTE, que el boton A sea justo la letra Z del teclado, que le boton L sea la letra Q del teclado, etc, etc, NO ES CASUAL, en los emuladores estan ya configuradas esas letras del teclado para el control, si cogeis otras, luego tendreis que editar el control del retroarch o el emu que useis...)
Código:
ioStandard[] = {
// This pin/key table is used when the PiTFT isn't found
// (using HDMI or composite instead), as with our original
// retro gaming guide.
// Input Output (from /usr/include/linux/input.h)
{ 4, KEY_LEFT }, // Joystick (4 pins)
{ 17, KEY_RIGHT },
{ 22, KEY_UP },
{ 23, KEY_DOWN },
{ 27, KEY_Z }, // A/Fire/jump/primary
{ 5, KEY_X }, // B/Bomb/secondary
{ 6, KEY_ESC }, // Select button
{ 12, KEY_ENTER }, // Start button
{ 13, KEY_S }, // X button
{ 19, KEY_A }, // Y button
{ 26, KEY_Q }, //L shoulder
{ 16, KEY_W }, //R shoulder
// For credit/start/etc., use USB keyboard or add more buttons.
{ -1, -1 } }; // END OF LIST, DO NOT CHANGE
4. Salimos con ctrl+x y guardamos los cambios hechos, ahora solo falta compilar el ejecutable:
5. Para que el programa se ejecute siempre que reiniciemos la RPi2 vamos a añadirlo al arranque.
Código:
sudo mv retrogame /usr/local/
Código:
sudo nano /etc/rc.local
Antes de la línea final 'exit 0', añadimos esta línea extra:
Código:
/usr/local/retrogame &
Guardamos y salimos.
6. En las últimas versiones de Retropie hay que añadir una regla para que funcione:
Código:
sudo nano /etc/udev/rules.d/10-retrogame.rules
Y añadimos la siguiente línea
Código:
SUBSYSTEM=="input", ATTRS{name}=="retrogame", ENV{ID_INPUT_KEYBOARD}="1"
Ya solo quedaría reiniciar
Para comprobar que funciona, tendríamos conectar los botones al GPIO. Todos los botones tienen 2 contactos, uno que va al GND (comun para todos los botones) y luego el otro contacto que va al pin corespondiente del GPIO.
He probado con un boton a ver si iba el asunto, es tarde y pasaba de ponerme a conectar 12 botones XDDDD
Os he grabado un cutrevideo
INSTALACION Y CONFIGRACION DE LA PANTALLA PiTFT
***No se si tiene algo que ver, pero ayer haciendo pruebas, si instalaba primero la pantalla y luego los controles...los controles no iban, no se si es que estaba haciendo mal o tiene algo que ver (aunque yo diria que no influye para nada). Igual el orden en que carga los programas necesarios en el arranque...no sabria el porque.
Para instalar la PiTFT plus 3.5" hay que seguir una serie de pasos, a mi es lo que me ha funcionado sin problemas.....no se si habra otro metodo, pero a mi es con el que va perfecto.
1. Lo primero que vamos a hacer es ejecutar el raspi-config para modificar unos parametros, lo ejecutamos:
Código:
sudo raspi-config
Nos aparece un menu y ahi debemos activar varias cosas:
- Expand filesystem (en la nueva version de retropie v3.7 se realiza automaticamente en el primer arranque)
- Desactivamos el "overscan"
- Ponemos en "Enable" la opcón "device tree"
- Ponemos en "Enable" la opcón "SPI" y cargamos el SPI kernel module por defecto (default)
- Forzamos el audio para que salga por el jack de 3.5mm (esto lo hacemos porque vamos a sacar el sonido de ahi)
2. Instalamos los drivers necesarios para la PiTFT
Código:
sudo apt-get -y --force-yes install raspberrypi-bootloader
3. Una vez que acaba, vamos a descargar y compilar el programa FBCP necesario para mandar la imagen que sale por el HDMI a la PiTFT a traves del puerto SPI:
4. Una vez compilado, vamos a hacer como con los controles, hacer que el ejecutable se ejecute en cada arranque:
Código:
sudo mv fbcp /usr/local/
Código:
sudo nano /etc/rc.local
Antes de la línea final 'exit 0', y despues de la linea "/usr/local/retrogame &" añadimos esta línea extra:
Código:
/usr/local/fbcp &
Guardamos y salimos.
5. Ahora ya solo nos queda editar y añadir unas lineas en el archivo /boot/config.txt
Simplemente añadimos estas lineas al final del txt:
Código:
[pi1]
device_tree=bcm2708-rpi-b-plus.dtb
[pi2]
device_tree=bcm2709-rpi-2-b.dtb
[all]
dtparam=spi=on
dtparam=i2c1=on
dtparam=i2c_arm=on
dtoverlay=pitft35r,rotate=90,speed=80000000,fps=60
hdmi_force_hotplug=1
hdmi_cvt=480 320 60 1 0 0 0
hdmi_group=2
hdmi_mode=87
Comentar que yo he hecho un pequeño overclock a la RPi2, simplemente en el mismo /boot/config.txt he añadido las siguientes lineas. IMPORTANTE, para el buen funcionamiento del FBCP el parametro core_freq=250 no debe superar ese valor (igual hasta 300 podemos llegar...pero no más).
Código:
arm_freq=1000
core_freq=250
sdram_freq=500
over_voltage=2
6. Ya solo quedaría reiniciar
Con esto tendriamos la pantalla instalada y configurada!!!!
PREPARACION DE LA CARCASA
A partir de este punto, no voy a explicar mucho, simplemente voy a poner varias imagenes del proceso. Cualquier duda, ya sabeis
+++++++++++++CONTINUARÁ+++++++++++++++++++++
Marcadores