Skip to the content
6 layers50 × 70 mmMP3player, the printed circuit board in 3D

Why the STM32H743: it has the RAM to buffer audio enough peripherals that almost every feature ended up on its own bus and 480MHz means I never have to care about optimization.

Size
50 × 70 mm
Copper layers
6
Thickness
1.6 mm
Parts
150
Nets
181
Pads
688
Tracks, vias
1,458, 241
Pours
4
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
29 Jun 2026
Updated
17 Sep 2026

Overview

MP3player is an open-source printed circuit board by sneakylizard123-4, from the sneakylizard123-4/MP3player repository on GitHub. It is a 6-layer board of 50 × 70 mm with 150 parts on 181 nets, routed with 1,458 tracks and 241 vias.

It is built around the STM32H743VIT6, SI4735-D60-GU and BME680, with the CS43131-CNZR, TPS613222ADBV and BQ24090DGQR among its other parts. Its parts include 60 capacitors, 27 resistors, 17 switches, 12 ICs and 10 diodes. It belongs with the STM32 boards of this library.

Main components

12

README

README.md

MP3 Player

50x75mm mp3 player with am and fm radio

Why I built this

seems like fun also radio stuff

Why the STM32H743: it has the RAM to buffer audio enough peripherals that almost every feature ended up on its own bus and 480MHz means I never have to care about optimization.

Current status

Working on splitting this into two boards. The main board keeps the MCU, SD card, buttons, and OLED; the audio/power board takes the DAC, radio, microphone, charging, and the analog rails. It's early in the split: the single-board layout below is what's designed so far, and I'm still shuffling what goes where between the two. Might need to fix power stage to make it a 1-sided board

Pictures

3D render

PCB front | PCB back

Root schematic

Power schematic

Features

Audio

  • CS43131 headphone DAC with a built-in amp
  • Low-noise supply rail just for the audio path
  • 3.5mm headphone output
  • Si4735 AM/FM radio receiver
  • ICS-43434 I2S microphone for recording

Storage and controls

  • microSD card over a 4-bit SDMMC bus
  • OLED display
  • Seventeen buttons: a 3×3 matrix for navigation, the rest are individual function buttons
  • APA102 RGB LEDs

Sensors

  • LSM6DSL 6-axis IMU
  • BME680 (temperature / humidity / pressure / VOC)
  • ISL29035 ambient light sensor
  • DS3231M real-time clock

Power

  • USB-C charging through a BQ24090DGQ Li-ion charger
  • TPS613222ADBV boost converter makes the 5V rail
  • Audio DAC gets its own clean supply

What the sensors actually do

Strictly speaking none of these have anything to do with playing music. They're in the design because a player that reacts to its surroundings is more interesting than one that doesn't:

  • LSM6DSL IMU: motion and orientation. Shake to skip a track, flip over to mute, rotate the UI, or let the LEDs follow movement.
  • BME680: temperature, humidity, pressure, air quality. Environmental readouts on the OLED, and it can log air quality over time.
  • ISL29035: ambient light. Dims the OLED automatically so it stays readable in daylight and doesn't glare at you in bed.
  • DS3231M RTC: keeps time even when the player is off. Clock display, timestamps on recordings, alarms someday maybe.

Hardware

Power

Everything runs off a single Li-ion cell. There are three rails downstream of it: one for digital logic, one for the LEDs, and a quiet one for audio. The BQ24090DGQ takes USB input, manages charging, watches pack temperature through an NTC thermistor, and drives the charge status LEDs. From the battery, a TPS613222ADBV boost converter produces 5V for the LEDs and peripherals, a TLV70233 LDO makes the 3.3V digital rail, and a TPS7A4701 low-noise LDO feeds the audio section on its own.

Power flow:

text
USB-C
  |
  +-- USBLC6 ESD protection
  |
  +-- BQ24090DGQ Li-ion charger
          |
          +-- Li-ion battery
                  |
                  +-- TPS613222ADBV boost converter
                  |       |
                  |       +-- 5V rail (LEDs and peripherals)
                  |
                  +-- TLV70233 LDO
                  |       |
                  |       +-- 3.3V digital rail
                  |
                  +-- TPS7A4701 low-noise LDO
                          |
                          +-- audio rail

Why three rails? the boost converter switches at a few MHz and I really did not want that showing up in my headphones. Same reason the DAC gets its own regulator.

Schematic

The design is split across hierarchical KiCad sheets:

