Once upon a time, when I was browsing internet, I saw this nice ans simple game device based on ESP32. I searched a bit about it and did find out that it is quite popular and can be hacked/used with Arduino IDE. When I saw pricetag and shipping, I decide to make my own so I can try it and learn something new. Here, in logs, is my journey..
This is should be direct clone of Odroid Go (fully compatible) with some added features:
3.2" ILI9341 TFT LCD
ESP32 WROVER with PSRAM (16MB)
micro SD card
built-in charger based on MCP73831
integrated audio through PAM8304
integrated I2S audio through MAX98357 (early version was with PCM5102)
3.5 mm audio jack
2000 mAh Li-Po battery
USB to UART via CH340G
This game console can be programmed with examples from Odroid Go library or you can use this library to program your own games. This can also be used with Micropython.
Now, when I gathered all information which I need, I can design PCB. My goal was to make this better than original piece and I did read somewhere that original sound is quite bad, I decide that I will not use original sound chip and I will upgrade it to PCM5102 which is I2S chip and it was already supported by original FW of the Odroid Go (OG).
Here is schematic:
Routed board looks like this:
Because I had no SMD crystal at home, I used THT one. Speaker should be connected by wires directly to board.
When boards arrived, I soldered one board by hand with parts which I had. Because I choosed to use THT component and did not realized that I can not solder it from other side, I hade to solder it in standing position (can be seen on picture).
Firstly I could not make USB converter work, but after some debugging I found out that my RX line goes to RX line and not TX line and vice versa so I could not make it work. To repair this I decide to sacrifice 2 pcs of 470 ohm resistor and I cross these lines with wire. After that, I could programme ESP32 chip.
Next problem which I had was with the screen. I could see that there is some image, but I had no backlight. I measured voltages on LCD and those were fine. I also checked continuity on ground plane and that was also OK. When I was trying to find out where is the problem, I sometimes made it work for a second or two with my hands, which let me to conclusion that there will be really problem with ground somewhere. I looked at schematic where should be ground and bodged it with wire and this made it work. I could not regulate brightness, but I had backlight.
So I had working USB converter, ESP32, SD card, screen, charging circuit and last thing on the list was sound chip (because I had to order it). I solder it on the board, fire it up and all what I heard was ticking and buzzing noise and very very low sound comming from game. This was a big problem. I spent few hours by checking the Internet if I did something wrong but schematic was right. I also used osciloscope to look if there is right signal and when I selected I2S audio in FW of OG, I saw right signals at scope and none when I choosed internal sound chip in FW. After few days of trying to solve this I did find out that there are wrongly placed capacitors at the output signal. I desolder them and turned them by 90° and bodged them to resistors and I had working sound. At that point I was really relieved.
Here is final result:
My friend @Lubos Moravec made for me small intro video which you can see here:
For those, who don´t know what Odroid Go is, here is picture:
You can find specification here. Basically it is small handheld device with emulator and you can play Gameboy, Nes and other game types on it. It also have support for Arduino and MicroPython, so you can make your own games in either one of those platforms. You can also buy external keyboard for it and you can use it for emulation of Commodore 64, ZX Spectrum, and MSX games.
When I found about this game kit I wanted to test it straight away. At first I had no luck to find some schematic, but I visited Odroid Go wiki page and I find this schematic. Now I could move forward.
For testing I used 2.8" Ili9341 screen from Aliexpress and connected it to the ESP32 module which I had already. I checked instructions on how to upload basic firmware and nothing happened. After some while of searching and reading through the Internet I found out that OG uses 16 MB module, which is not common on available modules. The second bad news was, that these modules are quite hard to find in small quantities and you don´t want to buy big stock of it, especially if you don´t know if your project will work.
Luckily I did find some eshop in Slovakia, where they sell them in small quantities and for reasonable price. I ordered few of them and because I´m mostly driven by PCB design, I started to work on first version.