Skip to the content
PCBKitNew board
2 layers125 × 46 mmPocket sprite, the printed circuit board in 3D

A custom ESP32-S3 handheld game console with a joystick, action button, TFT display, buzzer, battery power, custom PCB, and built-in mini games.

Size
125 × 46 mm
Copper layers
2
Thickness
1.6 mm
Parts
18
Nets
20
Pads
74
Tracks, vias
131, 52
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
20 May 2026
Updated
24 May 2026

Overview

Pocket sprite is an open-source printed circuit board by Batterhead221, from the Batterhead221/pocket_sprite repository on GitHub. It is a 2-layer board of 125 × 46 mm with 18 parts on 20 nets, routed with 131 tracks and 52 vias.

It is built around the ESP32-S3, AO3400A and CMT-4023S-SMT-TR, with the DS04-254-2-01BK-SMT among its other parts. Its parts include 5 resistors, 3 diodes, 2 ICs, 2 switches and 1 capacitor. It belongs with the keyboards and input and power boards and the ESP32 boards of this library.

Main components

4

README

README.md

POCKET_SPRITE

POCKET_SPRITE top 3D board render

POCKET_SPRITE bottom 3D board render

A custom ESP32-S3 handheld game console with joystick input, an action button, ST7735 color TFT display, buzzer audio, battery power, custom PCB artwork, and multiple built-in mini games.

POCKET_SPRITE is a compact original hardware project built around the Seeed Studio XIAO ESP32-S3 and a 1.8-inch ST7735 SPI TFT display. The board combines custom electronics, embedded firmware, pixel graphics, playful silkscreen art, and portable battery-powered hardware into a small handheld game device.

Project Status

In progress. Breadboard input/display testing completed before the PCB version. Current hardware direction uses the XIAO ESP32-S3, joystick, 1.8-inch SPI TFT, A button, TFT backlight control, buzzer output, battery input through the XIAO BAT pads, and a switched 3.3V rail for game hardware.

Features

  • Seeed Studio XIAO ESP32-S3
  • 1.8-inch ST7735 SPI TFT display
  • Joystick input
  • One action button
  • TFT backlight control
  • Buzzer output
  • Battery input through the XIAO battery pads
  • Switched 3.3V rail for game hardware
  • Custom PCB outline
  • Custom silkscreen artwork
  • LovyanGFX display driver
  • Multiple built-in games and modes

Games / Modes

Current firmware includes:

  • Adventure: small character-based adventure game
  • Pocket Pet: virtual pet room with movement, jumping, ball pushing, and ball kicking
  • Dress Up: character creator with selectable gender, hairstyles, colors, outfits, shoes, and a small playable character
  • BM Tron: light-cycle style trail game
  • Snake: classic snake mini game

Hardware

FunctionPart / Notes
MCUSeeed Studio XIAO ESP32-S3
Display1.8-inch ST7735 SPI TFT
Display driverLovyanGFX
InputJoystick + one A button
AudioBuzzer driven from GPIO
PowerBattery connected to XIAO BAT pads
Switched railXIAO_3V3 → switch → +3V3_SW
Board rolePortable handheld game/demo board

Pin Map

XIAO PinNetFunction
D0JOY_SWJoystick press
D1JOY_XJoystick X analog
D2JOY_YJoystick Y analog
D3A_JUMPA / jump button
D4CSTFT chip select
D5DCTFT data/command
D6RSTTFT reset
D7B-LITETFT backlight
D8SCKTFT SPI clock
D9CHIRPBuzzer drive
D10MOSITFT SPI MOSI
3V3XIAO_3V3Regulated 3.3V from XIAO
GNDGNDGround
BAT+XIAO_BAT+Battery positive
BAT-XIAO_BAT-Battery negative

Joystick Calibration

Breadboard joystick values measured during testing:

Axis / DirectionValue / Behavior
X centerabout 1970
Y centerabout 2020
Deadzoneabout 450
UPX low
DOWNX high
LEFTY high
RIGHTY low

Firmware should use calibration/deadzone handling instead of assuming perfect center values.

Display Interface

The display is a 1.8-inch ST7735 SPI TFT.

text
TFT CS    → D4
TFT DC    → D5
TFT RESET → D6
TFT BL    → D7 / B-LITE
TFT SCK   → D8
TFT MOSI  → D10

Controls

text
Joystick SW → D0
Joystick X  → D1
Joystick Y  → D2
A button    → D3

The joystick direction mapping from breadboard testing:

text
UP    → X low
DOWN  → X high
LEFT  → Y high
RIGHT → Y low

Audio Output

The buzzer output is labeled CHIRP and is driven from D9.

text
D9 / CHIRP → buzzer drive

If the buzzer current is above the safe GPIO drive range, use a transistor or MOSFET driver instead of driving the buzzer directly from the XIAO GPIO.

Power Design

The battery connects directly to the XIAO battery pads. The XIAO provides the regulated 3.3V rail used by the game hardware.

text
Battery → XIAO BAT pads
XIAO_3V3 → switch → +3V3_SW
+3V3_SW → joystick / display / buzzer support hardware

Battery support should follow the Seeed Studio XIAO ESP32-S3 battery/BAT pad guidance for a 1S LiPo setup.

Firmware Direction

