Görbillig, smart högtalare för den prismedvetne

Pimpad med presentpapper
Färdig och pimpad med presentpapper

Det här med ljud utspritt i hemmet är ett problem om man, som jag, är av det snålare slaget. Så vad är väl bättre än att bygga en smart högtalare av lite blandat skräp man har hemma?

Nedan följer en kort beskrivning för hur du kan bygga en Sonos-dödare (?) av lågbudgetslag!

Val av hårdvara

  • En Raspberry Pi av valfri modell, de flesta har en halvdassig 3,5mm ljudutgång ”ombord” vilket kan fungera som ljud-utgång.
  • Om du använder Zero/Zero W så är denna ljudadapter enklaste lösningen för att få ut ljud, men kvalitén blir rätt dålig. Vill man använda passiva högtalare eller ha högre kvalitet på ljudhårdvaran rekommenderar jag att man slänger ett öga på HiFiBerry. Jag kommer i detta exempel använda HiFiBerry DAC+ Zero, som är väldigt prisvärd, men tillvägagångssättet är samma för ”vanliga” DAC+.
  • En WiFi-adapter kan behövas beroende på vilken Pi-variant du använder
  • En aktiv högtalare. T.ex. denna eller denna funkar. I denna guide använder jag en aktiv högtalare som passar i ett mystiskt rör jag hittade, och som i normala fall drivs av 2x AAA-batterier.
  • microSD-kort, det behövs nog inte så mycket som 16GB men det är svårt att få tag på mindre nu för tiden.
  • Spänningsmatning, samt ev. panelfäste för USB-kontakt.

Jag använder Pi Zero W med DAC+ Zero och behövde därför också en 2xRCA<>3,5mm honkontakt (se bild nedan). Högtalaren hade jag redan (den var ”gratis”), så bara spänningsmatningen är kvar att lösa. Här har jag också valt att köra en USB-förlängare i aluminium för panelmontage för det blir snyggt (vill ju inte förstöra det vackra röret). Denna har dock inte dykt upp i skrivande stund, så har en provisorisk USB-kabel som går rakt in i röret så länge.

Så här fint blir det:

Pi Zero W, HiFiBerry DAC+ Zero, högtalare. Förutom ljudkabeln finns en matningskabel från 5V/GND till batteripolerna på högtalaren. Mer info längst ner!
Pi Zero W, HiFiBerry DAC+ Zero, högtalare. Förutom ljudkabeln finns en matningskabel från 5V/GND till batteripolerna på högtalaren. Mer info längst ner!

Högtalaren drivs normalt av 3xAAA, men numera drivs den av RPi:ns 5V-utgång! 0.5V hit eller dit 🙂

Här kommer det sitta en panelmonterad USB-ingång sen. Sen.
Provisorisk spänningsmatning. Här kommer det sitta en panelmonterad USB-ingång sen. Sen™.

Nu ska vi gå över till själva mjukvarulösningen! Det finns lite olika varianter, t.ex. Max2Play, piCorePlayer och Mopidy. Jag har redan en Mopidy-spelare baserad på Pi 2 hemma, så jag vet att det fungerar bra i min setup och det är vad jag tänkte använda här också. Musiken strömmar jag från en Airsonic-server.

Installation av mjukvara

