Leistungsstarker FM-Radio-Empfänger mit Arduino & TEA5767
Benötigte Komponenten
| Komponente | Menge |
|---|---|
| Arduino Nano (oder Micro) | 1 |
| TEA5767 FM-Radio-Modul (I²C) | 1 |
| Nokia 5110 LCD (PCD8544, 84×48 px) | 1 |
| 10 kΩ Potentiometer (Frequenzwahl) | 1 |
| LM386 Audioverstärker-Modul | 1 |
| 3 W Lautsprecher | 1 |
| Großes Steckbrett & Jumper-Kabel | 1 Set |
| Audiokabel (3,5 mm Klinkenstecker) | 1 |
| 330 µF Elektrolytkondensator (optional, gegen Rauschen) | 1 |
| Powerbank (5 V Versorgung) | 1 |
Über dieses Projekt
Wir bauen einen funktionsfähigen FM-Radio-Empfänger auf dem Steckbrett. Das TEA5767-Modul übernimmt den Empfang (I²C-Steuerung), der Arduino Nano liest den Frequenzwunsch per Potentiometer ein, zeigt Frequenz, Signalstärke und Stereo-Status auf dem Nokia 5110 Display an. Das Audiosignal wird per Potentiometer in der Lautstärke geregelt, dann vom LM386 verstärkt und am Lautsprecher ausgegeben. Gesamtkosten ca. 15 $.
Hardware-Aufbau
- TEA5767: SCL → A5, SDA → A4 (I²C), Audio-Out → Audiokabel → Lautstärke-Poti → LM386 Input.
- LM386: Input vom Poti-Mittelabgriff, GND gemeinsam, VCC 5 V, Output an Lautsprecher. Gain-Poti am LM386 für Verstärkung.
- Frequenz-Poti: Mittelabgriff → A0, Außen an 5 V / GND.
- Nokia 5110: RST→D12, CE→D11, DC→D10, DIN→D9, CLK→D8, VCC→3,3 V, LIGHT→GND (Hintergrundlicht an), GND→GND.
- Alle GND zusammen, alle VCC (außer Nokia 3,3 V) an 5 V.
Software
Verwendete Bibliotheken: Nokia5110_Graph (Display), TEA5767 (Radio).
Ablauf:
- Initialisierung: Radio auf Mono + Stereo-Rauschunterdrückung, Display-Splashscreen (3 s).
- Loop: Alle paar ms Potentiometer (A0) lesen, Wert auf 87,0–108,0 MHz mappen.
- Nur bei Frequenzänderung ≥ 0,1 MHz: Radio neu abstimmen, Signalstärke & Stereo-Icon lesen, Display aktualisieren.
- Entprellung durch Schwellenwert vermeidet ständiges Neuabstimmen bei Potentiometer-Rauschen.
Code-Ausschnitte
void setup() {
radio.setMonoReception();
radio.setStereoNoiseCancellingOn();
initScreen();
showSplashScreen();
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0);
int freqInt = map(val, 2, 1014, 8700, 10800); // 87,00–108,00 MHz ×100
float freq = freqInt / 100.0;
if (abs(freq - prevFreq) >= 0.1) {
lcd.clrScr();
radio.selectFrequency(freq);
printSignalStrength();
printStereo();
printFrequency(freq);
prevFreq = freq;
}
}
Vollständiger Code: Projekt-Webseite (ZIP-Download).
Ausblick & Verbesserungen
- Bessere Audioqualität: anderer Verstärker (z. B. PAM8403), bessere Lautsprecher
- Platinenlayout statt Steckbrett
- 3D-gedrucktes Retro-Gehäuse
- Feinabstimmung (Fine-Tune) für besseren Empfang
- Stromsparmodi für Batteriebetrieb (aktuell ~50 mA ohne Backlight)
Herstellungsprozess
- Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
- WLAN-Internetradio mit Raspberry Pi & Arduino bauen: Weltweite Sender streamen
- Arduino Iron Man bauen: Komponenten, Sensoren & Schritt-für-Schritt-Anleitung
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Funktionaler 3D-gedruckter Roboterarm mit Arduino – Schritt-für-Schritt-Anleitung
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Kompaktes FM-Radio mit Arduino Nano und RDA5807M selbst bauen
- NeoPixel-Matrix Pong auf Arduino Nano: Neon-Pong selbst bauen
- DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau
- Arduino 101: Schrittzähler (Pedometer) mit DHT11 & LCD-Display