Skip to the content
PCBKitNew board
4 layers71 × 42.8 mmCadProd compact, the printed circuit board in 3D

CadProd compact

botsqerebot/AudioDeck

Everything to change, check and test for rev 2. The main goal is power saving while the player is off:

Size
71 × 42.8 mm
Copper layers
4
Thickness
1.6 mm
Parts
83
Nets
76
Pads
317
Tracks, vias
372, 96
Pours
7
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
12 Oct 2026
Updated
2 Nov 2026

Overview

CadProd compact is an open-source printed circuit board by botsqerebot, from the botsqerebot/AudioDeck repository on GitHub. It is a 4-layer board of 71 × 42.8 mm with 83 parts on 76 nets, routed with 372 tracks and 96 vias.

It is built around the MAX9722AEUE+T, TPS7A2033DQN and AO3401A, with the BQ24074RGTR and PCM5102PW among its other parts. Its parts include 25 resistors, 24 capacitors, 5 diodes, 2 connectors and 1 transistor. It belongs with the ESP32 boards of this library.

Main components

5

README

PCB/README.md

Music player PCB: next revision (rev 2)

Everything to change, check and test for rev 2. The main goal is power saving while the player is off:

Off currentShelf life on 1000 mAh
Rev 1, estimated~0.6–1 mA~6 weeks
Rev 2, target~25–30 µAwell over a year (in practice the battery's own self-discharge sets the limit)

The estimates come from datasheet typical values. Measure the real numbers at bring-up (section 6).


1. Power rails (the new design)

text
BAT ── BQ24074 ── +REG ──┬── TPS7A2033 "Digital_Vol" (EN = VIN, always on) ── AwO_D3v3 ──┬── ESP32-S3
                         │                                                                ├── BQ24074 EN2, pull-ups R9 R10 R11 R12
                         │                                                                └── Q2 AO3401A ── D3v3 (switched) ──┬── SD card + R6 R7
                         │                                                                                                    └── PCM5102 DVDD + CPVDD
                         └── TPS7A2033 "AnaVol" (EN = EN_ANAVOL) ── A3v3 (switched) ──┬── PCM5102 AVDD
                                                                                        └── MAX9722 amp
RailWhat's on itOn while the player is off?
AwO_D3v3ESP32-S3, BQ24074 EN2, R9 (PGOOD), R10 (CHG), R11 (EN), R12 (BOOT)Yes
D3v3SD card VDD, R6 (CMD), R7 (DAT0), PCM5102 DVDD (pin 20) and CPVDD (pin 1)No, Q2 switches it off
A3v3PCM5102 AVDD, MAX9722No, EN_ANAVOL switches it off

2. Changes already in the schematic

  • Digital regulator changed from MCP1825 to TPS7A2033 (Iq ~6.5 µA instead of ~120 µA), with EN tied to VIN
  • C24 1 µF at the digital regulator's VIN
  • C21/C22 (10 µF + 100 nF) at its output
  • Always-on rail AwO_D3v3 split from the switched D3v3
  • Q2 AO3401A high-side switch, with R25 100k gate pull-up (off at boot and in sleep) and R26 10k to the GPIO
  • R5 (SD Det pull-up, ~330 µA with a card in) removed. The firmware uses the internal pull-up while awake.
  • R6 and R7 (SD pull-ups) moved to switched D3v3, so they can't back-power the card
  • PCM5102 DVDD/CPVDD moved to switched D3v3
  • R9, R10, R11, R12 and BQ24074 EN2 on AwO_D3v3. EN on the switched rail would hold the ESP32 in reset forever.

3. Still to do in the schematic

Must fix

  • C23 (47 nF) from Q2 gate to Q2 source, side by side with R25. This gives a ~0.5 ms turn-on (10k × 47 nF), so the inrush is about 75 mA instead of a dip that could reset the ESP32. (Gate-to-GND would switch D3v3 on briefly at every power-up.)
  • Connect the GPIO label at R26 to a real pin: IO21 (module pad 23). IO11 (pad 19), IO12 (pad 20) and IO18 (pad 11) are also free. Avoid the strapping pins IO0, IO3, IO45 and IO46.
  • Give the two GPIO labels separate names. Same-named labels are one net in KiCad. Use BAT_SENSE → IO8 (pad 12) and D3V3_EN → IO21 (pad 23).
  • Battery divider on IO8 (module pad 12) (R5/R27 1 MΩ, C25 100 nF). It's needed for battery %, LED4 (above 60 %) and the low-battery warnings:
    text
    BAT+ ──[1 MΩ]──┬── IO8
                   ├──[1 MΩ]── GND
                   └──[100 nF]── GND
    It draws about 2 µA. IO8 is on ADC1.
  • Make thermal refes for the GND on LEDs and Battery
  • Battery connector Make the battery connector fit a JST connection

Check against datasheets

  • BQ24074 TMR (pin 14) and ITERM (pin 15) are unconnected. Check what that means for the safety timer and the termination current, and tie them as intended.
  • BQ24074 TS: R8 is a fixed 10k to GND, so temperature protection is off. For a LiPo in a closed case, consider a pack with a 10k NTC wired to TS.
  • TPS7A2033 output capacitance: confirm that 10 µF + 100 nF on each output is within the stable range. It should be.
  • AO3401A pinout in the footprint: 1 = Gate, 2 = Source, 3 = Drain (SOT-23).

LEDs

  • Make the schematic and firmware agree on the colours. Right now they don't:

    GPIONetSchematicFirmware config.h
    38LED1D1 redgreen
    39LED2D2 orangepurple
    40LED3D3 greenorange
    41LED4D4 purpleblue
    42LED5D5 bluered

    Decide which colour goes where, then make the schematic, the silkscreen and config.h match.

  • Optional: change R13–R21 from 1 kΩ to 2.2–4.7 kΩ. That's about 1 mA per LED now; higher values are usually still bright enough behind a case.

Optional

  • External 1 MΩ pull-up on PLAY to AwO_D3v3. The firmware could then power down the RTC peripherals in deep sleep, saving a few µA.
  • MAX17048 fuel gauge on I2C (e.g. IO11/IO12), if the divider's ~±10 % isn't good enough. It stays accurate while charging and under load, and draws ~4 µA in hibernate. It needs a firmware driver.
  • Remove any leftover symbols that have no footprint (the old AP2112K symbol).

4. Footprints and BOM

  • Digital_Vol: SOT-23-5 for the TPS7A2033 (it was the MCP1825's SOT-223/DDPAK). Pins: 1 VIN, 2 GND, 3 EN, 4 NC, 5 VOUT.
  • Q2: SOT-23. Add C23 and C24 footprints.
  • The BOM says µF, not "yF". KiCad shows µ as y on some values.
  • TPS7A2033 ×2 (digital + analog). The MCP1825 is no longer used.
  • Battery divider: 2 × 1 MΩ, 1 × 100 nF (0402/0603).

5. Layout

  • C24 right next to the digital TPS7A2033's VIN pin. C21/C22 right next to its VOUT.
  • C23 close to Q2, between its gate and source pads.
  • Keep the ESP32's decoupling (C6, C7, C8) right at the module's 3V3 pin.
  • C1/C2 (SD decoupling) close to the SD socket, on D3v3.
  • Battery divider close to IO8, away from the I2S and SD clock traces. The 1 MΩ node is high-impedance and picks up noise.
  • Short, wide traces from Q2 to the SD card VDD.

6. Bring-up tests

  1. Rails: power from the battery only. AwO_D3v3 should be 3.3 V. D3v3 and A3v3 should be 0 V until the firmware turns them on.
  2. Boot: the ESP32 starts every time (if it doesn't, EN/R11 is on the wrong rail). Hold Play for 3 s to turn on.
  3. Inrush: with a scope on AwO_D3v3, the firmware switches D3v3 on. The dip must stay above about 3.0 V, and the ESP32 must not reset.
  4. SD and audio: cards mount, music plays, and there's no pop at power-on.
  5. Off current: power off, then put a multimeter (µA range) in series with the battery. Target ~25–30 µA. If it's much higher:
    • Is D3v3 really 0 V?
    • Is any ESP32 pin driving high into the SD card or DAC?
    • Are the LEDs off?
  6. Charging: plug in USB. The orange LED lights while charging, also while the player is off. Unplugged, there's no wake loop.
  7. Battery %: compare Settings > Battery with a multimeter on BAT+ (around 4.2 V full, 3.7 V about 50 %).
  8. LEDs: check each colour against the table in section 3.

7. Firmware changes needed for rev 2

These go into flac_player_4/flac_player/ once the board exists. They're not done yet; ask when the GPIO is final.

  • config.h: new PIN_D3V3_EN 21 (or whichever pin you choose). LOW = D3v3 on.
  • Boot: drive PIN_D3V3_EN LOW, wait ~5 ms, then start the SD card.
  • Before deep sleep: drive all SD pins (CS, CLK, MOSI, MISO) and I2S pins LOW, then set PIN_D3V3_EN HIGH and hold it.
    • Rev 1 holds SD CS high in sleep. On rev 2 that would push current into the unpowered card through its protection diodes.
  • PIN_BAT_ADC 8. This turns on Settings > Battery, LED4 above 60 %, the red low-battery LED and the "Battery low" / "Battery critical" warnings. That code is already written.
  • LED pin colours in config.h to match section 3.

Parts

83
QtyValueFootprintReferences
1010kOhmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6, R7, R8, R9, R10, R11, R12, R18, R22, R26
6100nF CeramicCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C4, C6, C10, C13, C16
6SW_PushButton_Switch_SMD:SW_SPST_SKQG_WithStemHOME1, NEXT1, PLAY1, PREV1, VOL-1, VOL+1
51kOhmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR13, R14, R15, R17, R21
51uF ceramicCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC7, C9, C14, C15, C18
410uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C8, C20, C21
4PESD5V0L1BA1Diode_SMD:D_SOD-323ESD3, ESD4, ESD7, ESD8
3100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC19, C22, C25
2100kOhmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR16, R25
21MOhmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5, R27
22.2uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC11, C12
220kOhm +Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR19, R20
23.9kOhmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR23, R24
2SW_PushButton_Switch_SMD:SW_Push_SPST_NO_Alps_SKRKBOOT1, EN1
2TPS7A2033Package_TO_SOT_SMD:SOT-23-5AnaVol1, Digital_Vol1
10.1uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC17
11.2kOhmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR4
110-22yFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3
110-22yF CeramicCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC5
12kOhmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR3
147nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC23
1AO3401APackage_TO_SOT_SMD:SOT-23Q2
1BQ24074RGTPackage_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.8x1.8mmBATPROT1
1ESP32-S3-WROOM-2RF_Module:ESP32-S3-WROOM-2ESP1
1LED_BLUELED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD5
1LED_GREENLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD3
1LED_ORANGELED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD2
1LED_PURPLELED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD4
1LED_REDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD1
1MAX9722AEUE_MAX9722AEUE_:SOP65P640X110-16NAMP1
1Micro_SD_Card_Det1Connector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5MicroSD1
1PCM5102Package_SO:TSSOP-20_4.4x6.5mm_P0.65mmDAC1
1TestPoint_Pad_1.0x1.0mmTestPoint:TestPoint_Pad_1.0x1.0mmA3v3
1USB_B_MicroConnector_USB:USB_Micro-B_Wuerth_629105150521J1
1USB_Through_holeMine_fotavtrykk:PinHeader_1x04_P2.54mm_Vertical_USBJ2
1~Connector_Audio:Jack_3.5mm_PJ320D_HorizontalAUX1
1~Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalBattery1

The 79 most common of 83 parts.

Questions

How big is the CadProd compact PCB?

It measures 71 × 42.8 mm and has 4 copper layers, 1.6 mm thick.

What parts does the CadProd compact use?

83 parts, built around the MAX9722AEUE+T, TPS7A2033DQN, AO3401A and BQ24074RGTR. 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 CadProd compact KiCad files?

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

Can I use the CadProd compact design in my own project?

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

Similar boards

  • 2 layers90.7 × 70 mmDuckyDK MTR-1, the printed circuit board in 3D

    DuckyDK MTR-1

    QinCai-rui/DuckyDK-MTR-1

    This is a Metronome called the DuckyDK MTR-1

    33 partsGPL-3.0
  • 6 layers178 × 118 mmMoriShield Carrier 6L, the printed circuit board in 3D

    MoriShield Carrier 6L

    aswinserigreen/morishield_hardware

    all components bom , pcb layouts and schematics of morishield is maintained here

    157 parts
  • 6 layers60 × 30 mmUdsp card, the printed circuit board in 3D

    Udsp card

    crsknr/hw_udsp-card

    A compact DSP development board for real-time embedded audio and sensing

    221 parts2GPL-3.0
  • 4 layers91.9 × 53.2 mmPhoenix main board, the printed circuit board in 3D

    Phoenix main board

    Phalkon-Industries/phoenix-instrument

    Git repo for the content of the new Phoenix ph handheld instrument.

    117 parts2CERN-OHL-S-2.0
  • 4 layers88 × 58 mmBIOCHEST ECG EMG, the printed circuit board in 3D

    BIOCHEST ECG EMG

    8aChristian/BIOCHEST-ECG-EMG

    Figure 1: Full 4-Layer High-Density Medical PCBA with Galvanic Isolation Barrier & Routed Copper Tracks.

    29 parts
  • 4 layers285 × 94.5 mmLX60EC - STM32, the printed circuit board in 3D

    LX60EC - STM32

    FriedS0ul/Gamma-LX60EC

    Standard 60% EC pcb with drop-in lx60 compatibility

    247 parts
  • 4 layers100 × 100 mmInterruptus, the printed circuit board in 3D

    Interruptus

    parceval/interrruptus

    A simple Interrupt Controller and Timer made in Verilog

    43 partsBSD-3-Clause
  • 4 layers52 × 41.4 mmEMG PCB, the printed circuit board in 3D

    EMG PCB

    PsXcor/EMG_PCB_PROJECT

    code repo for EMG PCB

    97 parts