Clon de ODROID-GO

El ODROID-GO es un gran invento de Hardkernel. Puede funcionar como una consola de juegos con muchos emuladores. Aunque el número de emuladores es pequeño en comparación con los que son compatibles con RetroPie o Recalbox instalados, descubrí que responde mucho más rápido y suave, además de consumir mucha menos energía. Poder guardar los juegos por defecto también es muy útil.

Puedes encontrar un video de introducción sobre mi ODROID-GO casero en: https://youtu.be/E3ZfBwI9Wt8.

Se puede ver una demostración completa de los pasos en: https://youtu.be/sP3x_Fm-htA

No he podido comprar el ODROID-GO a un precio razonable en Hong Kong, debido al alto coste de los envíos de los EE. UU., Por lo que decidí crear uno por mi cuenta. Está muy bien que Hardkernel haya compartido los esquemas de diseño y el firmware en github y lo hagan de código abierto, de modo que los creadores como yo podemos retarnos a nosotros mismos para fabricar nuestro propio diseño de ODROID-GO.

Al poder cargar diferentes firmwares, puedes usarlo para ejecutar códigos binarios diseñados para Arduino, códigos micropython y muchos otros tipos de software de terceros. Aunque este artículo te muestra los pasos para hacerlo, no todo el mundo puede desarrollar uno con éxito, ya que requieren ciertas habilidades para hacer soldaduras y retirarlas. También recomiendo a cualquier persona que desee tener un ODROID-GO que lo compre en Hardkernel, ya que el coste de fabricarlo (más todo el envío) puede ser similar o incluso superior al de comprarlo directamente a Hardkernel.

Tengo la intención de montarle una LCD TFT de 2.2" más pequeña en lugar de usar una de 2.4" que es la que viene con los originales. Tampoco necesito una salida de audio tan potente, la salida de los auriculares es lo suficientemente potente para mí, de modo que no necesito el circuito del amplificador. Simplemente conecte el GPIO 26 y la conexión a tierra del ESP32 al conector de los auriculares o mini/altavoz con un control de volumen por hardware. Esto es todo lo que necesito. Conservé el cabezal de extensión de 10 pines, aunque tengo que usar mi propio juego de botones silenciosos.

Está fabricado sobre un prototipo de PCB como estructura básica, sobre la que tallé una ventana rectangular para montar la LCD, de manera que quedara plana sobre la PCB en su parte delantera. Para la placa mcu, elegí la placa TTGO T8 ESP32 WRover. Esta placa tiene 4MB PsRam adicionales (RAm pseudo-estática) en comparación con la placa ESP VRoom que solo cuenta con 4MB de RAM flash pero no PsRam. El firmware GO-Play de ODROID-GO que controla toda la emulación de los juegos retro no puede funcionar con solo 4 MB de RAM Flash. El firmware GO-Play de ODROID-GO no se puede cargar en solo 4MB flash, así que actualicé la memoria RAM de 4MB montada a 16MB. Me cargué una placa usando una pistola de aire caliente para retirar la memoria RAM original de 4 MB soldada y accidentalmente reventé algunas resistencias que no logré encontrar. Tuve que pedir uno nueva y esta vez recurrí a una técnica más segura. Simplemente corte los pines de la RAM de 4MB, luego coloque la nueva RAM de 16MB en la parte superior y la soldé. Es mucho más sencillo de esta forma.

Por favor, sigue los pasos que se describen a continuación para fabricar uno si se te da bien soldar. Si las soldaduras no es lo tuyo, te recomiendo que compres el original.

Lista de componentes

La lista de componentes incluye:

  • TTGO T8 V1.1 ESP32 WRover 4Mbyte Flash + 4Mbyte PSRAM
  • Memoria flash serie de 16Mb Winbond W25Q128FVSIG SOP8 (para actualizar la ESP32 de 4Mb de ram a 16Mb)
  • Tarjeta TF de 16G con ranura para tarjeta SD
  • TFT LCD SPI il9341 de 2.2"
  • Batería LIPO 3.7V 1500MaH
  • Mini altavoz
  • Toma de auriculares de 3,5 mm con interruptor
  • 10 botones silenciosos
  • VR 10K para control de volumen
  • Cabezal de 10 pines para expansión
  • Cabezal de 5 pines y 9 pines para conectar los pines LCD TFT desde las ranuras IC
  • Mini interruptor deslizante como botón de encendido
  • Prototipo PCB de doble cara de 7cmx9cm
  • Placa Arglic de 7cm x 9cm para la contracubierta
  • Cuatro tornillos de 3mmx20mm para sujetar la cubierta posterior
  • Cable laminado (aislado) de 0.2mm o 0.3mm

La mayoría de todos estos componentes están disponibles en Amazon, AliExpress o TaoBao en China.

Configuración del hardware

