
Esp32s3-audio streamer
wemaxon/esp32-audio-streamer
Hardware design for a WiFi/Bluetooth audio streamer using the esp32 microcontroller and the PCM5102A DAC, intended to be used with squeezelite firmware.

A microcontroller based emulator to play original NES games over composite video (and HDMI)
MicroNES pcb v0.1 is an open-source printed circuit board by bchelf, from the bchelf/microNES repository on GitHub. It is a 4-layer board of 101.6 × 70 mm with 109 parts on 93 nets, routed with 973 tracks and 165 vias.
It is built around the W25Q128JVSIQ, AMS1117-3.3 and BAT54S, with the AV-5, PTS810SJM250SMTRLFS and ABM8-272-T3 among its other parts. Its parts include 38 resistors, 30 capacitors, 8 ICs, 6 diodes and 3 connectors. It belongs with the retro computing and games boards and the RP2350 boards of this library.
microNES is a small RP2350-based NES emulator project with custom hardware,
portable emulator code, and host-side development tools.
The repo now includes a complete KiCad implementation of an RP2350 console-style board, plus firmware for composite video, HDMI output, SD-card ROM loading, controller input, and audio. It also includes host tools for building, running, capturing, and validating the same emulator core on a desktop.
ROM images are not included.
hardware/microNES_pcb_v0.1.The project has moved beyond the original SMB1-only bring-up. The core still prioritizes pragmatic compatibility over perfect NES accuracy, but the repo now contains support for several common mapper families:
The hardware and firmware path is centered on the RP2350 board in
hardware/microNES_pcb_v0.1, with composite and HDMI firmware targets in
src/pico. The host path remains the fastest way to validate emulator behavior
before testing on hardware.
The KiCad project lives here:
hardware/microNES_pcb_v0.1/It includes:
The board is designed around harvested original NES console hardware for the user-facing controls and controller interface. It uses the original Nintendo power switch assembly and original NES controller input ports, with custom KiCad footprints made specifically for those salvaged parts.
The older breadboard composite schematic is documented in SCHEMATIC.md. The
PCB target is selected in firmware with:
-DMICRONES_BOARD=v0_1src/common/ Portable emulator core, ROM menu, mappers, CPU, PPU, APU, input
src/host/ Desktop smoke runner, SDL runner, PNG/WAV/video tooling
src/pico/ RP2350 firmware, composite, HDMI, TFT, SD, flash cache, audio
src/esp32s3/ Separate ESP32-S3 frontend/reference implementation
src/web/ Emscripten/WebAssembly browser frontend
hardware/ KiCad PCB design, production files, Gerbers, BOMs
tests/ Emulator test ROMs and menu smoke testscmake -S . -B build-host -DMICRONES_PLATFORM=host
cmake --build build-host -jThis builds:
build-host/micrones_smokebuild-host/micrones_menu_smokebuild-host/micrones when SDL3 is availableRun a ROM locally:
./build-host/micrones roms/smb1.nesRun deterministic smoke validation:
./build-host/micrones_smoke roms/smb1.nesCapture a frame or video:
./build-host/micrones_smoke roms/smb1.nes 6200000 /tmp/micrones_10s.png
./build-host/micrones_smoke roms/smb1.nes --steps 17670500 --video-out build-host/capture.mp4Configure the firmware for the emulator and the custom PCB:
cmake -S . -B build-pico \
-DMICRONES_PLATFORM=pico \
-DMICRONES_PICO_VIDEO_MODE=emulator \
-DMICRONES_BOARD=v0_1 \
-Dpicotool_DIR=/Users/bchelf/microNES/build/_deps/picotoolBuild composite output:
cmake --build build-pico --target micrones_pico_analog -jBuild HDMI output:
cmake --build build-pico --target micrones_pico_hdmi -jOther firmware targets:
cmake --build build-pico --target micrones_pico_tft -j
cmake --build build-pico --target micrones_pico_tft_max98357 -j
cmake --build build-pico --target micrones_pico_hdmi_test_pattern -jThe Pico firmware loads ROMs from SD at runtime. MICRONES_PICO_ROM_PATH is no
longer needed for normal Pico builds.
emcmake cmake -S . -B build-web -DMICRONES_PLATFORM=web
cmake --build build-web -jThe build copies src/web/index.html next to the generated JS/WASM output.
cd src/esp32s3
. $IDF_PATH/export.sh
idf.py buildFor the SDL runner:
WASD: D-padL: AK: BReturn: StartTab or right shift: SelectUseful runner options:
./build-host/micrones roms/smb1.nes --vsync
./build-host/micrones roms/smb1.nes --no-vsync --unthrottled
./build-host/micrones roms/smb1.nes --scale 5
./build-host/micrones roms/smb1.nes --dump-wav /tmp/gameplay.wav --dump-wav-seconds 2microNES is still an emulator under active development, not a fully accurate
general-purpose NES implementation.
Keep platform boundaries clean:
src/common should stay portable.src/host.src/pico.src/esp32s3.The recommended workflow is still host-first: validate behavior with
micrones_smoke and the SDL runner, then test the same core on RP2350 hardware.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 14 | 100nF | Capacitor_SMD:C_0402_1005Metric | C2, C8, C11, C12, C13, C14, C15, C16, C17, C18, C20, C27, C28, C30 |
| 9 | ~ | TestPoint:TestPoint_Pad_1.5x1.5mm | TP2, TP3, TP4, TP6, TP7, TP8, TP9, TP10, TP11 |
| 8 | 270 | Resistor_SMD:R_0603_1608Metric | R10, R26, R27, R28, R29, R30, R31, R32 |
| 6 | 10k | Resistor_SMD:R_0402_1005Metric | R15, R21, R33, R35, R36, R37 |
| 6 | 1k | Resistor_SMD:R_0402_1005Metric | R2, R3, R4, R6, R14, R16 |
| 6 | BAT54S | Package_TO_SOT_SMD:SOT-23 | D1, D2, D3, D4, D5, D6 |
| 5 | 10uF | Capacitor_SMD:C_0603_1608Metric | C1, C5, C19, C26, C29 |
| 4 | 4.7uF | Capacitor_SMD:C_0402_1005Metric | C6, C7, C9, C10 |
| 4 | MountingHole | MountingHole:MountingHole_2.7mm_M2.5 | H1, H2, H3, H4 |
| 3 | 10nF | Capacitor_SMD:C_0402_1005Metric | C22, C24, C25 |
| 2 | 0 | Resistor_SMD:R_0402_1005Metric | R38, R39 |
| 2 | 15pF | Capacitor_SMD:C_0402_1005Metric | C3, C4 |
| 2 | 27 | Resistor_SMD:R_0402_1005Metric | R7, R8 |
| 2 | 330 | Resistor_SMD:R_0402_1005Metric | R13, R40 |
| 2 | 5.1k | Resistor_SMD:R_0402_1005Metric | R11, R12 |
| 2 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2, U5 |
| 2 | AV-5 | microNES_footprints:CONN-TH_AV-5 | AV1, AV2 |
| 2 | PTS810SJM250SMTRLFS | microNES_footprints:KEY-SMD_4P-L4.2-W3.2-P2.20-LS4.6 | SW3, SW4 |
| 2 | ~ | microNES_footprints:NES_1x7_CustomPitch | U6, U7 |
| 1 | 100 | Resistor_SMD:R_0402_1005Metric | R24 |
| 1 | 100nF | Capacitor_SMD:C_0805_2012Metric | C21 |
| 1 | 100uF | Capacitor_SMD:CP_Elec_6.3x5.4 | C23 |
| 1 | 120 | Resistor_SMD:R_0402_1005Metric | R25 |
| 1 | 15 | Resistor_SMD:R_0402_1005Metric | R19 |
| 1 | 20k | Resistor_SMD:R_0402_1005Metric | R34 |
| 1 | 22 | Resistor_SMD:R_0402_1005Metric | R22 |
| 1 | 220 | Resistor_SMD:R_0402_1005Metric | R23 |
| 1 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | 3.3uH | microNES_footprints:IND-SMD_L2.0-W1.6_AOTA-B201610S3R3-101-T | L1 |
| 1 | 33 | Resistor_SMD:R_0402_1005Metric | R5 |
| 1 | 470 | Resistor_SMD:R_0402_1005Metric | R20 |
| 1 | 68 | Resistor_SMD:R_0402_1005Metric | R18 |
| 1 | 7.5 | Resistor_SMD:R_0402_1005Metric | R17 |
| 1 | ABM8-272-T3 | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | HDMI_E | Connector_Video:HDMI_A_Molex_208658-1001_Horizontal | J3 |
| 1 | RP2350_60QFN | microNES_footprints:RP2350-QFN-60-1EP_7x7_P0.4mm_EP3.4x3.4mm_ThermalVias | U1 |
| 1 | SM03B-SRSS-TB | Connector_JST:JST_SH_SM03B-SRSS-TB_1x03-1MP_P1.00mm_Horizontal | J4 |
| 1 | TF PUSH | microNES_footprints:TF-SMD_TF-PUSH | Card1 |
| 1 | TestPoint | TestPoint:TestPoint_Pad_2.0x2.0mm | TP5 |
| 1 | TestPoint | TestPoint:TestPoint_Pad_1.5x1.5mm | TP1 |
| 1 | USB_C_Receptacle_USB2.0_16P | microNES_footprints:USB-C_SMD-TYPE-C-31-M-12_1 | J1 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U3 |
| 1 | ~ | microNES_footprints:NES_Power_Reset_LED_5pin | U8 |
| 1 | ~ | Package_TO_SOT_SMD:SOT-23-6 | U4 |
The 108 most common of 109 parts.
It measures 101.6 × 70 mm and has 4 copper layers, 1.6 mm thick.
109 parts, built around the W25Q128JVSIQ, AMS1117-3.3, BAT54S and AV-5. 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.
From the bchelf/microNES repository on GitHub, at the commit this page was made from: the board is hardware/microNES_pcb_v0.1/microNES_pcb_v0.1.kicad_pcb and its schematic hardware/microNES_pcb_v0.1/microNES_pcb_v0.1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask bchelf before reusing the design.

wemaxon/esp32-audio-streamer
Hardware design for a WiFi/Bluetooth audio streamer using the esp32 microcontroller and the PCM5102A DAC, intended to be used with squeezelite firmware.



enkhbold470/kicad-projects
Five KiCad 10 boards (4- and 6-layer): ESP32-S3 industrial gateway, USB-C PD bench supply, RP2040 logic analyzer, FOC motor controller, iCE40 FPGA board.


Firestorm108/Plasma-Speakers-V2
Dual flyback transformers that produce audio through the modulation of high frequency plasma arcs.

ROAR-QUTRC/perseus-v3
The code base for the QUT Robotics Club ROAR teams rover Perseus starting 2026

Sphyrna-029/Pico-Pilot
A simple auto pilot for land/water based robots based on the Raspberry Pi rp2350B/2354B