One Custom PCB, Two Faces: Click-Wheel Music Player and GBA Emulator on ESP32-S3

User Avatar Aswinth Raj
Author
Share
Custom ESP32-S3 Handheld With Swiveling Dual-Face Screen

Most ESP32 handhelds pick one job. Reddit maker leetcodedemon built both: a click-wheel music player on one face and a Game Boy Advance emulator on the other, sharing one custom 4-layer PCB and a screen that physically swivels. Hall sensors tell the firmware which side is up. The build is still a prototype, but the demo video and the ~176 upvotes on r/esp32 show how far a careful board layout can go.

One 50 x 70 mm board, two modes

The board is JLCPCB-assembled around an ESP32-S3 with 16 MB flash and 8 MB PSRAM. A 240x320 LCD sits in the swivel half. On the music face, six copper pads on the PCB itself form a capacitive click wheel read by the S3 touch pins. Audio goes out through a PCM5102A DAC that has its own regulator for cleaner headphone drive. Songs transfer to the microSD card over Wi-Fi, and the pack is a 2000 mAh cell with USB-C charging.

Flip the screen and the same SPI lines (only six wires through the swivel) feed the GBA side. Buttons live on the back of the main PCB and are read through a TCA9555 I2C expander, so they do not have to travel through the hinge. Emulation uses gpSP with Ashkan Shirian's Xtensa dynarec. Pokemon Emerald holds about 56-62 fps; heavier titles such as Golden Sun land around 35-50. Game audio is still a work in progress. Firmware is built on open-source libraries and is planned for a GPL release without ROMs or BIOS.

Our take

The Hall-sensor face detect is the neat systems detail: the same MCU, LCD and power rail serve two completely different UIs without a mode switch in software alone. Keeping GBA pixels 1:1 at native 240x160 on a 240-wide panel also saves SPI bandwidth and keeps frame times even. If you want a simpler ESP32 music build before tackling a dual-mode PCB, our DIY ESP32 audio player covers SD playback and headphone drive on a single board.

Image credit: leetcodedemon (Reddit), cropped and resized.

About the author: Aswinth Raj is an electronics engineer and the editor of CircuitDigest, where he has published more than 150 hands-on projects and tutorials across Arduino, PIC, ESP32, Raspberry Pi and EV battery systems. He selects the stories on this page for what engineers and makers can actually learn or build from. Connect on LinkedIn

Add a comment

No account needed. Your comment appears once a moderator has reviewed it.

Never shown publicly.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.