

Esp32audio
ESP32 Audio Player main board (KiCad, XIAO ESP32-S3)
- Size
- 51 × 30 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 45
- Nets
- 42
- Pads
- 162
- Tracks, vias
- 285, 60
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 20 Jun 2026
- Updated
- 20 Jun 2026
Overview
Esp32audio is an open-source printed circuit board by ppisljar, from the ppisljar/freeesp32_audioplayer repository on GitHub. It is a 2-layer board of 51 × 30 mm with 45 parts on 42 nets, routed with 285 tracks and 60 vias.
It is built around the CS4344, PJ-320A and SS14. Its parts include 18 capacitors, 11 resistors, 5 connectors, 4 ICs and 1 diode. It belongs with the audio and music boards and the ESP32 boards of this library.
Main components
3README
README.mdfreeesp32_audioplayer
Open-source ESP32 audio playback board designed primarily as the hardware
platform for freeesp32_ave —
audio-visual entrainment (AVE) firmware.
This repository contains the full KiCad project: schematic, PCB layout, design rules, 3D models, datasheets, and helper scripts.
Board renders
| Top | Bottom |
|---|---|
![]() | ![]() |
KiCad 3D renders. Top: TRRS headphone jack, USB-C, microSD slot, XIAO ESP32-S3 module, LED/expansion pin headers. Bottom: speaker amplifier (APA2068), bulk capacitors, level-shifting resistors.
Board features
- MCU module: Seeed Studio XIAO ESP32-S3 (Wi-Fi + BLE)
- Headphone output: Cirrus Logic CS4344 stereo I²S DAC
- Speaker output: APA2068 Class-D power amplifier
- Storage: microSD card slot for offline audio and timeline files
- LED outputs: configurable headers — works with NeoPixel (WS2812), DotStar (APA102), or direct PWM strips (the firmware picks the backend)
Power
The board can be powered any of three ways. The 5 V rail feeds the speaker amplifier (APA2068), and the XIAO's onboard LDO derives the 3.3 V rail that feeds the DAC (CS4344) and the MCU itself.
| Source | Connector | Voltage | Notes |
|---|---|---|---|
| USB-C | XIAO ESP32-S3 onboard | 5 V (USB VBUS) | Also used for flashing firmware and the serial console. The default during development. |
| External 5 V | J4 — JST PH 2-pin (V+_EXT) | 5 V regulated | For powering from a bench supply, wall adapter, or upstream USB-PD trigger. |
| Li-ion battery | J5 — JST PH 2-pin (BATTERY) | 3.0 – 4.2 V | Connects to the XIAO's BAT+ pin. The XIAO's built-in charger manages the cell when USB is also plugged in. |
Battery-powered audio
A single Li-ion cell sits below the 5 V needed by the speaker amplifier,
so the board includes a TPS61023 synchronous boost converter (U4)
that lifts BAT+ up to 5 V. Output is fed into the 5 V rail through a
Schottky diode (D1) so the boost output can't backfeed USB VBUS when
both USB and battery are connected.
This means the speaker output works on battery just as well as on USB — no compromise.
Combining sources — what's safe
| Combination | Safe? | Why |
|---|---|---|
| USB + battery | ✅ Yes | XIAO charges the cell; D1 blocks the boost from feeding USB. |
USB + external 5 V (J4) | ❌ No — pick one | Both feed the 5 V rail directly. Hot-swapping risks back-feeding the upstream supply. |
| External 5 V + battery | ✅ Yes | Same reasoning as USB + battery — D1 isolates the boost. |
Tip: if you intend to deploy the board untethered in a meditation session, leave USB unplugged once you've flashed the firmware. The XIAO's USB controller draws current even when the host is idle.
Repository layout
main_board/
├── esp32audio.kicad_sch # schematic
├── esp32audio.kicad_pcb # PCB layout
├── esp32audio.kicad_pro # KiCad project
├── 3dmodels/ # STEP models for enclosure design
├── datasheets/ # IC datasheets and reference schematics
├── analysis/ # generated reports (regenerable from source)
├── images/ # 3D renders used in this README
├── outputs/ # gerbers, drill files, BOM, pick-and-place CSVs
└── *.py # helper scripts (netlist sync, freerouting…)Related projects
| Repo | Role |
|---|---|
freeesp32_audioplayer | This repo — open hardware (KiCad) |
freeesp32_ave | AVE firmware that runs on this board |
freeesp32_ave_generator | Web editor that generates session timelines for the firmware |
Ordering the board
The main_board/outputs/ directory contains everything a PCB fab needs:
| File / folder | Purpose |
|---|---|
outputs/Archive.zip | Gerbers + drill file (KiCad standard layer naming) |
outputs/esp32audio.csv | BOM with manufacturer part numbers (MPNs) |
outputs/esp32audio-*-pos.csv | Pick-and-place coordinates (top / bottom / all) |
PCBWay (recommended for assembly with non-LCSC parts)
- Go to https://www.pcbway.com/orderonline.aspx and upload
outputs/Archive.zip. The site auto-detects board size, layer count (2-layer), and finish. - Defaults are fine: FR-4, 1.6 mm, HASL or ENIG, green soldermask, white silkscreen.
- For assembly: enable PCB Assembly, upload
esp32audio.csv(BOM) andesp32audio-top-pos.csv+esp32audio-bottom-pos.csv(CPL). PCBWay sources parts by MPN globally — useful if any component is out of stock on LCSC. - Quoting + DFM review typically completes within 24 h; bare-board lead time ~3–5 days, assembled ~7–10 days.
JLCPCB (cheaper for bare boards / parts available on LCSC)
- Go to https://cart.jlcpcb.com/quote and upload
outputs/Archive.zip. - Defaults are fine. JLCPCB's free options match what this design needs.
- For assembly: enable PCBA, upload
esp32audio.csv(BOM) andesp32audio-all-pos.csv(CPL). JLCPCB requires the parts to be in their LCSC catalog — verify MPN availability before ordering, and substitute equivalents in the BOM where needed.
Bare-board only (any fab)
Just upload outputs/Archive.zip — the gerbers use KiCad's standard layer naming (F_Cu, B_Cu, F_Mask, B_Mask, F_Paste, B_Paste, F_Silkscreen, B_Silkscreen, Edge_Cuts) which every modern fab recognises.
Regenerating outputs from source
If you edit the schematic or PCB, regenerate the manufacturing files from KiCad:
- PCB → File → Fabrication Outputs → Gerbers… (use
outputs/as the output directory, then zip) - PCB → File → Fabrication Outputs → Drill Files…
- PCB → File → Fabrication Outputs → Component Placement… (top + bottom CPL)
- Schematic → Tools → Generate BOM…
Status
Hardware design in active development. See main_board/project_plan.md and
main_board/lessons_learned.md for design notes.
License
TBD — open hardware license to be chosen (e.g. CERN-OHL-S 2.0).
Parts
45| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C2, C5, C9, C10, C15, C18 |
| 4 | 10k | Resistor_SMD:R_0402_1005Metric | R8, R11, R12, R13 |
| 3 | 100k | Resistor_SMD:R_0402_1005Metric | R1, R2, R7 |
| 3 | 10uF | Capacitor_SMD:C_0805_2012Metric | C4, C16, C19 |
| 3 | Fiducial | Fiducial:Fiducial_1mm_Mask2mm | FID1, FID2, FID3 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R3, R4 |
| 2 | 220uF | Capacitor_SMD:CP_Elec_6.3x5.4 | C13, C14 |
| 2 | 3.3uF | Capacitor_SMD:C_0805_2012Metric | C7, C8 |
| 1 | 100uF | Capacitor_SMD:CP_Elec_6.3x5.4 | C11 |
| 1 | 1uF | Capacitor_SMD:C_0402_1005Metric | C3 |
| 1 | 2.2uF | Capacitor_SMD:C_0603_1608Metric | C12 |
| 1 | 22uF | Capacitor_SMD:C_0805_2012Metric | C17 |
| 1 | 3.3uF | Capacitor_SMD:C_0603_1608Metric | C6 |
| 1 | 365k | Resistor_SMD:R_0402_1005Metric | R9 |
| 1 | 4.7uH | Inductor_SMD:L_Taiyo-Yuden_NR-30xx | L1 |
| 1 | 49.9k | Resistor_SMD:R_0402_1005Metric | R10 |
| 1 | APA2068 | New_Library:SOP-16-P_3.9x9.9mm_P1.27mm_EP2.18x4.12mm | U3 |
| 1 | BATTERY | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | GND BAT+ |
| 1 | CS4344 | Package_SO:TSSOP-10_3x3mm_P0.5mm | U2 |
| 1 | GPIO_BREAKOUT | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J6 |
| 1 | L_SPKR | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J2 |
| 1 | PJ-320A | Connector_Audio:Jack_3.5mm_PJ320D_Horizontal | J1 |
| 1 | R_SPKR | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J3 |
| 1 | SS14 | Diode_SMD:D_SMA | D1 |
| 1 | TPS61023DRLR | Package_TO_SOT_SMD:SOT-563 | U4 |
| 1 | V+_EXT | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | GND 5V |
| 1 | XIAO ESP32-S3 | New_Library:XIAO_ESP32-S3_SMD | U1 |
| 1 | microSD | Connector_Card:microSD_HC_Hirose_DM3D-SF | J7 |
Similar boards
- 2 layers101.5 × 83 mm

