"die Zweite" deshalb, weil ich vor einem Jahr schon mal ein solches Wiedergabegerät vorgestellt habe:
Autophon HF-TR-Wiedergabegerät E60 Umbau
bei diesem zweiten Modell ging ich einen anderen Weg zur Nutzbarkeit. Im Original werden über einen Drehschalter 6 Langwellensender eingestellt, welche über Kabel eingespeist werden. Den Drehschalter wollte ich beibehalten, allerdings mit UKW Stationen versehen. Neben dem Bedien-Charakter wollte ich auch diesmal nichts an der Optik verändern.
Der 6-stufige Drehschalter schränkte die Auswahl der Empfangsstationen sehr ein. Aber ich hatte noch einige Lorlin BCD-kodierte Drehschalter in meinem Vorrat. Die Anzahl der Schaltstufen ist bei diesen Schaltern über eine Rastscheibe bis 15 einstellbar.
Mit einem Mikroprozessor kann ich nun mit nur 4 I/O-Ports die 15 Stellungen abfragen. Da ich keine 5V-Komponenten für das Empfangsgerät benötige wählte ich einen Arduino Pro Mini in der 8MHz - 3,3V - Version aus. Der Spannungsregler ist schon onboard, so dass ich direkt mit der per Einweg gleichgerichteten Heizspannung meine Platine betreiben kann. Eine Pegelwandlung für den SI4703-Empfänger entfiel dadurch ebenfalls. Und so ist eine ganz einfache Beschaltung entstanden:
Hier bin ich noch in der Entwicklungsphase. Der Pro Mini hat keinen USB-Port, und man programmiert ihn mit einem FTDI-Adapter.
schon fast Endzustand:
diese sehr dünnen hochflexiblen Leitungen gewann ich durch das Ausschlachten einer defekten PC-Maus. Davon stammt auch der Taster. Der hat im Moment noch keine Funktion. Ich habe ihn vorgesehen um irgendwann mal ein Autotune einzuprogrammieren. So weit bin ich aber noch nicht. Also schnappte ich mir ein Digitalradio und fuhr zu einer Stelle in meiner Nähe wo guter Empfang ist. Ich notierte mir die 15 am stärksten empfangbaren UKW-Sendestationen und übertrug sie zuhause hartcodiert in meine software.
Mehr war nicht zu tun. So präsentiert sich das Gerät:
Die software ist diesmal sehr knapp gehalten. Den 4 Leitungen des Drehschalters gebe ich Wertigkeiten (1, 2, 4, 8), die mit dem Abfrageergebnis der Schalter (1 oder 0) multipliziert werden. Weil ich gegen Masse schalte sind die internen PullUp's aktiviert und ich muss die Schalterabfragen jeweils negieren. Die 4 Ergebnisse werden addiert und es entsteht ein Wert von 1 bis 15. Bei der Abfrage des arrays wird wieder eine 1 subtrahiert, weil das array nicht mit 1 sondern mit 0 beginnt.
Desweiteren habe ich noch eine Entprellung eingebaut. Erst wenn eine Wertänderung 200ms ansteht wird der Sender umgeschaltet. Das wäre wahrscheinlich nicht notwendig gewesen, aber es verhindert unnötige Frequenzumschaltungen beim zappen. Zusätzlich wird während der Verzögerung die Lautstärke auf Null reduziert, so dass keine Knackgeräusche etc. bei der Senderumschaltung entstehen.
/// Wiring
/// ------
/// The SI4703 board has to be connected by using the following connections:
/// | Arduino UNO pin | Radio chip signal |
/// | -------------------| -------------------|
/// | 3.3V (red) | VCC |
/// | GND (black) | GND |
/// | A5 or SCL (yellow) | SCLK |
/// | A4 or SDA (blue) | SDIO |
/// | D2 (white) | RST |
#define NUMBER_STATIONS 15 // Anzahl Feststationen
#include <Arduino.h>
#include <Wire.h>
#include <radio.h>
#include <Si4703_Breakout.h> //Monk
int frequency = 880; ///< The station that will be tuned by this sketch is 88.00 MHz
int volume = 0; ///< The volume that will be set by this sketch is level 4.
/*SI4703 - Pins*/
int resetPin = 2;
int SDIO = A4;
int SCLK = A5;
int RDSInterruptPin = 3; // GPIO2 for RDS Interrupt
Si4703_Breakout radio(resetPin, SDIO, SCLK, RDSInterruptPin);
const int PA = 3;
const int PB = 4;
const int PC = 5;
const int PD = 6;
int preset = 0;
int preset_neu = 0;
#define REFRESH_PERIOD_MS 100
struct STATIONS {
char name[17];
int frequency;
} stations[NUMBER_STATIONS] = {{"SR 1 Europawelle", 880},
{"DLF Kultur ", 886},
{"SWR 3 ", 900},
{"SWR 2 ", 930},
{"RTL Radio ", 933},
{"SR3Saarlandwelle", 955},
{"SWR 1 RP ", 977},
{"big fm ", 995},
{"RPR 1 ", 1001},
{"ClassicRockRadio", 1009},
{"Radio Salue ", 1017},
{"ClassicRockRadio", 1028},
{"SWR 4 ", 1071},
{"SR Unser Ding ", 1037},
{"DLF Kultur ", 1079}};
void setup()
{
Serial.begin(9600);
// Initialize the Radio
//Initialize and Power up the SI4703
radio.powerOn();
radio.powerOn();
radio.setVolume(volume);
radio.setMono(false);
//radio.setChannel(frequency);
pinMode (PA, INPUT_PULLUP);
pinMode (PB, INPUT_PULLUP);
pinMode (PC, INPUT_PULLUP);
pinMode (PD, INPUT_PULLUP);
}
void loop()
{
preset_neu = (!digitalRead(PA) + !digitalRead(PB) * 2 + !digitalRead(PC) * 4 + !digitalRead(PD) * 8);
if (preset_neu != preset) {
radio.setVolume(0);
delay (200);
if (preset_neu = (!digitalRead(PA) + !digitalRead(PB) * 2 + !digitalRead(PC) * 4 + !digitalRead(PD) * 8)) {
preset = preset_neu;
Serial.print(preset);
Serial.print(" ");
frequency = (stations[preset-1].frequency);
Serial.println(frequency);
//radio.setChannel(stations[preset].frequency);
radio.setChannel(frequency);
radio.setVolume(30);
}
}
delay (REFRESH_PERIOD_MS);
}
da hätte ich noch mal eine kleine Bilderserie. Die Antenne hab ich an einer Buchse angeschlossen welche ich an einer Rückwandöffnung angeschraubt habe.
Keine Kommentare:
Kommentar veröffentlichen