Main Content

I wanted to experiment with a 64x64 rgb led panel. So I decided to make a portable battery-powered console, with at least one game on it. Then I realized that game must be Tetris. Then I realized I could make a pair of consoles for multi-player games. Then I realized the ESP32 has a fantastic ESPNow protocol with low latency, no wifi needed (or better, it creates its own wifi), which fit the purpose. Then I realized what’s a console without some proper squeaky buzzer sound?? Then I realized by using ALL the pins on the ESP32 I could have 2 buzzers, for polyphonic music and effects. Then I realized I could design a 3d-print a nice case for them, which would also allow to place some ergonomics controls.

The result is the nerdiest project I’ve done so far, I hope you can appreciate the attention to the tiniest useless detail :)


- portable (kinda. Already working on a shrunk version)
- wireless 2 player gaming (mimicking Tetris on the GameBoy)
- wireless OTA firmware update
- ergonomic 6-buttons controls
- 2-channel audio
- battery powered (gentle on battery, exceeds 4 hours of gameplay)
- implementing (almost) all Tetris guidelines

- 2x 64x64 P3 HUBT75 RGB panels (192x192mm). I’ve used the model from Waveshare, which kindly sponsored this project. Note these were my 4th and 5th rgb panels, I have multiple 32x32 and 64x64 panels, but these were by far the easiest to work with, starting from the dupont to 16 channel ribbon cable connector which was very handy for the arduino: found here
- 2x LED Plexiglass A4. You need to cut these to size: found here
- 2x ESP32 boards. I’ve used AZ-Delivery lolin32 lite, which unfortunately doesn’t have a 5v input pin, and I didn’t want to use a DC-DC convertor, so I ended up cutting a micro usb cable and using that to connect the esp to the battery pack. found here
- 2x AA battery holders. I have the ones with switches (you need to solder all the connections), whose door doesn’t close very well, so I’ve added some gap in the back plate to allow for this little bulge: found here
- 12x momentary push buttons. I have tried the little clicky ones, they were pleasantly clicky but hard to mount and to press. So I’ve reverted to these: found here
- assorted resistors (optional). This is really personal taste. Without resistor, the buzzers are pretty loud and over-distorted, so I preferred to put some resistors to limit the current. Which resistor to use depends on the volume you want to achieve. I kept adding resistors in parallel (didn’t have a proper assortment of resistors) until the volume was a good tradeoff: found here
- assorted dupont and/or electric cables (stereo speak cable is your friend)
- assorted 3A terminal joints: found here
- 8x AA batteries. I’ve used rechargeable ones, each being 1.25v approximately, bringing the total voltage to 5x approximately, perfect for the esp and the panel
- unless you want to CNC the case, or build it out of wood, you’ll need access to a 3d printer, with a 0.25mm nozzle for the grid (optional).
- optionally, M3 and M2.5 screws and possibly press-fit nuts for the case. Depending on your 3d printer tolerances, layer height, nozzle, temperature, and filament, simple friction may be enough with this design to keep everything in place.
- lots and lots of solder”

Link to article