Domowy zestaw audio na Raspberry Pi. Prosty projekt DIY do muzyki dla makerów

Czas czytania: 5 min.

Możliwość odtwarzania muzyki w całym domu, w idealnej synchronizacji i z możliwością sterowania za pomocą telefonu, istnieje już od kilku lat – żaden to hit. Często jednak cena czegoś o większych możliwościach niż zwykły głośnik Bluetooth może być zniechęcająca, a znane są też kontrowersje dotyczące zamkniętej natury tych systemów. 

Czy możemy zbudować system audio w całym domu używając tylko technologii open-source i naszego ulubionego małego komputera Raspberry Pi? Jasne, że tak! Oto stacja do odtwarzania muzyki, która zapewnia kontrolę opartą na sieci.

Lista zakupów

JustBoom DAC (przetwornik cyfrowo-analogowy) HAT zapewni wysokiej jakości wyjście audio dla projektu. Podkrada on jednak złącze GPIO, które jest potrzebne do zasilania ekranu dotykowego. Na szczęście HAT ma wyprowadzenie GPIO, więc można przylutować dwupinowy header do 5V i GND dla ekranu dotykowego, dzięki czemu cały system może być zasilany przez jedno złącze. Ewentualnie można użyć dwóch zasilaczy. Montujemy DAC HAT na pinach GPIO i zabezpieczamy. Potrzeba śrub 20mm 2.5M do przymocowania HAT do podstawek komputera i kontrolera ekranu. Podłączamy piny 5V i GND ekranu dotykowego do ich odpowiedników na DAC HAT.

Przygotowanie Raspberry Pi OS

Obudowa uniemożliwia dostęp do karty microSD, więc upewniamy się, że mamy za sobą podstawową konfigurację systemu Raspberry Pi OS przed złożeniem. W projekcie będziemy używać Chromium, potrzebujemy więc “standardowego” obrazu systemu operacyjnego z pulpitem (ale nie potrzebujemy zalecanej wersji oprogramowania Recommended Software). Wypalamy obraz za pomocą wybranej metody i łaczymy się z malinką poprzez SSH albo podłączamy mysz i klawiaturę – wybór wedle uznania. 

Na koniec, jak zawsze, upewniamy się, że mamy najnowszą wersję wszystkiego za pomocą && sudo apt upgrade.

Umieszczanie w obudowie

Używana obudowa Raspberry Pi 4B nie obsługuje montażu z DAC HAT. Jeśli nie używacie HAT, to możecie pominąć ten krok. W przeciwnym razie ostrożnie usuwamy dwa otwory na śruby mocujące do ściany, a następnie ustawiamy HAT w linii z górnymi otworami wentylacyjnymi i usuwamy wszystkie, które blokują dwa gniazda RCA i gniazdo 3,5 mm przed umieszczeniem ich równo w obudowie. Prosta reguła: mierz dwa razy, ale tnij raz! Plastik jest miękki, więc dość łatwo to zrobić. Gdy wszystko jest już usadowione wygodnie w obudowie, możemy przykręcić ekran dotykowy tak, aby trzymał się stabilnie.

Zmodyfikowana obudowa po usunięciu tylnej częsci - wszystko pasuje. Wyświetlacz korzysta z GPIO.

Wyjście DAC

Domyślnie z DAC HAT nie będzie wydobywał się żaden dźwięk. Na szczęście wymagane sterowniki są już zainstalowane i czekają na włączenie. Z wiersza poleceń wykonujemy następujące polecenie:

				
					sudo nano /boot/config.txt
				
			

Znajdujemy linię:

				
					dtparam=audio=on
				
			

