Linux Webradio

Wechseln zu: Navigation, Suche

Vorwort[Bearbeiten]

Dieses Projekt war als Weihnachtsgeschenk für meinen Vater gedacht. Der Artikel beschreibt ein Webradio und Festplattenplayer auf Basis eines Routers. Als Gehäuse wird ein altes Radio von Sony verwendet.

Hardware[Bearbeiten]

Router[Bearbeiten]

Das Herzstück des Radios ist ein Router, genauer gesagt verwende ich einen WL500gP von Asus, den ich zuhause herumstehen hatte. Als Betriebsystem setze ich OpenWrt, ein Embedded-Linux, ein, das ich mir selbst aus dem SVN-Trunk kompiliert habe. Es beinhaltet alle meine benötigten Pakete, wie zB. USB-Support, MPD, Samba, NTP-Client,...

Sound[Bearbeiten]

Als Soundkarte setze ich eine USB-Soundkarte des Typs von Terratec ein, da sie nach eiegenen Erfahrungen von OpenWrt unterstützt wird. Mit den billigen China-Soundkarten von Ebay konnte ich keine guten Erfahrungen sammeln. Sie wurde zwar vom Betriebssystem erkannt, es konnte jedoch kein Sound ausgegeben werden.

Spannungsversorgung[Bearbeiten]

Für das System werden mehrere Spannungen benötigt:

  • 5V/2A Router
  • 3.3V Mikrocontroller, VFD-Controller
  • -30V VFD-Controller
  • 6V AC Heizung VF-Display

Es wird der orginale Trafo des alten Radios weiterverwendet. Dazu wird Teil der orginalen Radioplatine, auf der der Trafo sitzt, abgeschnitten. Der Trafo stellt sekundär zwei Wicklungen zu Verfügung:

  • 6V
  • 48V mit Mittelanzapfung

Die 48V Spule wird gleichgerichtet und somit +-32V DC erzeugt. Die -30V benötigen keine genaue Regelung. Aus diesem Grund wird diese Spannung nur mit 2x 470µF und 2x 100nF gefiltert und nicht mit einem Spannungsregler geregelt. Aus den +32V wird mittels einem Schaltregler die 5V Spannung für den Router erzeugt. Mit dem eingesetztem TPS5420 konnte ich bereits positive Erfahrungen bei meiner Diplomarbeit sammeln. Da der Mikrocontroller, sowie der VFD-Controller, auf der 3.3V Schiene nicht viel Strom benötigen, wird hier ein Linearspannungsregler eingesetzt, der die 5V auf 3.3V regelt.

Alternative 5V Spannungsversorgung[Bearbeiten]

Leider hat sich ergeben, dass der Trafo des alten Radios zu schwach für die Erzeugung der 5V für den Router sind. Aus diesem Grund wird das Steckernetzteil des Routers wiederverwendet. Dazu werden auf der Platine des Steckernetzteils Kabel angelötet und das Netzteil intern verkabelt.

Mikrocontrollerplatine[Bearbeiten]

Bootloader[Bearbeiten]

Die Mikrocontrollerplatine besitzt keinen eigenen ISP-Anschluss. Der Bootloader muss daher vorher extern auf einem anderen Board (zB STK500) mit dem Bootloader programmiert werden. Ich verwende den Fastboot-Bootloader von Peter Dannegger, da er sehr klein ist und sehr zuverlässig funktioniert

Funktion[Bearbeiten]

Die Aufgabe des verwendeten Mikrocontrollers (Atmega168) liegt darin, den Drehencoder auszuwerten, sowie den VFD-Controller ansteuern. Bei einem Event, wie zB. einem Tastendruck oder die Bewegung des Drehencoders sendet der Mikrocontroller das Event über die serielle Schnittstelle an den Router.

Bei Empfang eines gültigen Kommandostrings, wird der Text auf dem VF-Display ausgegeben. Ist der Text länger als das Display darstellen kann, wird eine Scrollfunktion für den Text aktiviert. Der Text wird angezeigt, und scrollt danach links aus dem Display hinaus und rechts wieder herein.

Platine[Bearbeiten]

Schaltbild V1.0

Die Platine wurde in Eagle 5.6 entwickelt, slebst geätzt und danach chemisch verzinnt.

Datei:LinuxWebradio uC-Platine.zip

VFD-Platine[Bearbeiten]

Für die Anzeige wird das orginal VF-Display des Sony Radios wiederverwendet. Angesteuert wird das Dsiplay mit dem Displaycontroller STFPC311 von ST. Der Vorteil gegenüber einer diskreten Lösung liegt in der Anzahl der verwendeten Bauteile.

Auch die Tasten des Radios werden verwendet. Dazu werden die Taster auf der orginal Platine belassen, denn dadurch stimmen die Position der einzelnen Taster genau. Auf der Platine werden die 21 Taster mit Drähten zu einer 2x11 Matrix verschalten und an der VFD-Platine angeschlossen.

Software[Bearbeiten]

Mikrocontrollerprogramm[Bearbeiten]

Linuxprogramm[Bearbeiten]