SheetFileDescriptionMain Components
RootMP3player.kicad_schTop-level wiringSTM32H743, LSM6DSL, BME680, ISL29035, DS3231M
STM32 Corestm32core.kicad_schMCU, sensors, clockSTM32H743, LSM6DSL, BME680, ISL29035, DS3231M
Powerpower.kicad_schCharger + all three railsBQ24090DGQ, TPS613222ADBV, TPS7A4701, TLV70233, USBLC6
Audioaudio.kicad_schDAC, headphone amp, charge pump capsCS43131-CNZR
Storagestorage.kicad_schSDMMC busMicroSD socket
OLED UIoledui.kicad_schButton matrix + direct controlsOLED, button matrix, GPIO controls
Radioradio.kicad_schFM receiver + antenna switchingSi4735-D60-GU
Microphonemicrophone.kicad_schMEMS mic on I2SICS-43434 MEMS microphone
LED Spectrumledspectrum.kicad_sch70 APA102 LEDs daisy-chainedAPA102-2020 LEDs

PCB

Six layers, 1.6mm thick, roughly 50×70mm. I kept the analog audio away from the digital stuff and the switching regulators as much as I could. DAC sits right next to the headphone jack to keep those traces short. I was careful about return paths under the charger and boost converter to keep the switching noise contained.

Assembly

Designed for standard SMT assembly. The order I use:

  1. Apply solder paste with the stencil.
  2. Place the small parts first: 0603 resistors and caps, ferrite beads, crystals.
  3. Then the big ICs: STM32H743 (LQFP-100), CS43131, Si4735, power management, APA102 LEDs, sensors.
  4. Reflow.
  5. Inspect the fine-pitch parts under magnification for bridges.
  6. Install connectors: USB-C, headphone jack, microSD socket, SMA antenna connectors, battery connector, debug headers.
  7. Install the user-facing stuff: seventeen tactile switches and the OLED connector.
  8. Electrical checks: continuity, shorts, verify each rail comes up at the right voltage.
  9. Flash initial firmware over SWD.

Firmware

Lives in firmware/, PlatformIO project on the STM32 HAL. Right now it brings up the hardware: 480MHz clock from the 8MHz crystal via PLL, GPIO, the I2C/SPI/UART buses, SD card interface, control pins. Playback, the UI, radio control, recording, and the LED effects don't exist yet. That's the next chunk of work.

Build and flash

You'll need PlatformIO (CLI or VS Code extension) and an ST-Link, CMSIS-DAP, or J-Link debugger.

bash
cd firmware
pio run

Flashing over SWD:

bash
pio run -t upload

Bill of Materials

RefPartQtyPackageDescription
U4STM32H743VIT61LQFP-100Main microcontroller
U9CS43131-CNZR1QFN-40Audio DAC
U10Si4735-D60-GU1SSOP-24FM radio receiver
MK1ICS-434341LGAI2S MEMS microphone
U6LSM6DSL1LGA-146-axis IMU
U8BME6801LGA-8Environmental sensor
U5ISL290351DFN-6Ambient light sensor
U7DS3231M1SOIC-16WReal-time clock
U11BQ24090DGQ1HVSSOP-10Li-ion charger
U12TPS613222ADBV1SOT-23-5Boost converter
U3TPS7A4701xRGW1VQFN-20Low-noise audio regulator
U2TLV702331SOT-23-53.3V digital regulator
U1USBLC6-2SC61SOT-23-6USB ESD protection
D4-D7APA102-202042×2mmRGB LEDs
D1-D3ACDSV6-4448TI-G3SOT-363Button ESD protection
D10BAT54W1SOT-323Schottky diode
D8-D90603 LEDs20603Status LEDs
J1HRO TYPE-C-31-M-121USB-CCharging and USB
J4PJ31060-I1—3.5mm headphone jack
J5Hirose DM3D-SF1—MicroSD socket
J6-J7Amphenol 901-1432SMAAntenna connectors
J2JST PH B2B-PH-K12.0mmBattery connector
J3SWD header12.54mmDebug connector
J8OLED header12.54mmDisplay connector
L1450µH10805Radio antenna matching
L22.2µH10805Boost converter inductor
Y18MHz TXC AA0800000215032MCU crystal
SW1-SW17Tactile switches17—User controls
TH110k NTC10603Battery temperature monitoring
FB1600Ω @100MHz ferrite10603Noise filtering

BOM.csv has supplier part numbers, links, and pricing for everything above.

Fabrication

Gerbers are in kicad/production/MP3player.zip