Este proyecto utiliza un prototipo de PCB de doble cara de 7x9 cm para la estructura de la consola de juegos. Nos referiremos a esto como "la PCB". Los pasos de configuración incluyen:

  • Hacer un agujero en forma de cuadrado en la PCB para la LCD de 2.2"
  • Soldar los botones tal y como se muestra en el diseño a la parte frontal de la PCB
  • Retirar la memoria RAM de 4Mb soldada existente de la placa TTGO T8 ESP32-Wrover
  • Soldar una memoria RAM de 16MB (Winbond W25Q128FVSIG))
  • Montar la placa TTGO T8 ESP32-Wrover en la parte posterior de la PCB
  • Montar la pantalla LCD TFT de 2.2" en la parte posterior de la PCB
  • Suprimir los 9 pines de una toma ic para añadir los pines LCD de la TFT LCD
  • Suprimir los 5 pines de una toma ic para añadir los pines de la tarjeta SD de TFT
  • Usando cables laminados (aislados) de 0.2 o 0.3 mm, empezar con los trabajos de soldadura
  • Soldar todas las conexiones desde la pantalla LCD TFT a la placa ESP32 siguiendo el diagrama del circuito y el diseño de pin
  • Soldar todas las conexiones desde la ranura de la TARJETA SD a la placa ESP32 siguiendo el diagrama del circuito y el diseño de pin
  • Soldar un extremo de los botones D-PAD a los 3.3V (es decir, arriba/abajo/izquierda/derecha), y el otro extremo al pin GPIO derecho de la ESP32 siguiendo el diseño de pin
  • Soldar un extremo de los otros botones a GND, y el otro extremo al pin GPIO derecho de la ESP32 siguiendo el diseño de pin
  • Soldar la resistencia variable 10K, la toma de auriculares y el altavoz tal como se muestra en el diseño de pin
  • Soldar dos resistencias de 100K y una 0.1uF y conectarla a GPIO36 para medir el nivel de la batería
  • Soldar el cabezal de extensión de 10 pin a los pines del ESP32 conforme al diseño de pin
  • Soldar un cable a la batería y conectarlo a la entrada de la batería de la placa ESP32
  • Cubrir la parte posterior de la PCB con un panel acrílico y asegurarlo con tornillos

Grabar la tarjeta SD con el firmware y las ROMs

Sigue estos pasos:

  • Dirígete a https://wiki.odroid.com/odroid_go/make_sd_card
  • Sigue las instrucciones para descargar los archivos de la estructura básica de la tarjeta SD (sin las ROM de juegos), luego formatea una tarjeta flash de 16G o 32G como FAT y copia las carpetas y archivos de la estructura básica de la tarjeta SD descargados en el paso 2 al directorio raíz de la tarjeta SD
  • Opcionalmente, también puedes descargar y agregar otro software de terceros a la tarjeta SD siguiendo las instrucciones de https://goo.gl/vr4YdQ
  • Para las ROM de juegos, puedes buscar en los diferentes sitios de alojamiento de roms del juego buscando por el título del juego, el nombre de la consola del juego + rom. Por ejemplo, "pinball nes rom". Una vez descargado, asegúrate de descomprimirlo para disponer del archivo original, por ejemplo, pinball.nes en lugar de pinball.zip
  • Copia las Roms del juego en la carpeta roms de la tarjeta SD bajo la carpeta correcta de la consola del juego, por ejemplo, copia pinball.nes en e:\roms\nes
  • Al igual que en Retropie o Recalbox, los archivos png de los íconos de las ROM se almacenan en la carpeta downloaded_images dentro de cada carpeta de consola de juegos
  • Si está copiando roms de juegos de RetroPie o Recalbox en ODROID-GO, ten en cuenta que algunos de los nombres de las carpetas son diferentes, por ejemplo: en lugar de "atari2600", se utiliza "a26" y no permite los archivos .zip
  • Una vez que todas las ROM de juegos estén copiadas en la tarjeta SD, retira ésta de forma segura de tu ordenador (depende del sistema operativo que uses, windows, linux, mac)
  • Inserte la tarjeta SD en el ODROID-GO

Grabar la imagen de arranque en la Esp32

Los pasos a seguir para grabar la imagen de arranque son:

  • Asegúrate de que la tarjeta SD con todo el firmware y las roms de juegos que grabaste en el paso anterior esté insertada en el ODROID-GO
  • En tu estación de trabajo, dirígete a https://wiki.odroid.com/odroid_go/firmware_update
  • Sigue las instrucciones para descargar la herramienta de flash ESP32 y la imagen de arranque del Odroid-go. Las herramientas e instrucciones dependerán de si estás usando un ordenador con Windows, Linux u OSX
  • No es necesario borrar la memoría flash por completo al principio. Las correspondientes particiones de flash se borrarán cuando se cargue un archivo de firmware desde la tarjeta SD a la ESP32
  • Carga la imagen de arranque del ODROID-GO en la ram SP32 SPI de acuerdo con las instrucciones. Consulta los comandos de ejemplo y los resultados de pantalla que aparecen a continuación. Estos comandos y resultados de pantalla corresponden a la aplicación terminal de un Mac OSX:

