Allband-Radio mit Si4730 & Arduino Nano – LW, MW, KW, FM
Komponenten und Zubehör
| Komponente | Anzahl |
|---|---|
| Arduino Nano R3 | 1 |
| Si4730 Radio-Modul (Breakout-Board) | 1 |
| LCD 16×2 (weiß auf blau) | 1 |
| Drehencoder mit Taster | 1 |
| Class-D Audioverstärker (PAM8403, 2×3 W) | 1 |
| Lautsprecher 0,25 W, 8 Ω | 1 |
| Ferritstabantenne (aus altem MW-Radio) | 1 |
| Schiebeschalter | 1 |
Benötigte Werkzeuge
- Lötkolben
Software
- Arduino IDE
Projektbeschreibung
Wenn man an Arduino-Radio denkt, kommt meist nur UKW (88–108 MHz) in den Sinn. Dieses Gerät deckt jedoch LW (Langwelle), MW (Mittelwelle), KW (Kurzwelle) und FM ab. Kurzwelle (3–30 MHz) ermöglicht durch Ionosphärenreflexion weltweiten Empfang.
Das Herz ist der Si4730 von Silicon Labs (als günstiges Breakout-Board erhältlich). Obwohl das Datenblatt nur AM/FM angibt, funktioniert der Chip auch im KW-Bereich. Gesteuert wird per I2C. Die Firmware basiert auf der Si4735-I2C-R4-Bibliothek von Julio C. Rosa.
Hardware-Details
- Audio-Ausgang: PAM8403 Class-D Mini-Verstärker (sehr günstig, gute Qualität).
- Gehäuse: Passendes Gehäuse für kompaktes Weltbandradio.
- Antenne: 10 m Drahtantenne (Empfang in dicht besiedeltem Erdgeschoss noch schwach, aber mit Taschenradios vergleichbar).
- Ferritstab für MW/LW-Empfang.
Bemerkenswert
Der Si4730/35-Chip wird in vielen Markenportableradios (TECSUN, DEGEN, SANGEAN u. a.) verbaut.
Code (Auszug)
Der Sketch nutzt Si4735.h, LiquidCrystal.h, rotary.h und Wire.h. Wichtige Funktionen:
- Bandwahl per Taster (15 Presets: LW1, MW1/2, SW0–9, CB, FM1)
- Frequenzänderung per Drehencoder (Interrupt-gesteuert)
- S-Meter (RSSI in dBu) und SNR (dB) Anzeige auf LCD
- AM-spezifische Einstellungen: Soft-Mute aus, AVC Max Gain
// Bibliotheken
#include
#include
#include
#include "Wire.h"
// I/O
Rotary r = Rotary(2, 3);
LiquidCrystal lcd(12, 13, 7, 6, 5, 4);
const byte band = A0;
// Variablen
unsigned int freq = 880, freqmax = 10800, freqmin = 50, fstep = 10, freqold;
unsigned int buttonstate, count = 15;
Si4735 radio;
void setup() {
lcd.begin(16, 2);
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
sei();
pinMode(band, INPUT_PULLUP);
radio.begin();
radio.setMode(AM);
command_am();
radio.tuneFrequency(freq);
// LCD-Initialisierung...
}
ISR(PCINT2_vect) { /* Encoder auswerten */ }
void loop() {
if (freqold != freq) { tune(); }
freqold = freq;
// LCD-Anzeige Frequenz
buttonstate = digitalRead(band);
if (buttonstate == LOW) { inc_preset(); while(digitalRead(band)==0); }
// S-Meter Anzeige
RSQMetrics rsq; radio.getRSQ(&rsq);
lcd.setCursor(0,2); lcd.print("dBu: "); lcd.print(rsq.RSSI);
lcd.setCursor(9,2); lcd.print("dB: "); lcd.print(rsq.SNR);
}
void inc_preset() { count++; if(count>15) count=1; bandpresets(); delay(100); }
void bandpresets() { /* 15 Cases für LW/MW/SW/FM Presets */ }
void tune() { radio.tuneFrequency(freq); }
void command_am() {
radio.setProperty(PROP_AM_SOFT_MUTE_MAX_ATTENUATION, 0);
radio.setProperty(PROP_AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN, 0x3A98);
}
Bibliotheken & Schaltplan
Bibliotheken (Si4735, rotary) als Download. Schaltplan im Originalprojekt verlinkt.
Herstellungsprozess
- Kristall‑ und Transistorradio‑Schaltungen: Vom einfachen Detektor zum integrierten AM/FM‑Empfänger
- Entwicklung und Technik der Radiotechnologie
- Die Evolution und Produktion von Gummibändern
- DIY Thermocam: Vom Klassenraum-Idee zum globalen Produkt
- DIY UVC-Sterilisator-Bausatz – Günstige, einfach zu bauende UV-Box für Medizin & Alltag
- WLAN-Internetradio mit Raspberry Pi & Arduino bauen: Weltweite Sender streamen
- JX Wave Generator – Arduino-kompatibler DDS-Oszillator mit OLED-Display
- DIY VR-Skateboard mit Arduino, Google Cardboard und Bluetooth bauen
- Wasserdichtes Duschradio mit Arduino Nano, RDA5807, Nokia 5110 LCD & PAM8403
- Vertikale Bandsäge: Zweck, Eigenschaften und Anwendungen