
Adafruit 3.2in TFT 320x240
ihmnelson/ESP32-Embedded-Console
Handheld game/macropad device, roughly halfway between a Stream Deck and a Game Boy. Personal learning project — KiCad hardware design, not yet fabbed.

Handheld game/macropad device, roughly halfway between a Stream Deck and a Game Boy. Personal learning project — KiCad hardware design, not yet fabbed.
Esp32build is an open-source printed circuit board by ihmnelson, from the ihmnelson/ESP32-Embedded-Console repository on GitHub. It is a 4-layer board of 100 × 100 mm with 57 parts on 79 nets, routed with 626 tracks and 157 vias.
It is built around the USBLC6-2SC6. Its parts include 20 resistors, 12 switches, 11 capacitors, 5 ICs and 4 connectors. It belongs with the ESP32 boards of this library.
Handheld game/macropad device, roughly halfway between a Stream Deck and a Game Boy. Personal learning project — KiCad hardware design, not yet fabbed.
Schematic-in-progress. Root sheet is wired, ERC is mostly clean, footprints are not yet fully assigned. Not ready for PCB layout. See esp32-board-design.md for the full design log — decisions, part numbers, GPIO budget, and open items, all dated and kept current. That file is the source of truth; this README is just an orientation.
| Area | Decision |
|---|---|
| MCU | ESP32-S3-WROOM-2-N32R16V (32MB flash, 16MB octal PSRAM, native USB, 33 GPIOs) |
| Power | USB-C only for v1 — no battery this rev. TPS62A02NDRL buck for the 3.3V rail |
| Display | Adafruit #1770, 2.8" 240×320 ILI9341, 8-bit i80 parallel, touch dropped |
| Storage | microSD, 4-bit SDMMC, Hirose DM3AT socket |
| Audio | MAX98357A I2S Class-D into an 8Ω speaker (Adafruit #3923) |
| Input | 10× Omron B3F-1000 tactile buttons on an MCP23017 I2C expander, interrupt-driven |
| Firmware target | ESP-IDF + LVGL + FATFS, aiming for retro-go compatibility |
Analog inputs (joysticks, volume pot) are deferred to a later revision — see the design doc for why.
esp32build.kicad_* — the main project (root sheet + hierarchy)core.kicad_sch, power.kicad_sch, storage.kicad_sch, user_in_out.kicad_sch, display_and_audio.kicad_sch — hierarchical sheetsdisplay/ — reference KiCad project for the Adafruit display breakout (footprint/symbol import source)datasheets/ — parts datasheets pulled in for reference (inductors so far)esp32-board-design.md — the actual design log: decisions, reasoning, GPIO map, BOM, open itemsCLAUDE_KICAD_SETUP.md — notes on an abandoned attempt to hook Claude Code into KiCad's IPC API directly; kept as a record, not an open tasklogo.drawio — logo sketchKiCad 10. No firmware yet — this repo is hardware-only for now.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | SW_Push | Button_Switch_THT:SW_PUSH_6mm | SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12 |
| 7 | 10k | Resistor_SMD:R_0603_1608Metric | R7, R10, R11, R12, R13, R14, R15 |
| 3 | 0.1u | Capacitor_SMD:C_0603_1608Metric | C6, C9, C11 |
| 3 | 10u | Capacitor_SMD:C_0603_1608Metric | C5, C8, C10 |
| 3 | LED | LED_SMD:LED_0201_0603Metric | D1, D2, D3 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R9, R17 |
| 2 | 33 | Resistor_SMD:R_0603_1608Metric | R2, R3 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric | R18, R19 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R1, R4 |
| 2 | SW_Push | Button_Switch_SMD:SW_SPST_B3U-1000P | SW1, SW2 |
| 1 | 1.0u | Inductor_SMD:L_Coilcraft_XAL4020-XXX | L1 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 100n | Capacitor_SMD:C_0603_1608Metric | C7 |
| 1 | 120p | Capacitor_SMD:C_0603_1608Metric | C3 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric | C4 |
| 1 | 2.2k | Resistor_SMD:R_0603_1608Metric | R16 |
| 1 | 22 | Resistor_SMD:R_0603_1608Metric | R8 |
| 1 | 22u | Capacitor_SMD:C_0603_1608Metric | C2 |
| 1 | 450k | Resistor_SMD:R_0603_1608Metric | R5 |
| 1 | 4u7 | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 634k | Resistor_SMD:R_0603_1608Metric | R20 |
| 1 | Conn_01x02 | Connector_Molex:Molex_PicoBlade_53047-0210_1x02_P1.25mm_Vertical | J3 |
| 1 | Conn_01x20 | Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_Vertical | J4 |
| 1 | ESP32-S3-WROOM-2 | RF_Module:ESP32-S3-WROOM-2 | U1 |
| 1 | MAX98357A | Package_DFN_QFN:TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mm | U6 |
| 1 | MCP23017x-x-ML | Package_DFN_QFN:QFN-28-1EP_6x6mm_P0.65mm_EP4.25x4.25mm | U4 |
| 1 | Micro_SD_Card_Det_Hirose_DM3AT | Connector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5 | J2 |
| 1 | Polyfuse | Fuse:Fuse_0603_1608Metric | F1 |
| 1 | TPS62A02NDRL | Package_TO_SOT_SMD:SOT-563 | U2 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U3 |
| 1 | USB_C_Receptacle_USB2.0_14P | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J1 |
It measures 100 × 100 mm and has 4 copper layers, 1.6 mm thick.
57 parts, built around the USBLC6-2SC6. 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.
From the ihmnelson/ESP32-Embedded-Console repository on GitHub, at the commit this page was made from: the board is esp32build.kicad_pcb and its schematic core.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask ihmnelson before reusing the design.

ihmnelson/ESP32-Embedded-Console
Handheld game/macropad device, roughly halfway between a Stream Deck and a Game Boy. Personal learning project — KiCad hardware design, not yet fabbed.



TalismanDesign/PocketMage_PDA
An E-Ink PDA device using the ESP32 S3.



shorepine/tulipcc
The Tulip Creative Computer and AMYboard - portable Python synthesizers


LeoDJ/FW-EC-DongleHiderPlus
Framework Expansion Card that includes a USB hub to hide a bare dongle inside and still have a USB-A port externally