Skip to the content
2 layers105 × 98.1 mmLimbo main, the printed circuit board in 3D

Limbo ESP32-S3 single-PCB and two-PCB prototype designs

Size
105 × 98.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
59
Nets
41
Pads
246
Tracks, vias
442, 50
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
18 Sep 2026
Updated
19 Sep 2026

Overview

Limbo main is an open-source printed circuit board by madmecodes, from the madmecodes/pcb-limbo-test repository on GitHub. It is a 2-layer board of 105 × 98.1 mm with 59 parts on 41 nets, routed with 442 tracks and 50 vias.

It is built around the 74AHCT1G125SE, TPS61022RWUR and BQ24074RGTR, with the DW01A, USBLC6-2SC6 and MF-MSMF200-2 among its other parts. Its parts include 17 capacitors, 14 resistors, 6 ICs, 3 diodes and 1 transistor. It belongs with the ESP32 boards of this library.

Main components

8

README

single-pcb/README.md

Limbo single controller PCB — Rev 2.0

This is the single-board Limbo controller requested for the compact enclosure. It sockets the existing OceanLabz ESP32-S3 DevKit N16R8 and MAX98357A breakout, and provides wired connectors for the OLED, two I2S microphones and speaker. There is no second face PCB.

ItemResult
Board size105.0 × 98.1 mm
Construction2-layer, 1.6 mm nominal FR-4
KiCad DRC0 violations
Connectivity0 unconnected items
Revisionv2.0, 2026-09-19

The design is electrically complete in KiCad, but remains a prototype release, not a production-approved battery product. Measure the exact OceanLabz DevKit, connectors, battery, speaker and enclosure before ordering. See ECO-v2.md for the circuit, parts, power budget and release holds.

What the one PCB contains

  • 16-pin USB-C power input with 5.1 kΩ CC resistors, PTC fuse, reverse-current Schottky diode, TVS and CC-line ESD protection.
  • BQ24074 single-cell Li-ion/LiPo charger with dynamic power path.
  • DW01A + FS8205A cell protection.
  • TPS61022 battery-to-5 V boost converter controlled by one latching master switch.
  • Socketed ESP32-S3 DevKit and MAX98357A amplifier breakout.
  • Two shared-bus I2S microphone connectors, strapped left and right.
  • Remote OLED and speaker connectors.
  • One buffered WS2812B-Mini addressable RGB status LED.

The master switch disables the boost converter, cutting power to the ESP32, amplifier, OLED, microphones and RGB LED. The charger and battery-protection circuit remain connected so the battery can charge while the product is off.

External connectors

ConnectorPin order
BATT1 BAT+, 2 cell negative
OLED1 GND, 2 3V3, 3 SCL, 4 SDA
MIC_L1 L/R=GND, 2 WS, 3 SCK, 4 SD, 5 3V3_MIC, 6 GND
MIC_R1 L/R=3V3_MIC, 2 WS, 3 SCK, 4 SD, 5 3V3_MIC, 6 GND
AMP1 LRC, 2 BCK, 3 DIN, 4 GAIN open, 5 SD, 6 GND, 7 5V
AOUT1 SPK+, 2 SPK− from amplifier breakout
SPK1 SPK+, 2 SPK− to enclosure speaker

Use short twisted wires for SPK+/SPK−. Keep microphone wiring away from the boost inductor and speaker wiring. The OLED and both microphones are physically mounted in the enclosure, not directly on the PCB.

ESP32 pin map

FunctionGPIO
Microphone BCLK / WS / shared SD4 / 5 / 6
Amplifier DIN / BCLK / LRC / shutdown7 / 15 / 16 / 17
OLED SDA / SCL8 / 9
RGB LED data18

GPIO19 and GPIO20 remain unused for the DevKit's native USB interface.

Fabrication package

limbo-main-v2.0-fab.zip contains copper, solder mask, silkscreen, board outline and Excellon drill files. Suggested prototype order: two layers, 1.6 mm FR-4, 1 oz copper, HASL or ENIG, green solder mask.

Do not place a production quantity order until every item in the release hold section of ECO-v2.md is closed.

Rebuild and verify

Run from this directory with KiCad 10, OpenJDK 21 and Freerouting 2.1.0:

sh
KIPY=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3
JAVA21=/opt/homebrew/opt/openjdk@21/bin/java

"$KIPY" gen.py
FREEROUTING__GUI__ENABLED=false \
FREEROUTING__USAGE_AND_DIAGNOSTIC_DATA__DISABLE_ANALYTICS=true \
"$JAVA21" -jar /tmp/freerouting-2.1.0.jar \
  --router.stop_pass_no=40 --router.optimizer.enabled=false \
  -de limbo-main.dsn -do limbo-main-v2-final.ses -mt 1
"$KIPY" apply_ses.py limbo-main.kicad_pcb limbo-main-v2-final.ses
kicad-cli pcb drc --exit-code-violations --severity-all \
  --format json --output drc-limbo-main.json limbo-main.kicad_pcb

gen.py is the authoritative connectivity source for this revision; limbo-main.kicad_pcb is the routed board. A formal KiCad schematic should be captured and reviewed before converting this prototype into a production design.

Parts

