

Radio Speaker
Custom radio combined with a speaker.
- Size
- 73.2 × 39 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 25
- Nets
- 32
- Pads
- 95
- Tracks, vias
- 141, 1
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 12 Sep 2026
- Updated
- 25 Sep 2026
Overview
Radio Speaker is an open-source printed circuit board by Jacube1234, from the Jacube1234/Static-Speaker repository on GitHub. It is a 2-layer board of 73.2 × 39 mm with 25 parts on 32 nets, routed with 141 tracks and 1 via.
It is built around the TDA2822NBD and PJ-3200. Its parts include 6 resistors, 5 capacitors, 4 ICs, 3 connectors and 1 switch. It belongs with the radio and wireless and audio and music boards and the RP2040 boards of this library.
Main components
2README
README.mdStatic-Speaker
This is my custom radio combined with a speaker designed for the YSWS Static I chose this project to upgrade the standard kit by integrating an M18 Bluetooth module alongside the original RDA5807 FM radio chip, transforming it into a permanent Bluetooth speaker for my bedroom while keeping the physical over-the-air FM radio chip!
Features:
- Bluetooth audio streaming directly from a phone
- Over-the-air local FM Radio playback
- One physical push-button to switch modes
- Dual analog potentiometers for volume control
CAD Model:
PCB
Schematic

Layout

PCB

Firmware Overview
Runs on CircuitPython using an RDA5807 library wrapper. A code.py script handles I2C tuning for the FM radio, manages the M18 module's mute line via pin A3 (BT_MUTE), and toggles between Bluetooth and FM sources using a push button (SW1).
File structure
There's 3 main folders: Firmware, PCB, and Production. The PCB folder contains .kicad_pcb, .kicad_pro, and .kicad_sch. The Firmware folder contains files for the Seeed Xiao code. The production folder will have files for the PCB printing.
BOM (Bill of Materials):
Here should be everything you need to make this speaker Most things should be what static sends you except the bluetooth module.
- 1x Seeed Studio XIAO RP2040
- 1x MH-M18 Bluetooth Audio Module
- 1x RDA5807FP FM Radio Tuner Chip
- 1x TDA2822 Audio Amplifier Chip
- 1x WH148 10kΩ Potentiometer
- 4x 1kΩ Resistors
- 1x 3.5mm Jack (for FM Radio Antenna)
- 2x 10uF Capacitors
- 2x 100uF Capacitors
- 2x 30mm Speakers
- 1x 12mm Momentary Push Button Mode switch
- Hookup wire (for off-board connections)
- 1x Custom PCB
Software
- Kicad recommended to view the Gerber files or the general
.pcb.pro.schfiles - Thonny or VSCode for programming the board.
Tools:
- Soldering Iron
- Solder
How to build/replicate
- Gather Parts: Get everything that is on the BOM.
- Solder the PCB: Solder all components onto your custom PCB using a soldering iron.
- Print & Mount Case: 3D print your enclosure design, then mechanically secure and screw the potentiometers (
RV1/RV2) and push button (SW1) into place. - Wire Peripherals: Wire your speakers to
J1andJ2, and plug a cable into the 3.5mm jack (CN1) to serve as the FM antenna. - Flash Firmware: Install CircuitPython onto your Seeed XIAO RP2040.
- Add Code Files: Copy the
RDA5807.pylibrary and yourcode.pyscript directly onto the board'sCIRCUITPYdrive. - Power Up & Test: Connect USB power (+5V). Pair your phone via Bluetooth to the M18 module or press the push button (
SW1) to switch over to FM radio mode. - Enjoy: Adjust your volume knobs and enjoy your custom speaker!
Extra stuff
In Hackpad style - Hi guys
Bye guys
Parts
25| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 1K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R3, R4, R5, R6 |
| 4 | MountingHole | MountingHole:MountingHole_2.5mm | H1, H2, H3, H4 |
| 3 | 100uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C1, C2, C3 |
| 2 | 10K | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | RV1, RV2 |
| 2 | 10K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R2 |
| 2 | 470uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C4, C5 |
| 1 | L_SPK | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | PJ-3200 | Static:AUDIO-TH_PJ-3200 | CN1 |
| 1 | RDA5807MRRD-102V2.0 | Static:RDA5807 | U1 |
| 1 | R_SPK | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J1 |
| 1 | SW_Push | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | SW1 |
| 1 | TDA2822NBD | Package_DIP:DIP-8_W7.62mm | U3 |
| 1 | XIAO-RP2040-DIP | Static:XIAO-RP2040-DIP | U2 |
| 1 | m18 | Static:m18 | U4 |
Similar boards
- 2 layers40 × 55.5 mm

- 2 layers80 × 35 mm

Radio Tutorial
Outdatedcandy92/Radio-Tutorial
An FM receiver board built around the RDA5807 module. It includes a Seeed Xiao RP2040 to control the RDA5807 over I2C.
20 parts - 4 layers50 × 87 mm

EnergyMe Home
jibrilsharafi/EnergyMe-Home
Smart energy meter capable of monitoring up to 16 channels. Supports MQTT, REST API, Modbus TCP, InfluxDB, AWS IoT Core. Friendly UI and fully open source (PCB, schematics, components, source code)
87 parts288GPL-3.0 - 2 layers40 × 56 mm

Core v2-rounded
OpenShock/Hardware
KiCAD files for PCBs for transmitters and other hardware for OpenShock.
91 parts15CERN-OHL-S-2.0 - 2 layers60 × 68.7 mm

- 2 layers20.6 × 28 mm

- 2 layers20.6 × 28 mm

SoundDropMiniUNIT
akita11/SoundDropMiniUNIT
PC接続時に現れるドライブ内の"config.txt"で、以下の機能を指定できます。 設定情報は、config.txtの1行目に、以下の7桁の数値を記載します(それ以降は無視される)。 - 1文字目: ボタンの動作。0=再生中に中断可、1=再生中に中断不可、2=リピート再生1、3=リピート再生2、4=ON/OFF、5=常時リピート再生 - 2-3文字目: 音量(00-30) - 4文字目…
16 parts - 4 layers88.9 × 88.9 mm

Questions
How big is the Radio Speaker PCB?
It measures 73.2 × 39 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Radio Speaker use?
25 parts, built around the TDA2822NBD and PJ-3200. 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 Radio Speaker KiCad files?
From the Jacube1234/Static-Speaker repository on GitHub, at the commit this page was made from: the board is PCB/Radio-Speaker.kicad_pcb and its schematic PCB/Radio-Speaker.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Radio Speaker design in my own project?
Its repository states no licence, so its author keeps all rights: ask Jacube1234 before reusing the design.