Phoniebox – die Fortsetzung

Der Prototyp der Phoniebox steht schon, jedoch ist es noch ein langer Weg zum fertigen Produkt. Hier nun die weiteren Schritte:

Elecjet PowerPie P20 – die Powerbank

Bei der Auswahl der Powerbank war mir das Feature Pass-Through Charging wichtig. Dies ermöglicht ein Laden der Powerbank ohne, dass die Speisung des Raspberry Pis abbricht. Somit kann man problemlos die Powerbank laden, während die Phoniebox am laufen ist. Meine Wahl ist auf den Elecjet PowerPie P20 gefallen.

Joy-it rb-port-doubler – der Verdoppler

Schon lange im Einsatz habe ich den GPIO-Multiplexer von Joy-It welcher hilft, alle Komponenten übersichtlich anzuschliessen. Es gibt aber auch Multiplexer von anderen Herstellern, welche durchaus gute Dienste leisten.

Drück mich

Die Phoniebox sollte auf drei Buttons hören: Previous, Next, Play/Pause. Zusätzlich soll noch die Lautstärke über ein Rotary Encoder (Velleman WMA435) verändert werden können. Da ich die Buttons in der initialen Installation nicht configuriert hatte, musste ich dies noch nachholen:

cd ~/RPi-Jukebox-RFID/components/gpio_control/
sudo ./install.sh

Um die richtigen Pins zu konfigurieren, sollte man folgendes File anpassen:

sudo nano ~/RPi-Jukebox-RFID/settings/gpio_settings.ini

Der Datei sieht bei mir folgendermassen aus:

[DEFAULT]
enabled: True
[VolumeControl]
enabled: True
Type: RotaryEncoder
PinUp: 5
PinDown: 6
pull_up: True
hold_repeat: True
timeBase: 0.1 ;only for RotaryEncoder
functionCallDown: functionCallVolU ;changed up/down
functionCallUp: functionCallVolD

[PrevNextControl]
enabled: False
Type: TwoButtonControl
Pin1: 22
Pin2: 23
functionCall1: functionCallPlayerPrev
functionCall2: functionCallPlayerNext
functionCallTwoButtons: None
pull_up: True
hold_time: 0.3
hold_repeat: False

[PlayPause]
enabled: True
Type: Button
Pin: 27
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPause

[Shutdown]
enabled: False
Type:  Button
Pin: 3
pull_up: True
hold_time: 2
functionCall: functionCallShutdown

[Volume0]
enabled: False
Type:  Button
Pin: 17
pull_up: True
hold_time: 0.3
functionCall: functionCallVol0

[VolumeUp]
enabled: False
Type:  Button
Pin: 16
pull_up: True
hold_time: 0.3
hold_repeat: True
functionCall: functionCallVolU

[VolumeDown]
enabled: False
Type:  Button
Pin: 19
pull_up: True
hold_time: 0.3
hold_repeat: True
functionCall: functionCallVolD

[NextSong]
enabled: True
Type:  Button
Pin: 23
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerNext

[PrevSong]
enabled: True
Type:  Button
Pin: 22
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPrev

[Halt]
enabled: False
Type:  Button
Pin: 21
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPauseForce

HiFiBerry Mini AMP – der Verstärker

Bei der Audioausgabe gibt es nun zwei verschiedene Varianten: Man kann sich irgendwelche aktive Boxen kaufen und diese an den Kopfhöhrerausgang vom Raspberry Pi anschliessen. Wenn man jedoch einen Lautsprecher anschliessen möchte, braucht man einen Verstärker, der das entsprechende Signal liefert. Ich habe mich für die zweite, etwas komplizierte Variante entschieden, erhoffe mir aber dafür bessere Soundqualität. Konkret habe ich den Mini AMP von HiFiBerry und den Breitbandlautsprecher PS95-8 von Daytonaudio gekauft. Dank dem Port-doubler konnte ich diesen einfach auf einen freien Port stecken und den Lautsprecher anschliessen (die Polarität ist -/+/+/-). In der Software muss man die Datei config.txt bearbeiten (dtparam auskommentieren und die anderen Einträge einfügen):

sudo nano /boot/config.txt
...
# dtparam=audio=on
dtoverlay=hifiberry-dac

In der Datei /etc/mpd.conf muss folgender Eintrag ergänzt werden. Den audio_output, type «alsa» der schon vorhanden ist, sollte aber ebenfalls drin bleiben.

audio_output {
        enabled         "yes"
        type            "alsa"
        name            "HiFiBerry DAC+ Lite"
        device          "hifiberry"
        auto_resample   "no"
        auto_channels   "no"
        auto_format     "no"
        dop             "no"
}

Da ich Verzögerungen bei der Regelung des Volumens hatte, habe ich mich entschieden, auf den Alsa-Mixer umzusteigen. Laut dem Raspberry Forum, scheint die Spotify-Variante der Phoniebox diese Probleme mit dem mpd-Mixer zu haben. Also, Alsa-Mixer installieren:

 sudo apt-get install mopidy-alsamixer

Danach das mopidy-Config anpassen (sudo nano /etc/mopidy/mopidy.conf)

[audio]
mixer = alsamixer
output = alsasink
mixer_volume = 30


[alsamixer]
card = 0
control = Master

Der Volume-Manager sollte im WebUI der Phoniebox auf «amixer» geändert werden. Das asound-Config (sudo nano /etc/asound.conf) sieht bei mir folgendermassen aus:

pcm.hifiberryMiniAmp {
    type softvol
    slave.pcm "plughw:0"
    control.name "Master"
    control.card 0
}
pcm.!default {
    type       plug
    slave.pcm  "hifiberryMiniAmp"
}

Da meine Phoniebox nur ein Lautsprecher besitzt, habe ich mir überlegt, den Ausgang Mono zu konfigurieren. Ich habe diese oder jene Anleitung dazu gefunden, habe mich jedoch entschieden, dies für später aufzubewahren, da ich bei der Audio-Konfiguration immer noch nicht ganz durchblicke.

Nützliche Links

Anleitung zum Aufbau: https://forum-raspberrypi.de/attachment/15302-anleitung-jukebox-micz-flor-mit-buttons-v2-pdf/

Zum ersten Phoniebox-Blog.
Zum nächsten Phoniebox-Blog.