Useful firmware modules:

  • Joystick calibration
  • Direction/deadzone handling
  • A button input
  • LovyanGFX display setup
  • ST7735 display drawing helpers
  • Sprite drawing and animation loop
  • Game state/menu system
  • Buzzer tone/beep helper
  • Backlight control
  • Battery-aware sleep or low-power behavior later

Bring-Up Checklist

  1. Confirm XIAO ESP32-S3 orientation and soldering.
  2. Verify XIAO_3V3 and +3V3_SW behavior.
  3. Test joystick X/Y ADC values.
  4. Test joystick switch.
  5. Test A button.
  6. Test TFT display init over SPI.
  7. Test TFT CS/DC/RESET behavior.
  8. Test TFT backlight control on B-LITE.
  9. Test buzzer output on CHIRP.
  10. Run joystick-controlled movement demo.
  11. Run each game mode.
  12. Add battery testing only after USB-powered bring-up is stable.

Design Notes

  • Keep TFT SPI traces clean and reasonably short.
  • Keep joystick analog lines away from buzzer switching where practical.
  • Leave room for finger access around the joystick and A button.
  • Keep silkscreen labels readable around controls.
  • Treat joystick calibration as firmware data, not fixed ideal values.
  • Keep the board small enough to feel handheld, not like a dinner plate with pixels.

Repository Output Images

Expected image paths for GitHub README rendering:

text
Outputs/
  IMG/
    3D-T.png
    3D-B.png
    SCHEMATIC.png
    L1-SIG.png
    L2-GND.png

Safety / Design Note

POCKET_SPRITE is a low-voltage handheld electronics project. Verify battery polarity, switched power behavior, buzzer drive current, and display wiring before portable use.

Designed & Engineered by Brandon Shelly

Parts

18
QtyValueFootprintReferences
31KRESISTOR:R_0603_1608MetricR2, R3, R5
2LED_0603DIODE:D_0603_1608Metric_Pad1.05x0.95mm_HandSolderD1, D3
11.8_TFT_LCD_Display_ModuleDISPLAY:SPI_DISPLAYU1
1100KRESISTOR:R_0603_1608MetricR4
1100nFCAPS:C_0603_1608MetricC1
110KRESISTOR:R_0603_1608MetricR1
1AO3400ASOT:TSOT-23Q1
1BAT_PADTestPoint:TestPoint_Pad_1.0x1.0mmPAD1
1BUTTONBUTTON_SWITCH:Push_Button_W12mmSW3
1CMT-4023S-SMT-TRBUZZER:CUI_CMT-4023S-SMT-TRBZZ1
1DS04-254-2-01BK-SMTBUTTON_SWITCH:SW_DIP_SPSTx01_Slide_Copal_CHS-01A_W5.08mm_P1.27mm_JPinSW1
1D_SchottkyDIODE:D_SMA_HandsolderingD2
1ESP32-S3MODULE:XIAO-ESP32_THROUGH_HOLE_PINSU2
1JOYSTICKJOYSTICK:XDCR_COM-09032_MODEDJOY1
1Screw_Terminal_01x02JST_PH:JST_PH_B2B-PH-SM4-TB_1x02-1MP_P2.00mm_VerticalJ1

Questions

How big is the Pocket sprite PCB?

It measures 125 × 46 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Pocket sprite use?

18 parts, built around the ESP32-S3, AO3400A, CMT-4023S-SMT-TR and DS04-254-2-01BK-SMT. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Pocket sprite KiCad files?

From the Batterhead221/pocket_sprite repository on GitHub, at the commit this page was made from: the board is ECAD/pocket_sprite.kicad_pcb and its schematic ECAD/pocket_sprite.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pocket sprite design in my own project?

Its repository states no licence, so its author keeps all rights: ask Batterhead221 before reusing the design.

Similar boards

  • 4 layers39.3 × 63.8 mmEMERSON'S HANDHELD GAME, the printed circuit board in 3D

    EMERSON'S HANDHELD GAME

    Batterhead221/game_girl

    game_girl is a custom ESP32-S3 handheld mini-arcade built around a monochrome OLED display, rotary encoder controls, button input, buzzer audio, and battery support.

    25 parts
  • 2 layers45.5 × 41.3 mmÑeque, the printed circuit board in 3D

    Ñeque

    Alexandra182/agouti-PCB

    Agouti (ñeque) PCB

    9 parts4GPL-3.0
  • 4 layers177 × 140 mmX200s CM5-motherboard, the printed circuit board in 3D

    X200s CM5-motherboard

    el-puerro/die-aerzte

    aftermarket motherboard for the ThinkPad x200s

    54 parts
  • 4 layers107.5 × 60 mmBle module, the printed circuit board in 3D

    Ble module

    jkapala/bleDemoPcb

    This repo is for the BLE Demo project by J. Kapala.

    207 parts
  • 4 layers203.8 × 115.3 mmPy dash pcb 7, the printed circuit board in 3D

    Py dash pcb 7

    JungleGim/PyDash_PCB

    The circuit board portion for PyDash

    120 parts
  • 2 layers200 × 100 mmGameboy, the printed circuit board in 3D

    Gameboy

    Nalydmerc/gameboy

    134 parts
  • 2 layers168.9 × 123.3 mmOEM ECU, the printed circuit board in 3D

    OEM ECU

    aeonSolutions/AeonLabs-AI-Volvo-MKII-Open-Hardware

    Volvo MKII Open Hardware

    296 parts161CC0-1.0