59
QtyValueFootprintReferences
4M2H1, H2, H3, H4
322uF BOOST OUTC_0805_2012MetricC10, C11, C12
11.10k ILIM 1.4AR_0603_1608MetricR4
11.78k ISET 500mAR_0603_1608MetricR3
1100R BAT senseR_0603_1608MetricR8
1100k AMP muteR_0603_1608MetricR13
1100k EN pulldownR_0603_1608MetricR12
1100k FBR_0603_1608MetricR11
1100n AHCTC_0603_1608MetricC20
1100n AMPC_0603_1608MetricC15
1100n BAT senseC_0603_1608MetricC7
1100n BOOST INC_0603_1608MetricC8
1100n LEDC_0603_1608MetricC19
1100n MIC-LC_0603_1608MetricC17
1100n MIC-RC_0603_1608MetricC18
110k TSR_0603_1608MetricR7
110uF AMPC_0805_2012MetricC14
110uF MICC_0805_2012MetricC16
11k VMR_0603_1608MetricR9
11uF INC_0805_2012MetricC4
122uF BOOST INC_0805_2012MetricC9
13.0k ITERM 50mAR_0603_1608MetricR5
1330R LED dataR_0603_1608MetricR14
14.7uF BATC_0805_2012MetricC6
14.7uF OUTC_0805_2012MetricC5
146.4k TMRR_0603_1608MetricR6
1470uF 10V LOW ESRCP_Radial_D10.0mm_P5.00mmC13
15.1k CC1R_0603_1608MetricR1
15.1k CC2R_0603_1608MetricR2
1600R@100MHzL_0805_2012Metric_Pad1.05x1.20mm_HandSolderFB1
174AHCT1G125SOT-23-5U6
1750k FBR_0603_1608MetricR10
1AMPAMP
1AOUTAOUT
1BQ24074RGTRVQFN-16-1EP_3x3mm_P0.5mm_EP1.68x1.68mm_ThermalViasU2
1C&K OS102011MA1QSW_Slide_SPDT_Angled_CK_OS102011MA1QSW1
1Coilcraft XAL7030-102MEB 1uHL_Coilcraft_XAL7030-102L1
1DW01ASOT-23-6U3
1ESP32-S3-DevKitC-1 N16R8U1
1FS8205A common-drainTSSOP-8_3x3mm_P0.65mmQ1
1JST-PH 1S LIPOJST_PH_B2B-PH-K_1x02_P2.00mm_VerticalBATT
1MF-MSMF200-2Fuse_1812_4532Metric_Pad1.30x3.40mm_HandSolderF1
1MIC_LMIC_L
1MIC_RMIC_R
1OLEDOLED
1SMBJ5.0AD_SMBD2
1SPKSPK
1SS34D_SMA_HandsolderingD1
1TPS61022RWURTexas_RWU0007A_VQFN-7_2x2mm_P0.5mmU5
1TP_CHGTP_CHG
1TP_PGTP_PG
1USB-C POWERUSB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ1
1USBLC6-2SC6SOT-23-6U4
1WS2812B-Mini 3535LED_WS2812B-Mini_PLCC4_3.5x3.5mmLED1

More from madmecodes/pcb-limbo-test

1
  • 2 layers53.3 × 45.7 mmLimbo face, the printed circuit board in 3D

    Limbo face

    madmecodes/pcb-limbo-test

    Limbo ESP32-S3 single-PCB and two-PCB prototype designs

    7 parts

Similar boards

  • 4 layers150 × 95 mmSkysweep32 rev c, the printed circuit board in 3D

    Skysweep32 rev c

    bobberdolle1/SkySweep32

    Open-source passive multi-band RF monitoring system | 855–925 MHz, 2.4 GHz, 5.8 GHz | Rev C first prototype

    103 parts33GPL-3.0
  • 2 layersOpenchess controller, the printed circuit board in 3D

    Openchess controller

    PaoloJN/openchess

    A chessboard that knows where the pieces are: 64 Hall sensors, 81 RGB LEDs, one ESP32, a printed case, and a BLE phone app. KiCad hardware, PlatformIO firmware, Expo app.

    67 parts1
  • 2 layers62 × 6 mmTableLight, the printed circuit board in 3D

    TableLight

    jonny190/TableLight

    A 3D-printable, battery-powered, USB-C rechargeable table lamp in the classic "Poldina" shape - honeycomb disc base, thin stem, down-firing cone shade with a white top - running WLED on an ESP32, with a capacitive touch…

    72 partsMIT
  • 6 layers313 × 259.5 mmOpen8-vga motherboard, the printed circuit board in 3D

    Open8-vga motherboard

    adham404/Open8-VGA

    An 8-bit computer from 74HC logic: microcoded CPU, VGA, PS/2, on-board editor and assembler. Play it in your browser.

    322 parts3MIT
  • 2 layers55 × 55 mmToytalk demo v4, the printed circuit board in 3D

    Toytalk demo v4

    tomonoriyamazaki/toytalker

    AI voice companion toy for kids

    45 parts
  • 2 layers89.5 × 26.5 mmGopro powerbank, the printed circuit board in 3D

    Gopro powerbank

    ritaru/gopro-powerbank

    A simple 5V/3A output single-18650 cell power bank circuit

    29 parts1
  • 4 layers77.2 × 55.1 mmNeon beat buzzer pcb, the printed circuit board in 3D

    Neon beat buzzer pcb

    neon-beat/neon-beat-buzzer-pcb

    Electronic design for the Neon Beat buzzer

    66 partsGPL-3.0
  • 2 layers83.1 × 34.9 mmTube, the printed circuit board in 3D

    Tube

    llextv/leTube

    LeTube is a DIY project to build a set of 10 LED tubes for stage lighting.

    34 parts

Questions

How big is the Limbo main PCB?

It measures 105 × 98.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Limbo main use?

59 parts, built around the 74AHCT1G125SE, TPS61022RWUR, BQ24074RGTR and DW01A. 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 Limbo main KiCad files?

From the madmecodes/pcb-limbo-test repository on GitHub, at the commit this page was made from: the board is single-pcb/limbo-main.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Limbo main design in my own project?

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