Usuwamy tę linię (lub dodajemy # z przodu), a następnie dodajemy te linie:

				
					dtparam=audio=off
dtoverlay=justboom-dac
lcd_rotate=2
				
			

Ta ostatnia linia odwraca wyświetlaną treść w pionie. 

Uruchamiamy ponownie Raspberry Pi i z wiersza poleceń testujemy wyjście audio:

				
					aplay /usr/share/sounds/alsa/Front_Center.wav
				
			

Powinien uruchomić się spokojny głos mówiący “front center”.

Instalacja Mopidy

Mopidy to serwer muzyczny napisany w języku Python. Jest headless – bezobsługowy, a oznacza to, że nie posiada własnego interfejsu użytkownika, który dodamy później. Jeszcze lepiej, że interfejs Mopidy jest także po polsku. Aby zainstalować Mopidy musimy dodać jego repozytorium do APT. Wykonujemy następujące polecenia, jedno po drugim:

				
					wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add-
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/buster.list
sudo apt update



				
			

Teraz zainstalujemy Mopidy i ustawimy jego uprawnienia:

				
					sudo apt install mopidy
sudo adduser mopidy video
				
			

Na koniec ustawiamy Mopidy tak, aby uruchamiał się jako usługa w tle przy starcie systemu:

				
					sudo systemctl enable mopidy
				
			

Konfiguracja i test Mopidy

Zanim Mopidy będzie mógł być uruchomiony, musimy skonfigurować kilka rzeczy. Domyślne ustawienia są okej, ale jeśli chcemy uzyskać dostęp do interfejsu sieciowego (po zainstalowaniu) z innego urządzenia, będziemy musieli na to zezwolić.

				
					sudo nano /etc/mopidy/mopidy.conf
				
			

Plik będzie pusty z wyjątkiem kilku komentarzy. Po bloku z komentarzami dodajemy:

				
					[http]
hostname = 0.0.0.0

				
			
				
					[_audio]
output = alsasink 
				
			

Kasujemy podkreślnik przed “audio”, zapisujemy plik za pomocą CTRL+X, a następnie uruchamiamy Mopidy:

				
					sudo systemctl enable mopidy

				
			

W przeglądarce przechodzimy do http://<hostname>:6680/ (zastępujemy <hostname> nazwą naszego Raspberry Pi – domyślnie jest to “raspberrypi.local”). Jeśli wyświetlana jest raczej nudna strona powitalna, wszystko działa dobrze.

Instalacja interfejsu użytkownika i obsługi plików

Mopidy składa się z modułów. Po wyjęciu z pudełka nie potrafi zbyt wiele, ale z kilkoma dodatkami nabiera kolorów. Zainstalujemy Iris, interfejs użytkownika oraz wsparcie dla odtwarzania muzyki przechowywanej w lokalnym systemie. Uruchamiamy komendy:

				
					sudo pip3 install Mopidy-Iris
sudo pip3 install Mopidy-Local
sudo sh -c 'echo "mopidy ALL=NOPASSWD: /usr/local/lib/python3.7/dist-packages/mopidy_iris/system.sh" >> /etc/sudoers’
sudo systemctl restart mopidy

				
			

Zostaną zainstalowane moduły Iris i Local, a następnie Iris otrzyma uprawnienia do uruchamiania poleceń Mopidy. Na koniec, restartujemy Mopidy, aby zachować zmiany. W przeglądarce internetowej wchodzimy na adres http://<hostname>:6680/iris/ i podziwiamy nasz nowy interfejs. 

Dodawanie muzyki

Nareszcie! Cała instalacja jest teraz gotowa do odtwarzania muzyki, więc pozostaje odpalać. Mopidy obsługuje szeroką gamę formatów, w tym MP3 i FLAC. Folder Music już istnieje w katalogu. Musimy powiedzieć Mopidy, gdzie ma szukać naszych plików. Edytujemy plik konfiguracyjny Mopidy:

				
					sudo nano /etc/mopidy/mopidy.conf

				
			

Wprowadzamy:

				
					[local]
media_dir = /home/pi/Music
				
			

Restartujemy Mopidy, aby odebrać zmiany w konfiguracji i rozpoczynamy pierwsze skanowanie w poszukiwaniu muzyki:

				
					sudo mopidyctl local scan

				
			

Teraz ulubiona muzyka powinna być widoczna w Iris. Uruchamiamy ulubiony utwór i sprawdzamy, jak to nam gra.

Kiosk mode

Aby uruchomić Iris na ekranie dotykowym, możemy sprawić, że Chromium będzie działał w trybie ‘kiosku’ i żadne inne elementy Raspberry Pi OS Desktop nie będą widoczne. Pierwszym krokiem jest zainstalowanie “unclutter'” – to poręczna aplikacja do ukrywania wskaźnika myszy, gdy nie jest używany.

				
					sudo apt install unclutter
				
			

Teraz skrypt, który uruchomi Chromium z odpowiednimi ustawieniami:

				
					nano ~/kiosk.sh
				
			

Dodajemy kod. Po uruchomieniu umożliwi to ukrywanie kursora, zapobiegnie wyświetlaniu niektórych komunikatów o błędach Chromium, a następnie uruchomi Chromium w trybie kiosku, przechodząc bezpośrednio do strony Iris na pełnym ekranie

Wdrożenie skryptu kiosku

Zanim będziemy mogli użyć skryptu, musi on zostać oznaczony jako wykonywalny:

				
					chmod +x ~/kiosk.sh
				
			

Wypróbujemy go uruchamiając ~/kiosk.sh. Jeśli wprowadzamy polecenia przez SSH, używamy zamiast tego tej komendy:

				
					DISPLAY=:0 ~/kiosk.sh
				
			

Wszystko jest w porządku, Iris powinien rozpocząć się na pełnym ekranie i być sterowany za pomocą dotyku. Zalecamy, aby przejść do ustawień i włączyć “Szerokie paski przewijania”, aby ułatwić kontrolę za pomocą palców. Możesz również wybrać pomiędzy jasnym i ciemnym motywem, ciemniejszy motyw jest nieco bardziej przyjazny dla oczu, gdy używasz ekranu dotykowego.

Run on boot

Ostatnim krokiem do stworzenia systemu muzycznego jest uruchomienie go przy starcie i przejście od razu w tryb kiosku. Poprosimy o to sam Desktop. Wpisujemy następujące polecenie w wierszu poleceń:

				
					sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
				
			

Dodajemy tę linię łącznie ze znakiem ‘@’:

				
					@/home/pi/kiosk.sh
				
			

Zapisz plik i uruchom ponownie system. Pojawi się pulpit, a następnie Iris uruchomi się na pełnym ekranie. Twój system muzyczny z ekranem dotykowym jest teraz gotowy do użycia. Możesz kontrolować wszystko za pomocą ekranu dotykowego, przeglądarki internetowej na dowolnym urządzeniu lub smartfonie.

				
					#!/bin/bashunclutter -idle 0.5 -root &
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences
/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk http://127.0.0.1:6680/iris &
				
			

Ładujemy muzykę

Jeśli chcesz jeszcze wzbogacić swoją kolekcję, możesz użyć swojego komputera Raspberry Pi do zgrywania płyt CD do formatu FLAC, systemu kompresji bezstratnej. Pliki są duże, ale nie tracą na drobnych szczegółach, które wychwyci czuły słuch. Bardzo łatwy w użyciu ripper to “A Better CD Encoder”, inaczej “abcde”.

				
					sudo apt install abcde
				
			

Podłącz napęd CD do portu USB, włóż płytę CD i wprowadź:

				
					abcde -o flac
				
			

Abcde przeprowadzi przez cały proces włączając w to automatyczne nadawanie nazw utworom. Umieszczamy katalog wynikowy w katalogu Music i przechodzimy do sekcji Settings w Iris, aby zainicjować ponowne skanowanie.

Jak oceniasz ten wpis blogowy?

Kliknij gwiazdkę, aby go ocenić!

Średnia ocena: 5 / 5. Liczba głosów: 2

Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.

Podziel się:

Picture of Oskar Pacelt

Oskar Pacelt

Fan dobrej literatury i muzyki. Wierzy, że udany tekst jest jak list wysłany w przyszłość. W życiu najbardziej interesuje go prawda, pozostałych zainteresowań zliczyć nie sposób. Kocha pływać.

Zobacz więcej:

Jedna odpowiedź

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ze względów bezpieczeństwa wymagane jest korzystanie z usługi Google reCAPTCHA, która podlega Polityce prywatności i Warunkom użytkowania.