Boards and stencils come from JLCPCB.

PCB specs:

SpecificationValue
Layers6
Dimensions50×70mm
Thickness1.6mm
MaterialFR-4 TG155
Surface finishENIG
Outer copper1oz
Inner copper0.5oz
PCB colorPurple
SilkscreenWhite

Stencil specs:

SpecificationValue
Quantity2
SidesTop and bottom
Manufacturing processLaser-cut stainless steel
FinishElectropolished
CoatingNano-coating

Known Issues

  • Single-board design is being split into main + audio/power boards; that work is early.
  • Audio performance hasn't been measured with real firmware yet.
  • Battery runtime is untested.
  • RF side needs work: antenna matching was calculated, not measured.
  • No thermal testing under load yet.
  • Enclosure isn't designed.

Firmware currently only does hardware init. Still to write:

  • Audio playback pipeline
  • SD card filesystem support
  • Audio decoding
  • OLED user interface
  • Button handling and debounce
  • Radio control
  • Recording
  • Sensor drivers
  • LED spectrum visualization
  • Battery monitoring

Credits

  • Board, schematics, and firmware all my own work.
  • STM32 HAL by STMicroelectronics.
  • PlatformIO for builds.
  • KiCad libraries for standard symbols and footprints.

Parts

150
QtyValueFootprintReferences
17100nFCapacitor_SMD:C_0603_1608MetricC13, C16, C19, C23, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C41, C43 +1
1610kResistor_SMD:R_0603_1608MetricR5, R6, R7, R8, R9, R10, R12, R13, R14, R15, R16, R17, R18, R19, R20, TH1
110.1uFCapacitor_SMD:C_0603_1608MetricC10, C14, C15, C17, C20, C44, C45, C49, C50, C51, C52
102.2uFCapacitor_SMD:C_0603_1608MetricC18, C21, C38, C39, C40, C54, C55, C56, C57, C58
9SW_PushButton_Switch_SMD:SW_Push_1P1T_NO_CK_KMR2SW9, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17
8SW_PushButton_Switch_SMD:Panasonic_EVQPUM_EVQPUDSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8
61uFCapacitor_SMD:C_0603_1608MetricC2, C4, C6, C24, C25, C59
4APA102-2020LED_SMD:LED-APA102-2020D4, D5, D6, D7
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
4TestPointTestPoint:TestPoint_Pad_D1.5mmTP3, TP4, TP5, TP6
310uFCapacitor_SMD:C_0603_1608MetricC1, C3, C5
3ACDSV6-4448TI-GPackage_TO_SOT_SMD:SOT-363_SC-70-6D1, D2, D3
21.1kResistor_SMD:R_0603_1608MetricR23, R25
21.5kResistor_SMD:R_0603_1608MetricR21, R22
212pFCapacitor_SMD:C_0603_1608MetricC8, C11
215uFCapacitor_SMD:C_0603_1608MetricC36, C37
21nFCapacitor_SMD:C_0603_1608MetricC46, C48
222Resistor_SMD:R_0603_1608MetricR3, R4
24.7uFCapacitor_SMD:C_0603_1608MetricC42, C60
25.1kResistor_SMD:R_0603_1608MetricR1, R2
2LEDLED_SMD:LED_0603_1608MetricD8, D9
2SMAConnector_Coaxial:SMA_Amphenol_901-143_HorizontalJ6, J7
110nFCapacitor_SMD:C_0603_1608MetricC22
111kResistor_SMD:R_0603_1608MetricR24
1120pFCapacitor_SMD:C_0603_1608MetricC62
12.2uHInductor_SMD:L_0805_2012MetricL2
122nFCapacitor_SMD:C_0603_1608MetricC47
122uFCapacitor_SMD:C_0603_1608MetricC61
1450uHInductor_SMD:L_1206_3216MetricL1
147uFCapacitor_SMD:C_0603_1608MetricC7
15.11RResistor_SMD:R_0603_1608MetricR26
1600Resistor_SMD:R_0603_1608MetricR11
1600R @ 100MHzInductor_SMD:L_0603_1608MetricFB1
18MHz TXC AA08000002Crystal:Crystal_SMD_5032-2Pin_5.0x3.2mmY1
1AudioJack3_Ground_SwitchTRConnector_Audio:Jack_3.5mm_PJ31060-I_HorizontalJ4
1BAT54WPackage_TO_SOT_SMD:SOT-323_SC-70D10
1BME680Package_LGA:Bosch_LGA-8_3x3mm_P0.8mm_ClockwisePinNumberingU8
1BQ24090DGQPackage_SO:HVSSOP-10-1EP_3x3mm_P0.5mm_EP1.83x1.89mmU11
1CS43131-CNZRPackage_DFN_QFN:TQFN-40-1EP_5x5mm_P0.4mm_EP3.5x3.5mmU9
1Conn_01x02Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ2
1Conn_01x05Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ3
1Conn_01x08Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical_SMD_Pin1RightJ8
1DS3231MPackage_SO:SOIC-16W_7.5x10.3mm_P1.27mmU7
1ICS-43434Sensor_Audio:InvenSense_ICS-43434-6_3.5x2.65mmMK1
1ISL29035OptoDevice:Renesas_DFN-6_1.5x1.6mm_P0.5mmU5
1LOGOlogo:linuxpenguin-maskG***
1LOGOlogo:linuxpenguin_cuG***
1LSM6DSLPackage_LGA:LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4yU6
1Micro_SD_Card_Det2Connector_Card:microSD_HC_Hirose_DM3D-SFJ5
1STM32H743VIT6Package_QFP:LQFP-100_14x14mm_P0.5mmU4
1Si4735-D60-GUPackage_SO:SSOP-24_3.9x8.7mm_P0.635mmU10
1SolderJumper_3_Bridged12Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mmJP1
1TLV70233_SOT23-5Package_TO_SOT_SMD:SOT-23-5U2
1TPS613222ADBVPackage_TO_SOT_SMD:SOT-23-5U12
1TPS7A4701xRGWPackage_DFN_QFN:Texas_RGW0020A_VQFN-20-1EP_5x5mm_P0.65mm_EP3.15x3.15mm_ThermalViasU3
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U1
1USB_C_Receptacle_USB2.0_14PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1

