Single-chip FM stereo receiver — RDA5807M tuner, ATmega328P control, OLED display. Circuit reference and full bill of materials.
Wren R1 is a minimal single-chip FM broadcast receiver. The RDA5807M does essentially all of the RF work internally — synthesizer, IF chain, stereo decode, and even a digital volume/mute stage — so the rest of the circuit is just an MCU to drive it over I2C, a small display for frequency/station info, basic transport controls, an audio amp for a built-in speaker, and battery power.
The one detail worth calling out up front: the audio signal itself does not pass through the MCU. The tuner's analog L/R line outputs feed the amplifier and headphone jack directly — the MCU only ever talks to the tuner over I2C to change frequency, volume, or band, never touching the audio path. See the bypass line in the diagram below.
MCU as a thin control hub over I2C/GPIO; the analog audio path runs tuner → amp directly, bypassing the MCU entirely.
Interface and function of each block, plus the passive support components each IC needs to run per its datasheet reference design.
| Block | Function | Interface | Notes |
|---|---|---|---|
| RDA5807M tuner board | FM synthesizer, IF chain, stereo decode, RDS decode | STEMMA QT / I2C (addr 0x10/0x11) | Bare IC isn't stocked by Mouser/DigiKey — sourced as an assembled breakout with crystal and decoupling already onboard, see §04 |
| Antenna lead | RF pickup, 76–108MHz band | ANT pad | ~75cm unshielded wire (¼λ @ 100MHz) or the headphone cable itself |
| Block | Function | Interface | Notes |
|---|---|---|---|
| ATmega328P | Reads controls, drives display, sets tuner registers | I2C master, GPIO | 8MHz internal or 16MHz crystal; 3.3V core |
| 16MHz crystal + 2×22pF | MCU clock reference | XTAL1/XTAL2 | Skip if running the internal 8MHz RC oscillator instead |
| SSD1306 OLED module | Frequency, RDS text, signal/battery status | I2C (addr 0x3C), shares bus with tuner | 128×64, ~15mA typical mixed content |
| 4.7kΩ pull-ups ×2 | I2C bus termination | SDA/SCL | Omit if the tuner or OLED module already carries its own bus pull-ups |
| Rotary encoder (EC11) | Tune / volume, push = mode select | GPIO, 2× interrupt pins + button | Software-debounced |
| Tactile buttons ×3 | Preset seek, band select, mute | GPIO, pull-up + debounce | — |
| Block | Function | Interface | Notes |
|---|---|---|---|
| PAM8403 | Stereo class-D amplification for the speakers | Analog in (from tuner LOUT/ROUT), SD pin from MCU | SD (shutdown) pin tied to a GPIO, not always-on |
| 1µF coupling caps ×2 | AC-couple tuner output into the amp inputs | Analog | Blocks tuner's DC bias from the amp inputs |
| 3.5mm TRS jack | Direct line-level headphone output | Analog, wired straight to tuner LOUT/ROUT | Onboard switch contacts feed a GPIO for plug-detect |
| Block | Function | Interface | Notes |
|---|---|---|---|
| MCP73831 charger IC | Li-ion/LiPo charge management from USB-C | I2C n/a — standalone analog charger | Real Mouser/DigiKey stand-in for the hobbyist TP4056 module, which isn't distributor-stocked |
| LDO regulator | Battery (3.0–4.2V) → clean 3.3V system rail | Linear reg. | MCP1700-3302, TO-92 |
| LiPo cell, 1200mAh | Main power source | Power rail, JST-PH | Protected pouch cell — closest real distributor-stocked capacity to the original 1000mAh target |
| Slide power switch | Hard cutoff between battery and regulator | Mechanical, in-line with battery + | True off — no standby draw |
Real single-unit (qty 1) pricing pulled from live Mouser/DigiKey listings on 2026-09-03, not engineering estimates. Where a part in the original design isn't stocked by either distributor, it's substituted with the closest real distributor-available equivalent — noted per line. A bare number in the P/N column is DigiKey's product catalog ID (paste as digikey.com/en/products/detail/…/<id>, or search the manufacturer part number directly) rather than the formatted cut-tape order code — this doc only lists an order code where one was directly confirmed.
| Component | Distributor P/N | Qty | Unit Cost |
|---|---|---|---|
| ATmega328P-AU | DigiKey ATMEGA328P-AU-ND | 1 | $2.66 |
| 16MHz crystal, Abracon ABLS-16.000MHZ-B4-T | DigiKey 535-10226-1-ND | 1 | $0.24 |
| 22pF NP0 cap, Yageo CC0805JRNPO9BN220 | DigiKey 311-1103-1-ND | 2 | $0.24 |
| 10kΩ resistor, Yageo RC0805FR-0710KL | DigiKey 727535 | 1 | $0.10 |
| 100nF cap, Kemet C0805C104K5RACTU | DigiKey 411169 | 2 | $0.32 |
| Compute & Control subtotal | $3.56 | ||
| FM tuner board — RDA5807M (Adafruit ScoutMakes, STEMMA QT) | DigiKey 5651 (Adafruit Industries) | 1 | $24.95 |
| Antenna wire lead, 75cm | generic hookup wire, not a distributor SKU | 1 | $0.10 |
| 4.7kΩ I2C pull-up, Panasonic ERJ-6ENF4701V | DigiKey 954352 | 2 | $0.24 |
| RF / Tuner subtotal | $25.29 | ||
| PAM8403DR-H class-D amp IC | DigiKey PAM8403DR-HDICT-ND | 1 | $0.90 |
| Speaker, 8Ω 1W, CUI/Same Sky CMS-15113-078SP-67 | DigiKey 9561103 | 2 | $5.98 |
| 3.5mm TRS jack w/ switch, CUI SJ1-3525N | DigiKey 738687 | 1 | $1.23 |
| 1µF cap, Murata GRM21BR71C105KA01L | DigiKey 490-1691-1-ND | 2 | $0.28 |
| Audio subtotal | $8.39 | ||
| OLED module, SSD1306 128×64, Adafruit 326 | DigiKey 5353680 | 1 | $17.50 |
| Rotary encoder w/ push, Bourns PEC11R-4215F-S0024 | DigiKey PEC11R-4215F-S0024-ND | 1 | $2.95 |
| Tactile button, Panasonic EVQ-P7A01P | DigiKey P16763CT-ND | 3 | $0.84 |
| Display & Input subtotal | $21.29 | ||
| MCP73831T-2ACI/OT charger IC | DigiKey 964301 | 1 | $0.76 |
| MCP1700-3302E/TO LDO, 3.3V | DigiKey MCP1700-3302E-TO-ND | 1 | $0.50 |
| LiPo cell, 1200mAh, Adafruit 258 | DigiKey 5054544 | 1 | $9.95 |
| USB-C connector, GCT USB4085-GF-A | DigiKey 9859662 | 1 | $0.91 |
| Slide switch, C&K OS102011MA1QN1 | DigiKey 1981430 | 1 | $0.65 |
| Power subtotal | $12.77 | ||
| 2-layer PCB + SMT assembly | fab-house quote (JLCPCB/PCBWay), not a distributor SKU | 1 | $4.00 |
| Enclosure (3D-print / low-vol injection) | local fab/vendor quote, not a distributor SKU | 1 | $3.00 |
| Mechanical subtotal | $7.00 | ||
| Total, real BOM per unit (Mouser/DigiKey, qty 1) | ~$78.30 |
Currents estimated at the 3.3V system rail; runtime assumes the Adafruit 258 1200mAh LiPo cell (§04) with ~90% conversion efficiency through the LDO (≈1,140mAh effective at the 3.3V rail).
| Profile | MCU | Tuner | OLED | Amp + speaker | Total | Runtime |
|---|---|---|---|---|---|---|
| Speaker playback | 5 mA | 15 mA | 15 mA | 60 mA | 100 mA | ~11.4 hrs |
| Headphones (amp off) | 5 mA | 15 mA | 15 mA | 0 mA | 40 mA | ~28.5 hrs |
| Topic | Note |
|---|---|
| Band selection | RDA5807M's band (US/Europe 87–108MHz, Japan 76–91MHz, world 76–108MHz) and channel spacing are set by I2C register, not hardware — firmware-selectable, no BOM impact |
| Antenna | A ¼-wave wire at 100MHz is ~75cm; the classic low-cost approach is wiring the headphone cable itself as the antenna, with a short flying lead as a fallback for speaker-only use |
| RDS | The RDA5807M decodes RDS/RBDS (station name, radiotext) in hardware — not required for a v1 build, but the OLED + I2C plumbing to show it is already in place |
| Volume control | Handled digitally inside the tuner IC via I2C (16 steps) — no physical volume potentiometer needed in the audio path |
| True power-off | The slide switch cuts the battery from the regulator entirely; no quiescent draw when off, at the cost of losing station presets stored only in MCU RAM (write presets to EEPROM if that matters) |