The problem
An FM radio receiver is a classic electronics project, but a truly informative one teaches digital tuning rather than a manual potentiometer. The TEA5767 is a single-chip FM tuner that tunes the entire 87.5–108 MHz broadcast band under software control via an I2C PLL, with built-in stereo decoding, signal-level indication and automatic frequency control. Most student builds stop at fixed wiring with no understanding of how the tuning words are computed — they cannot explain what happens when they turn the knob. This project closes that gap: an Arduino Nano computes the PLL words, drives a rotary encoder with interrupt-safe decoding, saves favorite stations to EEPROM presets, and renders frequency, signal strength and stereo status on a 16x2 LCD. Audio comes out through a PAM8403 class-D amplifier into a 3W speaker. Because every subsystem (RF tuning, digital control, user interface, audio power) is built in the open with datasheet-backed design, the student can genuinely explain each block in the viva.
Telescopic antenna feeding 87.5-108 MHz broadcast signals to the tuner.
Follow the working sequence
How it works
- The telescopic antenna feeds broadcast FM signals (87.5–108 MHz) into the TEA5767 module's RF front end.
- The Arduino Nano writes 5-byte PLL tuning words to the TEA5767 over I2C (address 0x60), setting the frequency in 100 kHz steps; the chip's 225 kHz IF and stereo decoder produce left/right audio plus a signal-level reading.
- Rotating the EC11 encoder fires interrupts that the firmware decodes into frequency up/down commands; each step retunes the PLL immediately and updates the LCD.
- Pressing the encoder saves the current frequency into one of 8 preset slots in the ATmega328P's EEPROM, surviving power cycles; the next preset recall tunes directly.
- The firmware reads the TEA5767's signal-level indicator and renders a bar on the 16x2 LCD alongside the frequency and the stereo/mono status flag.
- The tuner's stereo line output feeds the PAM8403 class-D amplifier, which drives the 3W 8-ohm speaker; volume is fixed in firmware at a classroom-appropriate level.
Tech stack:
- TEA5767 FM tuner module
- Arduino Nano (ATmega328P)
- 16x2 character LCD with I2C backpack (PCF8574)
- EC11 rotary encoder with push button
- PAM8403 class-D audio amplifier module
- 3W 8-ohm speaker
- Telescopic whip antenna
- Arduino C++ with Wire (I2C) library
| Parameter | Value |
|---|---|
| Tuning range | 87.5–108 MHz broadcast FM (chip range 76–108 MHz, TEA5767 datasheet) |
| Tuning step | 100 kHz (design target; chip also supports 50 kHz steps) |
| IF frequency | 225 kHz (TEA5767 datasheet) |
| Supply voltage | 5 V via USB (TEA5767 accepts 2.5–5 V, datasheet) |
| Tuner current draw | Approximately 12 mA typical (TEA5767 datasheet) |
| Sensitivity | Approximately 1.5 µV typical (TEA5767 datasheet value) |
| Stereo separation | Approximately 35 dB typical (TEA5767 datasheet value) |
| Station presets | 8 slots stored in ATmega328P EEPROM |
| Audio output | 2–3 W into 4 Ω (PAM8403 datasheet maximum); approximately 1–1.5 W typical into 8 Ω at 5 V (design target) |
| Encoder | 30-detent EC11, interrupt-decoded |
| Antenna | Approximately 20 cm telescopic whip (design target) |
| Display | 16×2 LCD via I2C (PCF8574, address 0x27 typical) |
Project features
- [Digital PLL tuning] The Arduino Nano programs the TEA5767's PLL over I2C in 100 kHz steps across the 87.5–108 MHz FM band — no manual tuning knob, every frequency change is computed in firmware.
- [Rotary encoder with presets] An EC11 rotary encoder adjusts frequency by hand; pressing it saves the current station to one of 8 EEPROM presets, and a long press recalls them — all with interrupt-based decoding for smooth response.
- [16x2 LCD status display] The frequency, preset number, signal-level bar and stereo indicator are rendered on an I2C-backed 16x2 LCD so the tuned station is always visible.
- [Stereo decoding] The TEA5767's built-in stereo decoder drives left/right audio with an on-chip stereo indicator, showing true stereo vs mono reception on the display.
- [Class-D audio amplifier] A PAM8403 amplifier module boosts the tuner's line-level output to drive a 3W 8-ohm speaker at room-filling volume on a 5V supply.
- [Telescopic antenna] A telescopic whip antenna feeds the RF front end, giving usable reception indoors in normal signal areas without an external aerial.
- [Calibration procedure] The build includes a buyer-run station-alignment and signal-check procedure so the student verifies reception quality during assembly rather than trusting claimed numbers.
What is included
- Complete Arduino firmware (TEA5767 I2C tuning, interrupt encoder handling, EEPROM presets, LCD rendering)
- Wiring diagram with part-by-part connections
- Step-by-step tuning, preset and station-alignment procedure for the buyer to run during assembly
- Project report PDF (background, TEA5767 theory, methodology, block diagrams, expected outcomes)
- PPT presentation for final review
- Viva Q&A preparation document (PLL tuning, I2C, stereo decoding, class-D amplification, EEPROM)
Limitations & prerequisites
- Reception depends on local signal strength — in weak-signal areas an outdoor or extended antenna is needed; the 20 cm whip is a design target for normal urban coverage, not a measured guarantee.
- The TEA5767 is a single-chip consumer tuner, so adjacent-channel selectivity is limited; a strong nearby station can mask a weaker one a few hundred kHz away.
- Stereo separation is approximately 35 dB (datasheet) — fine for demonstration, not hi-fi grade.
- The chip does not decode RDS/RBDS, so no station names or text appear on the display — frequency, presets and signal level only.
- The stated audio power is a design target from the PAM8403 datasheet, not a measured figure; final loudness is verified by the buyer during assembly.
- Covers the standard FM broadcast band only; AM/SW reception is outside the chip's scope.
- Designed for bench/USB 5 V operation — no battery-management or low-power sleep design is included.
Frequently Asked Questions
How does the Arduino actually tune the radio?
The Nano computes PLL tuning words and writes them over I2C (address 0x60) to the TEA5767 in 100 kHz steps. Turning the rotary encoder triggers interrupts that the firmware decodes into up/down commands, and each command retunes the chip instantly and refreshes the LCD frequency readout.
What do the station presets do?
Pressing the encoder saves the current frequency into one of 8 preset slots stored in the ATmega328P's EEPROM, so the stations survive power cycles. A recall action tunes the TEA5767 straight to the saved frequency — useful for jumping between favorite stations during the demo.
Does it receive stereo?
Yes. The TEA5767 includes a stereo decoder, and the firmware reads the chip's stereo indicator to show STEREO or MONO on the 16x2 LCD. Stereo separation is approximately 35 dB per the datasheet — good for demonstration, not hi-fi.
Can it show RDS station names?
No. The TEA5767 does not decode RDS/RBDS data, so station names and text are outside this build. The display shows frequency, preset number, signal-level bar and stereo status — a clean, honest scope that matches the chip's capability.
Will it pick up stations indoors?
In normal urban signal areas the telescopic whip antenna gives usable reception indoors. In weak-signal locations — deep indoors, fringe rural areas — an outdoor or extended antenna may be needed; the build guide includes a reception-check procedure to verify this during assembly.
Is this project suitable for a final-year project?
Yes — for Electronics, E&TC, Electrical and IoT programs. It combines RF tuning (PLL, IF, stereo decoding), embedded I2C control, interrupt-driven input, EEPROM storage and audio amplification into one demonstrable build with clear viva questions. Suitable for B.E./B.Tech final-year projects in Electronics, Electrical and IoT.
Components & software requirements
- TEA5767 FM tuner module
- Arduino Nano (ATmega328P)
- 16x2 character LCD with I2C backpack (PCF8574)
- EC11 rotary encoder with push button
- PAM8403 class-D audio amplifier module
- 3W 8-ohm speaker
- Telescopic whip antenna
- Arduino C++ with Wire (I2C) library
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.