Similar boards

  • 6 layers50 × 50 mmXmos xu316, the printed circuit board in 3D

    Xmos xu316

    youheng7185/xmos_xu316_cs43131_usb_aud

    uac 2.0 on xmos xu316 with cs43131 audio codec

    93 parts3
  • 4 layers35.1 × 58.3 mmPicoDAC, the printed circuit board in 3D

    PicoDAC

    Person-0/PicoDAC

    A USB-C to 3.5mm HiFi mini DAC

    46 parts2
  • 6 layers53.3 × 101.6 mmMega2560plus, the printed circuit board in 3D

    Mega2560plus

    sneakylizard123-4/Mega2560plus

    Mega 2560+ is an upgraded version of the Arduino Mega 2560. It keeps the same form factor and pinout as the original so it still works with every Mega shield, but it adds an onboard sensor suite and an ESP32-S3…

    149 parts
  • 2 layers97 × 79.5 mmMBRadioDual2, the printed circuit board in 3D

    MBRadioDual2

    LadyRoninEngineer/Si473x

    Data Supporting development of Si473x series radios

    104 parts35Unlicense
  • 4 layers99.9 × 69.9 mmPocketFT8Xcvr, the printed circuit board in 3D

    PocketFT8Xcvr

    conr2286/PocketFT8Xcvr

    Pocket FT8 Revisited

    59 parts12MIT
  • 4 layers50 × 86 mmKiCad Si4735, the printed circuit board in 3D

    KiCad Si4735

    ngc6589/Si4735_Radio_RaspberryPiPico

    Raspberry Pi Pico とタッチ液晶で Si4735 DSP ラジオを作成しました

    80 parts9MIT
  • 2 layers50.8 × 38.8 mmSI4735, the printed circuit board in 3D

    SI4735

    EthicalEarth/Radio_SI4735

    DSP_SSB_RADIO_SI4735

    43 parts3
  • 2 layers85.4 × 49 mmSI4735, the printed circuit board in 3D

    SI4735

    EthicalEarth/Radio_SI4735_v1.0_stable

    Stable final release of DSP Radio based on si4735 chip.

    84 parts3

Questions

How big is the MP3player PCB?

It measures 50 × 70 mm and has 6 copper layers, 1.6 mm thick.

What parts does the MP3player use?

150 parts, built around the STM32H743VIT6, SI4735-D60-GU, BME680 and CS43131-CNZR. 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 MP3player KiCad files?

From the sneakylizard123-4/MP3player repository on GitHub, at the commit this page was made from: the board is kicad/MP3player.kicad_pcb and its schematic kicad/MP3player.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the MP3player design in my own project?

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