Ein Selbstbau-UKW-Radio

In teilweiser Übereinstimmung mit dem mp3-Player lässt sich auch ein UKW-Radio realisieren. Benötigt wird dazu ein UKW-Empfangsmodul, beispielsweise einen „Grove I2C FM Receiver“ oder einem „TEA5767 Radio Modul“.

Auf den Boards werden zur Tonabnahme 3,5 mm Klinkenbuchsen und zum Anschluss an einen Arduino vier Kontaktstifte (GND, VCC, SDA und SCL) vorgehalten. Während die Klinkenbuchsen zu üblichen Klinkensteckern kompatibel sind, können die Kontakte am Grove-Modul problemlos nur mit einem spezifischen Stecker abgegriffen werden, der deshalb beim Kauf eines Moduls mitgeliefert wird. Die Anschlüsse sind sonst gleich:

GND wird mit GND und VCC mit 5V, SDA mit A4 und SCL mit A5 am Arduino verbunden.

Mit der Bibliothek „TEA5767Radio“ (Download) und dem mitgelieferten Programm „SimpleFixedFrequency“ sind die Module sofort einsatzbereit.

Der Ton kann über Kopfhörer oder Aktivboxen ausgegeben und mithilfe von 3,5mm Klinkenstecker abgegriffen werden. Aktivboxen haben dabei den Vorteil, dass an ihnen die Lautstärke geregelt werden kann.

Was fehlt, ist eine Anzeige der ausgewählten Frequenz und die Möglichkeit, zwischen den Frequenzbereichen hin und her zu wechseln.

Eine solche Anzeige lässt sich beispielsweise mit einem LCD-Display mit I2C-Interface realisieren, das auf die gleiche Weise wie das Radio-Modul mit dem Arduino verbunden wird.

Zur Senderwahl eignen sich – wie in den vorherigen Kapiteln bei den Playern – Taster, mit denen das verfügbare Frequenzband in definierten Schritten in der einen oder der anderen Richtung durchsucht werden kann.

Die beiden Taster sind an der einen Seite über 10 kOhm Widerstände mit GND und auf der anderen sowohl mit 5V als auch den Pins A0 und A1 am Arduino verbunden.

Wer auf Kopfhörer Aktivboxen verzichten will, kann hier das beim mp3-Player im vorigen Kapitel beschriebene Verstärkermodul verwenden, an dem ein Klinkenstecker angebracht werden muss. Oft findet sich ein solcher im Haushalt an einem unbenutzten Ohrhörer oder einem Verlängerungskabel.

Bei einem einfachen Stecker sind im Innern des Kabels ist ein roter und ein weißer Strang sowie eine blanke Kupferlitze verborgen. Rot und Weiß werden an „L“ und „R“ am Verstärkermodul angeschlossen, die blanke Kupferlitze an „G“.

Hier der komplette Aufbau:

Der nachfolgende Programmcode eignet sich sowohl für das Grove- als auch das TEA5767-Modul:

include<Wire.h>
#include <TEA5767Radio.h>
#include <LiquidCrystal_I2C.h>

TEA5767Radio radio = TEA5767Radio();
LiquidCrystal_I2C lcd(0x27, 20, 4);
float Frequenz = 0;
int rauf = A0;
int runter = A1;
int count = 0;

void setup() {
  delay(1000);
  Wire.begin();
  Frequenz = 94.70; //voreingestellte Frequenz
  radio.setFrequency(Frequenz);
  lcd.begin();
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(" UKW");
  lcd.setCursor(0, 1);
  lcd.print(Frequenz);
}
void loop() {
  if (digitalRead(rauf)) {
    count = 0;
    while (digitalRead(rauf)) {
      count++;
      if (count > 0 && count <= 6) {
        Frequenz += 0.1;
        Update();
        delay(200);
      }
      else if (count > 6 && count <= 2) {
        Frequenz += 0.1;
        Update();
        delay(80);
      }
      else {
        Frequenz += 0.1;
        Update();
        delay(5);
      }
    }
  }
  if (digitalRead(runter)) {
    count = 0;
    while (digitalRead(runter)) {
      count--;
      if (count < 0 && count >= -6) {
        Frequenz -= 0.1;
        Update();
        delay(200);
      }
      else if (count < -6 && count >= -2) {
        Frequenz -= 0.1;
        Update();
        delay(80);
      }
      else {
        Frequenz -= 0.1;
        Update();
        delay(5);
      }
    }
  }
}
void Update() { //Diese Funktion definiert den Frenquenzbereich und passt die LCD-Anzeige an
  Frequenz = constrain(Frequenz, 88.0, 108.0);
  lcd.setCursor(0, 0);
  lcd.print(" UKW");
  lcd.setCursor(0, 1);
  lcd.print(Frequenz);
  radio.setFrequency(Frequenz);
}

Nächstes Kapitel >>>>