# ...
# check the ESP32 SPI serial flash memory size
# ...
$ python3 -m esptool --port /dev/tty.SLAB_USBtoUART flash_id
esptool.py v2.5.0
Serial port /dev/tty.SLAB_USBtoUART
Connecting........__
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:03:50:40
Uploading stub...
Running stub...
Stub running...
Manufacturer: ef
Device: 4018
Detected flash size: 16MB
Hard resetting via RTS pin…
# ...
# burn the ODROID-GO-firmware into ESP 32 EEPROM
# ...
$ python3 -m esptool --chip esp32 --port /dev/cu.SLAB_USBtoUART --baud 921600 \
write_flash --flash_mode dio --flash_freq 40m --flash_size detect 0 \
ODROID-GO-firmware-20181001.img
esptool.py v2.5.0
Serial port /dev/cu.SLAB_USBtoUART
Connecting........_
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:03:50:40
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 16MB
Compressed 301920 bytes to 146523...
Wrote 301920 bytes (146523 compressed) at 0x00000000 in 2.3 seconds (effective 1039.5 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...

  • Una vez completado el proceso, la ESP32 se reiniciará y ejecutará el menú de arranque del ODROID-GO

Ejecuta juegos con Go-Play y los emuladores

Puedes seguir estos pasos para jugar a los diferentes juegos:

  • Después de arrancar, verás una lista de firmwares. Elige el Go-Play y lánzalo pulsando el botón A
  • El firmware de Go-Play se guardará en la memoria flash ESP32. Hay un total de cuatro particiones (0,1,2,3) a grabar. Para cada archivo, el espacio correspondiente (partición) de la memoria flash serie de 16M SPI se borrará en primer lugar y luego se escribirá. Llevará alrededor de un minuto grabar todas las particiones. Por suerte, no tendrás que hacer esto cada vez que juegues a un juego diferente. Mientras estés dentro del firmware de Go-Play, puede cargar y jugar a un juego en pocos segundos
  • Se inicias el menú principal de Go-Play verás una lista de emuladores de juegos para elegir. Usa el botón izquierdo y derecho para seleccionar el emulador que desees. por ejemplo, nep. En este menú principal, puedes presionar el botón de volumen para subir o bajar el volumen del audio. O mantener presionado el botón de inicio y presionar el botón arriba/abajo para ajustar el brillo de la pantalla LCD TFT, o presionar B para volver al juego anterior al que habías jugado
  • Una vez que selecciones un emulador, verás todas las salas de juegos ordenadas por orden alfabético. Usa el botón arriba/abajo para navegar a través de los juegos, izquierda/derecha para avanzar/retroceder de página. Presiona Select y Start para saltar a la letra anterior o siguiente de la lista de juegos que está ordenada por orden alfabético. Esto es muy útil ya que, al tener miles de juegos terminas cansándote de presionar tantas veces el botón abajo
  • Para iniciar un juego, presiona el botón "A" dos veces. O puedes presionar el botón "B" para volver al menú del emulador del juego y seleccionar un emulador de juegos diferente. Para salir de un juego y volver al menú principal, presiona el botón de menú. Mientras estás dentro del juego, puedes mantener presionado el botón de inicio al mismo tiempo que haces clic en el botón derecho para ajustar el escalado de la pantalla hacia arriba o hacia abajo. Verás cómo los gráficos se amplían o reducen un poco, en lugar de tener que mapear píxel a píxel el juego original. Para poner el ESP32 en modo de suspensión, mantén presionado el botón de menú durante 2 segundos
  • Para activar la ESP32, vuelve a pulsar el botón de menú. Para recuperarte de un juego bloqueado, apaga la alimentación (utilizando el interruptor deslizante). Luego mantén presionado el botón de menú antes de encender. Para volver al menú de firmware o para recuperarse de un firmware dañado, apágalo. Luego mantén presionado el botón B antes de encender. Puedes grabar una nueva imagen de arranque en la ESP 32 en cualquier momento sin presionar ningún botón especial. Sin embargo, si no logras hacerlo funcionar, apágalo de nuevo. Después, mantén presionado el botón de volumen antes de encenderlo. La pantalla se iluminará completamente. Luego podrás conectar la unidad esp 32 al puerto usb de tu ordenador para que se actualice con una nueva imagen de arranque

Las instrucciones sobre cómo navegar por el firmware go-play están disponibles en https://wiki.odroid.com/odroid_go/emulator/usage_go_play.Para comentarios, preguntas y sugerencias, visita el artículo original en https://goo.gl/yAbmbt.

Be the first to comment

Leave a Reply