Skip to the content
PCBKitNew board
2 layers29 × 34.1 mmESP32-P4 OLED, the printed circuit board in 3D

ESP32 Sequence Player

Size
29 × 34.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
26
Pads
63
Tracks, vias
90, 1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
17 May 2026
Updated
17 May 2026

Overview

ESP32-P4 OLED is an open-source printed circuit board by computergeek1507, from the computergeek1507/sb_player_esp repository on GitHub. It is a 2-layer board of 29 × 34.1 mm with 11 parts on 26 nets, routed with 90 tracks and 1 via.

It is built around the MY-1220-03, PCF8523T and PCM5102APW. Its parts include 4 connectors, 3 resistors, 2 ICs, 1 capacitor and 1 crystal. It belongs with the lEDs and displays boards and the ESP32 and RISC-V boards of this library.

Main components

3

README

README.md

ESP32-P4 SB Player

An FSEQ sequence player for the ESP32-P4 that drives holiday and animated light displays. Reads .fseq v2 files from an SD card and streams channel data out over E1.31 (sACN) and/or DDP to LED controllers, with synchronized audio playback and a time-based scheduler.

Features

  • FSEQ v2 playback — reads uncompressed sequences from SD card, frame-accurate timing via FreeRTOS tasks
  • E1.31 (sACN) output — up to 8 outputs, unicast or multicast, configurable universe/channel mapping
  • DDP output — up to 8 outputs with per-output channel mapping
  • Audio playback — WAV and MP3 via I2S DAC (PCM5102A / UDA1334A), auto-matched from sequence media field
  • MultiSync — master mode to keep secondary players frame-synced
  • Scheduler — time-windowed autoplay with named playlists; repeat and shuffle support
  • Wired Ethernet — DHCP or static IP; NTP time sync
  • WiFi AP — always-on access point for configuration (SB-Player / sbplayer by default)
  • Web UI — browser-based management for config, outputs, sequences, playlists, schedule, and OTA firmware updates
  • OLED status display — 128×64 SSD1306 shows IP, current sequence, frame progress, FPS, and audio state
  • RTC support — DS3231, DS1307, or PCF8523 for accurate scheduling without NTP; NTP writes back to RTC on first sync

Repository Layout

text
firmware/SBPlayer/       Arduino sketch and headers
  SBPlayer.ino           Main sketch: setup, playback task, audio task, loop
  config.h               Device config struct + JSON load/save
  fseq.h                 FSEQ v2 parser
  audio.h                I2S audio player (WAV/MP3)
  e131.h                 E1.31/sACN sender
  ddp.h                  DDP sender
  multisync.h            FPP MultiSync master
  scheduler.h            Time-based scheduler + playlist engine
  oled.h                 SSD1306 OLED driver
  rtc.h                  RTC abstraction (DS3231/DS1307/PCF8523)
  webui.h                Async HTTP + WebSocket API and web UI
  data/                  LittleFS web pages (config, outputs, sequences,
                          playlists, schedule, OTA)

