WLAN-Radio mit PiFace Control and Display [Update]
Updates zum Post sind ganz unten.
Meine Frau wollte gern ein Radio im Badezimmer haben. Allerdings habe ich keines gefunden, das meinen Anforderungen entsprach und außerdem hatte ich noch einen Raspberry Pi bei mir herumliegen...
Die Zutaten
- Raspberry Pi Modell B
- PiFace Control and Display (im Folgenden nur PiFace genannt)
- passendes Gehäuse
- WLAN-Adapter
- Lautsprecher
- Stromversorgung
Bei der Stromversorgung solltest du darauf achten, dass du ein Netzteil verwendest, dass mindestens 2 A liefert, wenn du, wie ich, Lautsprecher nutzt, die über USB mit Strom versorgt werden.
Zusammenbau
Der schwierigere Teil war es, zu dem PiFace ein passendes Gehäuse zu finden. Letztendlich fand ich dann bei einem Shop namens AVC sowohl das PiFace, als auch ein passendes Gehäuse.
Der Zusammenbau gestaltete sich dann etwas kniffelig, da alle kleinen Taster in ihre Öffnung mussten und auch der Infrarot-Empfänger natürlich nicht abbrechen durfte.
Installation
Als Basissystem nahm ich ein Raspbian, das ich über ein Image von der offiziellen Raspberry-Seite installierte.
Danach erfolgten wieder die obligatorischen Schritte, die ich schon in diesem Artikel erwähnt hatte.
Einrichten des WLAN
Als WLAN-Adapter habe ich mir den EDIMAX EW-7811UN gekauft. Die Installation ist recht einfach.
Nachdem du den Stick in einen freien USB-Slot gesteckt hast, rufe einfach
dmesg
auf. Findest du eine solche Ausgabe
[ 2.240628] usb 1-1.2: new high-speed USB device number 4 using dwc_otg
[ 2.342323] usb 1-1.2: New USB device found, idVendor=7392, idProduct=7811
[ 2.342358] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.342373] usb 1-1.2: Product: 802.11n WLAN Adapter
[ 2.342386] usb 1-1.2: Manufacturer: Realtek
[ 2.342399] usb 1-1.2: SerialNumber: 00e04c000001
[ 3.181804] udevd[157]: starting version 175
[ 4.120743] bcm2708_spi bcm2708_spi.0: master is unqueued, this is deprecated
[ 4.121601] bcm2708_spi bcm2708_spi.0: SPI Controller at 0x20204000 (irq 80)
[ 6.498713] usbcore: registered new interface driver rtl8192cu
so wurde der Stick korrekt erkannt und auch der korrekte Treiber geladen.
Nun sollte auch
ifconfig
den Punkt wlan0
anzeigen, wie auf dem folgenden Bild zu sehen ist.
Öffne nun mit
sudo nano /etc/network/interfaces
die Netzwerkeinstellungen.
Meine sieht nun so aus:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
#allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid "<NETZWERK-SSID>"
wpa-psk "<NETZWERK-PASSWORT>"
Natürlich müssen die Platzhalter <NETZWERK-SSID>
und <NETZWERK-PASSWORT>
noch mit den für dich gültigen Daten ersetzt werden.
Nach einem Neustart des Raspberry Pi (und Abziehen des Netzwerkkabels) funkt nun ein neues Gerät in deinem WLAN.
Einrichtung des Displays
Das PiFace ist schnell und einfach eingerichtet. Hier bietet die offizielle Seite eine entsprechende Anleitung, die ich im Folgenden mit wiedergeben werde.
PiFace nutzt die vom Raspberry Pi zur Verfügung gestellten SPI Pins, die aber noch aktiviert werden müssen. Hierzu öffnest du die Raspberry Pi Konfiguration mit
sudo raspi-config
und wechselt zum Punkt 8 (Advanced Options). Hier wählst du den Punkt A5 (SPI) und im darauffolgenden Dialog wählst du ja oder yes. Danach verlässt du mit Ok und Finish das Setup und startest den Raspberry Pi neu.
Die Software für das Display kann direkt aus den Raspbian-Repositories installiert werden. Hier empfehle ich allerdings die Installation mit
sudo apt-get install python{,3}-pifacecad
die sowohl die Unterstützung für Python 3 als auch Python 2 mitbringt.
Nach einem Neustart ist das Display einsatzbereit, was durch den Aufruf von
python3 /usr/share/doc/python3-pifacecad/examples/sysinfo.py
überprüft werden kann. Das Display zeigt nun die IP-Adresse und die Prozessortemperatur sowie die Speicherauslastung an.
Einrichten des Radio
Auch hier bietet die offizielle Seite von PiFace direkt eine entsprechende Anleitung, mit deren Hilfe ich mir mein Radio eingerichtet habe.
Damit auch Ton aus den Lautsprechern kommt, muss das Paket mplayer
installiert werden.
sudo apt-get install mplayer
In der Standardinstallation von PiFace ist das Radio-Skript bereits enthalten, muss aber noch entpackt werden.
sudo gunzip /usr/share/doc/python3-pifacecad/examples/radio.py.gz
Damit du es schnell bearbeiten kannst, empfehle ich, dass du es in deinen Nutzerordner kopierst.
cp /usr/share/doc/python3-pifacecad/examples/radio.py ~/radio.py
Jetzt gilt es nur noch die entsprechenden Radiosender einzutragen.
Die Liste
STATIONS = [
{'name': "6 Music",
'source': 'http://www.bbc.co.uk/radio/listen/live/r6_aaclca.pls',
'info': 'http://www.bbc.co.uk/radio/player/bbc_6music'},
{'name': "Radio 2",
'source': 'http://www.bbc.co.uk/radio/listen/live/r2_aaclca.pls',
'info': None},
{'name': "Radio 4",
'source': 'http://www.bbc.co.uk/radio/listen/live/r4_aaclca.pls',
'info': None},
{'name': "5 Live",
'source': 'http://www.bbc.co.uk/radio/listen/live/r5l_aaclca.pls',
'info': None},
{'name': "Radio 4 Extra",
'source': 'http://www.bbc.co.uk/radio/listen/live/r4x_aaclca.pls',
'info': None},
{'name': "Planet Rock",
'source': 'http://tx.sharp-stream.com/icecast.php?i=planetrock.mp3',
'info': None},
]
muss also bearbeitet werden (nano radio.py
). Meine sieht nun so aus:
STATIONS = [
{'name': "MDR JUMP",
'source': 'http://www.jumpradio.de/static/webchannel/jump_live_channel_high.m3u',
'info': None},
{'name': "MDR Sputnik",
'source': 'http://www.sputnik.de/m3u/live.hi.m3u',
'info': None},
{'name': "Radio Lausitz",
'source': 'http://radiolausitz.mp3.green.ch:80',
'info': None},
{'name': "Radio Paloma",
'source': 'http://tuner.radiopaloma.de:80',
'info': None},
]
Mit Ctrl + O
und Ctrl + X
verlässt du nano
wieder und kannst das Radio nun mit
python3 radio.py
starten.
Autostart des Radio
Da ich das Radio ins Bad bauen möchte, soll es auch automatisch starten, sobald der Raspberry Pi mit Strom versorgt wird und hochgefahren ist. Also lege ich einen entsprechenden Cronjob an:
sudo crontab -e
mit dem Inhalt
@reboot python3 /home/pi/radio.py
Die Pfade müssen eventuell angepasst werden, wenn du das Skript woanders liegen hast.
Fertig
Updates
29. Januar 2015
Heute Morgen habe ich mal ein sudo rpi-update
ausgeführt und der Kernel des Raspberry Pis wurde auf Version 3.18.4+ aktualisiert. So weit, so gut. Aber... Plötzlich ging das Radio nicht mehr. Auch ein Starten per Hand funktionierte nicht mehr. Nach einigem Probieren fand ich dann hier die Lösung:
In die Datei /boot/config.txt
muss device_tree=
(ja, das ist korrekt, dass da nix hinter dem =
steht) eingetragen und der Raspberry Pi neugestartet werden. Dann funktioniert auch das Radio wieder.