- 4 layers101.8 × 83 mm

- 2 layers75.5 × 62.5 mm

- 4 layers250 × 100 mm

- 4 layers62.1 × 67.3 mm

Proto pico
amundgr/proto_pico
A mash of several different projects in one PCB in an attempt to kicak start all of them at once. Why fail and give up on one project when you can do it on several at once!
112 parts - 2 layers100 × 100 mm

- 2 layers18.5 × 25 mm

CS4344
sneakylizard123-4/CS4344
The CS4344 is a 24-bit stereo DAC that accepts I2S audio and runs from a single 3.3 V supply. This board gives it a 6-pin 2.54 mm header, a 3.5 mm stereo jack, and the passives it needs. There is no configuration bus.
14 partsCERN-OHL-P-2.0 - 6 layers100 × 75 mm

STM32H743
sneakylizard123-4/STM32H743
This board puts an STM32H743XIH6 and an iCE40 UP5K on the same PCB. The H743 handles control, USB, Ethernet, storage, and audio.
171 partsCERN-OHL-P-2.0
Questions
How big is the Esp32audio PCB?
It measures 51 × 30 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Esp32audio use?
45 parts, built around the CS4344, PJ-320A and SS14. 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 Esp32audio KiCad files?
From the ppisljar/freeesp32_audioplayer repository on GitHub, at the commit this page was made from: the board is main_board/esp32audio.kicad_pcb and its schematic main_board/datasheets/xiao_plus_base/XIAO Plus Base V1.0/XIAO Plus Base V1.0.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Esp32audio design in my own project?
Its repository states no licence, so its author keeps all rights: ask ppisljar before reusing the design.