hardware/                KiCad ( PCB project (ESP32-P4 + OLED, I2S audio and RTC carrier)
  ESP32-P4_OLED.*        Schematic, PCB, project files
  jlcpcb/                JLCPCB-ready gerbers, BOM, and CPL

Hardware

The carrier board breaks out:

ConnectorPurpose
J1 (2×13)ESP32-P4 module
J2 (1×4)I2C OLED (SSD1306)
J3 (1×6)I2S DAC (UDA1334A pin-compatible)
J4 (1×6)I2S DAC (PCM5102A pin-compatible)
U3PCF8523T RTC with 32.768 kHz crystal
U2CR1220 RTC battery backup

Production files for JLCPCB are in hardware/jlcpcb/.

Firmware Setup

Board: esp32:esp32:esp32p4 (Arduino ESP32 core 3.x)

Required libraries (install via Arduino Library Manager or clone into ~/Arduino/libraries):

  • ESPAsyncWebServer
  • ArduinoJson
  • ESP32-audioI2S (or equivalent — provides AudioFileSourceSD, AudioGeneratorWAV/MP3, AudioOutputI2S)
  • Adafruit GFX Library
  • Adafruit SSD1306

Build and flash:

  1. Open firmware/SBPlayer/SBPlayer.ino in Arduino IDE
  2. Select board ESP32P4 Dev Module and your port
  3. Flash the sketch
  4. Flash the LittleFS filesystem image (littlefs.bin) using the ESP32 LittleFS upload tool — this deploys the web UI pages

SD Card Layout

text
/sequences/      FSEQ v2 sequence files + matching audio (*.wav / *.mp3)
/playlists/      JSON playlist files
schedule.json    Active schedule (created/managed via web UI)

Example schedule.json:

json
{
  "entries": [
    { "days": 127, "start_hour": 18, "start_min": 0,
      "end_hour": 23, "end_min": 0, "playlist": "default.json" }
  ]
}

Example playlists/default.json:

json
{ "repeat": true, "shuffle": false, "entries": ["show1.fseq", "show2.fseq"] }

Default Pin Assignments

FunctionGPIO
I2S BCLK26
I2S LRCLK25
I2S DATA22
OLED SDA / RTC SDA7
OLED SCL / RTC SCL8
Ethernet PHY addr1
Ethernet MDC31
Ethernet MDIO52
Ethernet power51

All pins are configurable via the web UI.

Web UI Endpoints

PathDescription
/Dashboard — playback status, play/stop
/config.htmlDevice settings (network, audio, RTC, hostname)
/outputs.htmlE1.31 and DDP output configuration
/sequences.htmlBrowse and play sequences from SD
/playlists.htmlManage playlists
/schedule.htmlTime-based schedule editor
/ota.htmlOTA firmware update
/api/statusJSON playback status (also pushed via WebSocket /ws)

License

CC BY-NC 4.0 — free for personal and non-commercial use; commercial use is not permitted.

First Boot

  1. Connect to the SB-Player WiFi AP (password sbplayer)
  2. Open http://192.168.4.1 in a browser
  3. Configure Ethernet, NTP timezone, output universes, and I2S pins
  4. Copy sequences to the SD card and create a playlist
  5. Add a schedule entry or play sequences manually from the UI

Parts

11
QtyValueFootprintReferences
24.7KResistor_SMD:R_0603_1608MetricR1, R2
110uFCapacitor_SMD:C_0805_2012MetricC1
11kResistor_SMD:R_0603_1608MetricR3
132.768kHzjlc:FC-135R_L3.2-W1.5Y1
1Conn_02x12_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x13_P2.54mm_VerticalJ1
1MY-1220-03jlc:BAT-SMD_MY-1220-03U2
1OLEDConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ2
1PCF8523TPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU3
1PCM5102AConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ4
1UDA1334AConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ3

Questions

How big is the ESP32-P4 OLED PCB?

It measures 29 × 34.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ESP32-P4 OLED use?

11 parts, built around the MY-1220-03, PCF8523T and PCM5102APW. 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 ESP32-P4 OLED KiCad files?

From the computergeek1507/sb_player_esp repository on GitHub, at the commit this page was made from: the board is hardware/ESP32-P4_OLED.kicad_pcb and its schematic hardware/ESP32-P4_OLED.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the ESP32-P4 OLED design in my own project?

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

Similar boards

  • 4 layers88 × 94.5 mmFC V5e Production Rev1, the printed circuit board in 3D

    FC V5e Production Rev1

    proveskit/flight_controller_board

    The main flight computer board for the PROVES Kit.

    259 parts6CERN-OHL-W-2.0
  • 2 layers19 × 106 mmPetRockMain1, the printed circuit board in 3D

    PetRockMain1

    jsenzel1/petrock

    Eurorack components and footprints for KiCad.

    117 parts48
  • 2 layers158 × 85 mmPiPLC Mainboard, the printed circuit board in 3D

    PiPLC Mainboard

    Chrismettal/PiPLC

    Glorified breakout board + DIN rail case for Pis

    154 parts19
  • 2 layers36 × 29.3 mmBle mvp 1b rev0, the printed circuit board in 3D

    Ble mvp 1b rev0

    saewoonam/ble_adv_covid

    Repo to implement the advertise and scanner portion for bluetooth to enable encounter/exposure tracing (e.g. Apple/Google / TCN / etc...) on a nRF52840 based battery powered dongle/device

    71 parts10
  • 2 layers115 × 100 mmCog1, the printed circuit board in 3D

    Cog1

    diegodemarco/cog1

    cog1 is an open-source industrial IoT gateway (hardware and software) built as a motherboard hosting an Orange Pi Zero 3 Linux SBC.

    133 parts6MIT
  • 2 layers104 × 43.3 mmSerial snooper, the printed circuit board in 3D

    Serial snooper

    can-caglar/Data-Logger-STM32

    The Serial Snooper is a UART data logger with automatic baud rate detection, real-time data stamping and a command-line-interface for configuration, running on an STM32F3 microcontroller.

    101 parts4
  • 2 layers49.5 × 106 mmSupra board, the printed circuit board in 3D

    Supra board

    jsenzel1/supra

    is multimode Eurorack module with 4 different experiments in long term time. you can run up to 2 modes at once. use the 4 way joystick and buttons to interact with the modes on the oled

    119 parts4
  • 2 layers48.3 × 123.8 mmAltimeter v2, the printed circuit board in 3D

    Altimeter v2

    pimbongaerts/altimeter

    Underwater sonar/USBL interface for photogrammetry surveys. PCB design files and Arduino code.

    74 parts4