afterware
Resources
Saved
1/5
Hardware · build

An ESP32 handheld that plays NES off a microSD card

Original

Rithin K crammed a 320x240 TFT, a 2S lithium pack and a speaker into a two-piece 3D-printed shell around a plain ESP32 DevKit, then ran NES games at about 60 FPS.

Build sheet
Brain
ESP32 DevKit
Display
ST7789 320x240 TFT
Power
2S 7.4V 3800mAh Li-ion
Firmware
Anemoia-ESP32 (Arduino)
Can I build this?Intermediate · AI 4/5 · $40–70
Difficulty
Intermediate
AI-buildability
4/5

The firmware is an existing emulator that needs only pin configuration, which AI can help with, but the soldering, perfboard D-pad, power wiring and case assembly are hands-on.

Time
A weekend
Cost
$40–70
Tools
soldering iron3D printermultimeter
Starter prompt

Based on "An ESP32 handheld that plays NES off a microSD card" on Afterware: https://afterware.xyz/p/an-esp32-handheld-that-plays-nes-off-a-microsd-card

I want to build a handheld NES player on an ESP32 DevKit with a 2.4in ST7789 SPI TFT (320x240) and a microSD card module on a separate SPI bus. Start from the Anemoia-ESP32 emulator and help me set up TFT_eSPI for the ST7789 pins, a config.h for the buttons, SD and I2S audio, and a pause menu on Start+Select.

Estimates based on the original write-up. How AI-buildability is scored. Building with an AI assistant? Connect it to Afterware (free MCP server).

Story

The brain is an ordinary ESP32 DevKit, the kind found in beginner IoT kits. Rithin K ran the Anemoia-ESP32 NES emulator on it, with Wi-Fi and Bluetooth switched off and each of the two cores given its own job: one for emulation, one for audio and buttons. The result is a pocket console that loads ROMs from a microSD card and holds about 60 frames per second.

The case is FreeCAD-designed and printed in ABS as two halves. The orange front holds the ST7789 screen and buttons, and the black back holds a 7.4V 3800mAh 2S pack, a charger/protection board, a buck converter and the speaker. The D-pad is built on small perfboard pieces, and the other buttons are standard tactile switches wired to GPIO and ground with internal pull-ups. Before the ESP32 saw any power, the buck converter was trimmed with a multimeter to exactly 5.0V.

Battery life is listed at 2 to 5 hours, with about an hour to charge. The trick worth stealing is the power-first bench test: a 2S pack and a bare ESP32 can take each other out, so bring up the buck converter alone before anything else touches it.

Resources · 3
More like this
More like this