Jag tänkte köra Raspbian Lite med Mopidy och några plugins, då det är beprövat. Jag hade också tänkt göra filsystemet read-only, så jag kan flytta högtalaren när som helst utan att SD-kortet blir korrupt. Steg-för-steg:

      1. Ladda ner senaste Raspbian Lite. Packa upp om det behövs, flasha därefter till ditt minneskort med Win32DiskImager, Etcher eller motsvarande.
      2. skapa en tom fil i boot-partitionen på minneskortet, döp den till ssh. Detta gör att SSH-access tillåts.
      3. På liknande sätt kan du lägga till ett trådlöst nätverk. I roten på boot-partitionen lägger du en fil wpa_supplicant.conf och skriver in följande i filen (OBS ersätt network/password med dina nätverksuppgifter!):
      4. ssh kommer att försvinna vid första boot, och wpa_supplicant.conf kopieras in i /etc/wpa_supplicant/ där den ska vara.
      5. Nu kan du boota upp! Pi:n bör koppla upp mot ditt WiFi, så från och med nu kan vi ansluta via SSH. För att göra detta kan du förslagsvis använda Cygwin eller PuTTy.
      6. För att få DAC+ Zero att fungera som output behövde jag ändra tre filer. Först, sudo nano /boot/config.txt där jag la till följande rad längst ner (CTRL+Insert för att klistra in, CTRL+X följt av Y och ENTER för att spara):
      7. Därefter, sudo nano /etc/modules där jag la till följande rader längst ner:
      8. Slutligen körde jag sudo nano /etc/asound.conf och fyllde i följande:

        Nu borde ljudkortet fungera efter omstart!
      9. För att installera Mopidy lägger vi först till repot och dess GPG-nyckel, och därefter installerar vi Mopidy, med dessa kommandon:
      10. Nu bör du gå och göra en stor kopp kaffe, då detta kommer ta en stund… 🙂
      11. När kaffet är slut och Mopidy är installerat, startar man  det som service genom att skriva: sudo dpkg-reconfigure mopidy och välja ”Yes” på prompten eftersom vi vill att servern ska vara igång hela tiden.
      12.  Nu behöver vi installera några program kan behövas vid installation av plugins. Framför allt PIP och git men vi passar på att även installera mopidy-spotify:
      13. Eftersom jag använder Subsonic installerar jag en plugin för det, Mopidy-subidy, enligt följande steg:
      14. En webb-frontend är också bra att ha, även om Mopidy även har ett JSON-API jag planerar att använda. Pi Music Box har en rätt trevlig frontend, så den installerar jag:
      15. Konfigurationen av Mopidy görs genom kommandot sudo nano /etc/mopidy/mopidy.conf och är relativt enkel. Man lägger till en ”tagg” för varje plugin man vill använda och fyller i inställningarna. Undantaget är Spotify-pluginen, som även kräver att du genererar nycklar m.m. så för konfiguration av den, se denna sida. Här är ett exempel på hur min mopidy.conf ser ut (har även lagt till stream som finns inbyggt i Mopidy, denna används till t.ex. radioströmmar):

Nu är konfigurationen färdig och du bör kunna komma åt din musik via http://RPI_IP:6680/musicbox_webclient .

Kostnad för hela härligheten då? Ptja, USB-panelkontakten drar upp priset en del, men totalkostnaden tror jag ändå landar under 500 kronor om man bortser från de spottstyver högtalare/rör kostat.

Möjligtvis kan ljudet bli rätt okej om man har en Pi 2 eller Pi 3 och kopplar högtalaren direkt till ljudutgången där, men eftersom DAC+ Zero är så billig är nog just denna lösning billigare och ger bättre ljud. En nackdel med DAC+ Zero är dock att den inte har någon inbyggd hårdvara för att reglera volym, så beroende på högtalare som används kan ljudnivån bli alldeles för hög på högsta volym (detta ska jag försöka avhjälpa med softvol).

BONUS: Mata aktiv, batteridriven högtalare via GPIO

Högtalare som i normala fall drivs av 2-3 AA-/AAA-batterier kan man driva via sin Raspberry Pi istället, så slipper man gå och byta batterier. I mitt fall går högtalaren på 3x AAA, så jag anslöt den direkt till 5V/GND på min Raspberry Pi. Har man istället 2x AAA eller AA kan man koppla till 3.3V/GND.

Åsa hjälpte mig löda på kablar på 5V/GND. Dessa spänningsmatar högtalaren. Buntband får agera dragavlastning!
Åsa hjälpte mig löda på kablar på 5V/GND. Dessa spänningsmatar högtalaren. Buntband får agera dragavlastning!
Andra änden av matningen. Man kan hoppa över batterihållaren, men bakstycket håller ihop högtalaren så detta var enklast.
Andra änden av matningen. Man kan hoppa över batterihållaren, men bakstycket håller ihop högtalaren så detta var enklast.

Det var allt, lycka till med eventuellt bygge! 🙂

Kommentera