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

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.