Some links in this post may be affiliate links. I may get paid if you buy something or take an action after clicking one of these.
Welcome to the first of a series of posts about bulding a handheld game console, the #DIYConsole!
I still don’t know exactly where this project will go. Many decision will be made along the way, but what really matters is to learn as much as possible from this experience (as Buddha said, “happiness is a journey, not a destination”). I hope you will join me in this journey!
Are you still here with me? Good!
So, we want to build a game console. What features should it have? This is what I’d like to achieve:
- It must be battery powered and rechargeable via USB
- Fast graphics with a good screen resolution: many Arduino-based projects I’ve seen use very low resolution or monochromatic screen to run games at decent speed. I don’t want to make compromises!
- Sound FX / Music: obviously the console must be able to reproduce sound effect and music (I love chiptune!)
- It must be able to load games from SD cards
- Multiplayer support!
What we need (for now) to build the console
Some time ago I bought a couple of product from Adafruit, with the idea of using them for another project (an irrigation system controller), but luckily they proved to be perfect for this project too:
- Adafruit Huzzah32 ESP32 Feather board: a nice little board with a lot of processing power and everything we could need for this projects: Wi-Fi, Bluetooth, DAC for sound generation and LiPo battery charger circuit.
- 3.5″ TFT Touchscreen Featherwing: a 320×480 pixels resistive touchscreen with built in microSD card socket.
photos taken from Adafruit website
We may need in future:
- A microSD card: you must format it using FAT32 file system.
- A breadboard and some jumper wires: can be useful for testing.
- A LiPo battery: Adafruit sells batteries that have the right JST connector used in their boards (an example). For now I will use USB power.
Some reflections on the project
Despite being a good starting point for the console, these components alone are not sufficient to meet the requirements we have set. For example, we have the necessary hardware to generate sounds, but we have no way of reproducing them. We’ll talk about it more in depth when we start playing with the DAC.
Adafruit, if you are reading me, make a version of this screen with an integrated speaker! 🙂
Speaking of player interaction, for now it will only happen through the touchscreen. As this touchscreen is not multi-touch, we have the limit of detecting just one press at a time. For many type of game this is a big limit, so the idea is to add in the future an analog joystick and some push buttons.
Building the console
Do you have all the components? Well, let’s proceed with the assembly! Take the board and the screen and fit them together. Done, the console is ready! It’s pretty easy, right?
If you have also bought a battery, you can connect it to the JST connector on the Feather board.
In the next post…
In the next post things starts to get serious! We will begin to write the console graphics library, we will learn to initialize the screen hardware and lay the foundation to draw some pixels on screen.
For suggestions, advice, or new ideas, feel free to comment below or follow me on Twitter. See you soon!