Ein tolles Projekt für verregnete Tage: Ein Internet Radio auf Basis eines Raspberry Pi. Bei mir liegt schon länger ein altes, ungenutztes Philips D-1835 Analogradio von 1986 herum, dem ich gern neues Leben einhauchen möchte. Und so geht’s!
Das wird benötigt:
- Raspberry Pi 3 – 32€
- Raspberry Pi Netzteil – 13€
- SD-Speicherkarte – 10€
- Lautsprecher mit bis zu 3W – 10€
- Audio Verstärker 3W PAM8403 – 5€
- Klinke-Kabel – 3€
- GPIO-Kabel – 7€
- Gehäuse
(Affiliate-Links)
Es muss nicht unbedingt ein Raspberry Pi 3 verwendet werden, dieser bietet sich aber an, weil er bereits WLAN integriert hat. Bei älteren Modellen wird zusätzlich ein WLAN-Stick benötigt. Es kann auch ein Raspberry Pi Zero W verwendet werden, der ebenfalls WLAN integriert hat. Die angegeben Preise sind die, die man bezahlt, wenn man die Teile einzeln bei deutschen Händlern kauft. Teile wir den Verstärker oder die Kabel bestelle ich in der Regel in größeren Mengen für weniger Geld über eBay aus China. Das geht aber nur, wenn man ein paar Wochen auf die Teile warten kann.
Die nötigen Schritte:
1) Raspbian installieren
Als Betriebssystem für den Raspberry Pi empfehle ich Raspbian. Meine Installationsanleitung findest du hier.
2) Lautsprecher an Verstärker anschließen
Im zweiten Schritt verbinden wir den PAM8403-Verstärker mit dem Lautsprecher. So sind die Anschlusse des PAM8403 besetzt:
Da es sich um einen Stereoverstärker handelt, wir aber nur einen Lautsprecher haben, wird nur ein Ausgang besetzt. Ich habe mich für den rechten Kanal entschieden. Den Plus- und Minuspol verbinden wir mit den GPIO-Kabeln mit dem Lautsprecher. Wenn der Lautsprecher bereits angelötete Kabel hat, können diese auch direkt am Verstärker angelötet werden. Die Pole sollten zwar nicht falsch herum angeschlossen werden, dabei kann aber nichts kaputt gehen. Sollte der Ton später komisch klingt, einfach die Polung vertauschen. Hat man zwei Lautsprecher, kann der zweite natürlich an den freien Kanal angeschlossen werden.
3) Verstärker am Raspberry Pi anschließen
Das Klinkekabel schneiden wir einfach irgendwo durch, sodass wir am einen Ende einen Stecker haben, den wir in den Audio-Anschluss des Raspberry Pi stecken können, und ein zweites Ende mit den Kabelenden. Je nachdem, ob es ein Stereo- oder Monokabel ist, hat das Klinkekabel drei oder nur zwei Adern. Die weiße Ader ist die Masse, die an den Anschluss GND des Verstärkers angeschlossen wird. Die signalführenden Adern sind rot und grün und müssen an die beiden Input-Anschlüsse.
Jetzt braucht der Verstärker noch Strom. Dazu müssen die beiden mittleren Anschlüsse an eine Stromquelle mit 3,6V – 5,5V angeschlossen werden. Der Raspberry Pi bietet die passende Stromquelle an den Pins 2 und 6. Mit zwei GPIO-Kabeln lässt sich hier einfach eine Verbindung herstellen.
4) Python-Script
Da nun die Hardware verbunden ist, fehlt nur noch ein Script, mit dem das Internetradio gestartet werden kann. Gern teile ich mein Python-Script, das einen beliebigen Internet-Stream abspielt. Dazu müsst ihr nur vorher folgende Befehle ausführen, um VLC zu installieren:
sudo apt-get install vlc pip install python-vlcHier das Python-Script:
import vlc import time url = 'http://streams.radiobob.de/bob-live/mp3-192/mediaplayer' instance = vlc.Instance('--input-repeat=-1', '--fullscreen') player=instance.media_player_new() media=instance.media_new(url) media.get_mrl() player.set_media(media) player.play()Dieses einfach speichern als radio.py und dann ausführen:
python radio.py5) Musik hören mit dem Internet Radio
Viel Spaß beim Musik hören mit dem neuen Raspberry Pi Internet Radio!
Hallo Jonas, das sieht ja beeindruckend einfach aus. Habe ich gleich probiert, aber python meldet invalid syntax bei Zeile 7 :
media player.set_media(media)
was ist falsch?
Hallo Henry,
danke für den Hinweis. Da ist mir beim Copy-Paste was verloren gegangen. Hab’s jetzt korrigiert.
Wie kriegst du das Skript dazu, direkt beim Hochfahren zu starten?
Ich kämpfe (mit Raspbian Buster) noch damit, dass VLC sich weigert, als Root ausgeführt zu werden…
Ich hab’s als init.d-Script gelöst. Gibt aber mehrere Möglichkeiten, siehe https://raspberrypi.stackexchange.com/questions/8734/execute-script-on-start-up
Das Skript scheint nicht mehr zu funktionieren:
$ python radio.py
Traceback (most recent call last):
File „radio.py“, line 4, in
instance = vlc.Instance(‚–input-repeat=-1‘, ‚–fullscreen‘)
File „/home/pi/.local/lib/python2.7/site-packages/vlc.py“, line 1883, in __new__
return libvlc_new(len(args), args)
File „/home/pi/.local/lib/python2.7/site-packages/vlc.py“, line 4683, in libvlc_new
ctypes.c_void_p, ctypes.c_int, ListPOINTER(ctypes.c_char_p))
File „/home/pi/.local/lib/python2.7/site-packages/vlc.py“, line 292, in _Cfunction
raise NameError(’no function %r‘ % (name,))
NameError: no function ‚libvlc_new‘
alles nach Anweisung gemacht, aber klappt leider nicht 🙁
Hey Nils,
scheinbar ist vlc nicht installiert. Probier mal: sudo apt-get install vlc
An Stelle des Python-Scripts ginge doch einfach:
cvlc „http://streams.radiobob.de/bob-live/mp3-192/mediaplayer“
Ich habe vor cvlc-Aufruf allerdings noch ein „sleep 120“ eingefügt; anscheinend braucht mein USB-Audio-Adapter nach dem Booten ein oder zwei Minuten Bedenkzeit…
Hallo Jonas,
vielen Dank für deinen Post, ich versuche mich gerade an einem ähnlichen Projekt. 🙂
Viele Radiosender bieten Ihre Streams im m3u-Format an, wie z.B. hr3: http://metafiles.gl-systemhaus.de/hr/hr3_2.m3u
Hast du eine Ahnung wie ich mit Python und vlc diesen Livestream abspielen kann?
Über einen Tipp würde ich mich sehr freuen.
Vielen Dank und viele Grüße
Hey Fabian,
m3u ist ein Playlist-Format. Wenn du sie mit „Link speichern unter“ herunterlädst und mit einem Texteditor öffnest siehst du, auf welche Stream die Playlist wirklich zeigt. In deinem Beispiel ist es: http://dispatcher.rndfnk.com/hr/hr3/live/mp3/128/stream.mp3
Die Url solltest du mit VLC öffnen können.
Hallo Jonas,
vielen Dank für deine schnelle Antwort!
Damit komme ich einen Schritt weiter.
Viele Grüße
Fabian
Mhhmmm. Ich hab hier eine „Playliste“ die sich wie eine Matroschkapuppe darstellt: https://wdrhf.akamaized.net/hls/live/2027963/1livediggi/master.m3u8.
Im Editor geöffnet finden sich dort weitere m3u8 diverser Bandbreiten. Eine davon wiederum im Editor geöffnet ergibt eine ordentliche Liste mit unvollständigen Pfadangaben zu Transportstreams .ts.
Wie bekommt man die denn gehandelt?
Achso: Frohe Weihnachten an alle Leser.
Spannend, das habe ich bisher noch nicht gesehen. Du könntest es wie von Klaus beschrieben mal mit cvlc „https://wdrhf.akamaized.net/hls/live/2027963/1livediggi/master.m3u8“ probieren.