Blog (29)
Komentarze (1k)
Recenzje (0)

Malinowa stacja radiowa

@okokokMalinowa stacja radiowa02.01.2014 16:58

Dostałem na święta Raspberry PI. :) Jeszcze wcześniej widziałem jakie ciekawe projekty można wykonać z wykorzystaniem tej płytki. Moją szczególną uwagę zwróciła możliwość nadawania sygnału z modulacją FM na falach używanych przez odbiorniki radiowe bez użycia żadnych dodatkowych układów. Wystarczy podłączyć jakiś kawałek drutu do jednego z pinów GPIO na płytce. Sam program to umożliwiający - pifm - pozwala nadawać jedynie plik wav o odpowiednich parametrach - 1 ścieżka dźwiękowa, 16 bitów na próbkę (sample) i domyślnie 22050 Hz choć to można zmienić podczas wywoływania pifm.

Gdy dostałem Malinkę, od raz chciałem się tym pobawić. W komplecie z pifm znalazłem przykładowy dźwięk - intro Gwiezdnych Wojen. Udało mi się to nadać i nawet kolega bez większych problemów odebrał to u siebie w domu - jakieś 30-40 metrów + 2 metrowej grubości ceglane ściany.

Byłem tak zadowolony z wyniku eksperymentu że od razu postanowiłem nadać coś bardziej użytecznego - Spotify i lokalną kolekcję muzyki.

Poza tym że chciałem wykorzystać Mopidy - chyba jedyny obecnie działający odtwarzacz wspierający Spotify, nie miałem zielonego pojęcia jak się za coś takiego zabrać. Na początku planowałem w jakiś sposób wyciągnąć output audio domyślnej i jedynej karty dźwiękowej w formacie wav i wrzucić do go pliku FIFO, a z stamtąd odczytać przez pifm, okazało się jednak że obsługa audio pod Linuxem jest znacznie bardziej skomplikowana niż cat /dev/snd0. :(

Napisałem więc na Facebookowej grupie Malinowej, oraz później na oficjalnym kanale IRC Mopidy. Dzięki Łukaszowi C. Jokielowi oraz jednemu z developerów Mopidy udało mi się wreszcie to odpalić. Z tego miejsca, bardzo Wam za to dziękuję. :)

Poniżej przedstawiam instrukcję jak coś takiego zrobić. Zakładam że mamy Raspberry PI z zainstalowanym na karcie Raspbianem i aby uniknąć problemów - czystym i w najnowszej wersji.

Uwaga: Wykonujesz to wszystko na własną odpowiedzialność :)

1. Robimy i podłączamy antenę. Może być to krótki kawałek drutu. Podłączamy go do pinu GPIO4, oznaczanego też jako 7. wg. biblioteki WiringPi oraz na schemacie poniżej. Czerwony pin +5V znajduje się przy krawędzi płytki.

2. Instalujemy pifm - tworzymy tymczasowy katalog [1], wchodzimy do niego [2], pobieramy archiwum zawierające program i przykładowy dźwięk (intro Gwiezdnych Wojen) [3], wypakowujemy archiwum [4], kopiujemy właściwy program do folderu /usr/local/bin [5], wychodzimy z tymczasowego katalogu [6] i go usuwamy [7].

mkdir /home/pi/pifm_tmp
cd /home/pi/pifm_tmp
wget http://www.icrobotics.co.uk/wiki/images/c/c3/Pifm.tar.gz
tar -xf Pifm.tar.gz
sudo mv pifm /usr/local/bin/pifm
cd /home/pi/
rm -rf /home/pi/pifm_tmp

Folder /usr/local/bin, wraz z kilkoma innymi, znajduje się domyślnie w zmiennej środowiskowej $PATH. Gdy uruchamiamy jakiś program, wpisując jego polecenie, powłoka (najczęściej bash) sprawdza najpierw czy nie jest to alias (przekierowanie do innego programu) lub polecenie wewnętrzne (które realizuje sama powłoka), a następnie próbuje znaleźć plik wykonywalny tego polecenia/programu przeszukując wszystkie foldery podane w zmiennej środowiskowej $PATH. Dzięki umieszczeniu pliku wykonywalnego programu pifm w katalogu znajdującym się w tej zmiennej mamy możliwość późniejszego uruchomienia go, nie podając pełnej ścieżki, a jedynie nazwę.

3. Instalujemy serweroodtwarzacz Mopidy - pobieramy klucz GPG repozytorium i dodajemy go do APT-a [1], pobieramy i umieszczamy w folderze /etc/apt/sources.list.d/ wpis o nowym repozytorium [2], aktualizujemy cache wszystkich repozytoriów APT-a [3] oraz instalujemy właściwy program i plugin do obsługi Spotify [4].

Jeśli nie chcemy Spotify, w ostatniej linijce możemy pominąć "mopidy-spotify". Mopidy obsługuje także dużo więcej pluginów do podobnych serwisów i nie tylko. Ich lista znajduje się tutaj: http://docs.mopidy.com/en/latest/ext/.

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/mopidy.list
sudo apt-get update
sudo apt-get -y install mopidy mopidy-spotify

Repozytorium oprogramowania to serwer lub grupa serwerów z których przy pomocy programu apt-get w Debianie (i pochodnych) możemy pobierać i instalować programy (w pakietach) już przygotowane i skompilowane dla naszej dystrybucji. Każde repozytorium ma parę kluczy - publiczny i prywatny. Przy pomocy jednego z kluczy jesteśmy w stanie odszyfrować dane zakodowane tym drugim. Sumy kontrolne, czyli wartości umożliwiające nam sprawdzenie czy pakiet nie został zmieniony podczas transmisji w sieci, są szyfrowane kluczem prywatnym serwera repozytorium. Następnie przy pomocy pobranego w pierwszej linijce klucza publicznego jesteśmy w stanie odszyfrować pierwotną sumę kontrolną i porównać ją z nowo wygenerowaną dla pobranego pakietu. W ten sposób upewniamy się że nikt (czyt. NSA) po drodze nie podmienił nam pakietu. Oczywiście dzieje się to automatycznie.

4. Uruchamiamy Mopidy. Program wyświetli błąd i się wyłączy, ale wygeneruje przy okazji plik konfiguracyjny, którego teraz nie będziemy musieli pisać od nowa tylko zmienimy odpowiednie wartości.

mopidy

5. Edytujemy plik konfiguracyjny Mopidy przy pomocy edytora nano. Wpisujemy:

nano /home/pi/.config/mopidy/mopidy.conf

a) Na początku odnajdujemy sekcję audio oraz zmienną output, usuwamy znak # z początku linijki i zmieniam zawartość zmiennej na podaną poniżej:

[audio]
output = capsfilter caps="audio/x-raw-int,depth=16,channels=1" ! wavenc ! queue ! filesink location=/tmp/mopidy.wav

Jest to zapis dla Gstreamera w którym informujemy go co ma zrobić z wyjściem audio programu. Tutaj najpierw następuje połączenie kanałów audio, tak aby uzyskać dźwięk mono oraz zmiana ilości bitów na próbkę dźwięku (sample) z 32 na 16, następnie zamiana/zakodowanie ścieżki dźwiękowej do formatu wav i zapis do pliku /tmp/mopidy.wav. /tmp/mopidy.wav to nie do końca prawdziwy plik, ale o tym za chwilę.

b) W kolejnej sekcji decydujemy czy chcemy korzystać z lokalnej biblioteki plików na karcie pamięci (lub jakimkolwiek przymontowanym dysku) i jeśli tak, gdzie ma się ta biblioteka znajdować. Domyślnie wtyczka local jest włączona, więc jeśli chcemy korzystać z lokalnej biblioteki zmienną enabled zostawiamy w spokoju i odkomentowujemy (usuwamy #) zmienną media_dir, a następnie podajemy w niej ścieżkę do folderu w którym będziemy trzymać pliki mp3, flac itp. Jeśli nie chcemy korzystać z biblioteki lokalnej, odkomentowujemy zmienną enabled i zmienimy jej zawartość na false. media_dir zostawiamy w spokoju. Bibliotekę proponuję umieścić w /home/pi/mopidy.

[local]
enabled = false
--lub--
media_dir = /home/pi/mopidy

c) Tutaj decydujemy czy chcemy korzystać ze wtyczki Spotify czy nie. Jeśli nie instalowaliśmy wtyczki mopidy_spotify, tej sekcji nie będzie w configu, więc nie musimy nic tutaj wyłączać. Jeśli chcemy korzystać ze Spotify, usuwamy znak # z przed linii username i password i podajemy tam nasz login i hasło do Spotify. Jeśli rozmyśliliśmy się ze Spotify już po instalacji wtyczki, podobnie jak poprzednio, ustawiamy zmienną enabled na false, oczywiście wcześniej ją odkomentowując.

[spotify]
enabled = false
--lub--
username = aaa
password = bbb

Aby wyjść z nano wciskamy Ctrl+X oraz T lub Y (w zależności od wersji językowej systemu) i zatwierdzamy enterem że chcemy zapisać zmiany.

6. Tworzymy plik specjalny FIFO. Wszystko co do takiego pliku zostanie zapisane jest przekazywane od razu do odczytujących go programów, ale nie jest nigdzie zapisywane. U nas zapisywać będzie Mopidy, a odczytywać pifm.

mkfifo /tmp/mopidy.wav

7. Jeśli korzystamy z lokalnej biblioteki muzycznej, tworzymy katalog w którym będziemy trzymać nasze empetrójki i je tam wrzucamy [1], a następnie indeksujemy bibliotekę [3].

mkdir /home/pi/mopidy
--wrzucamy pliki--
mopidy local scan

Bibliotekę będziemy musieli zawsze indeksować [3] po dodaniu do niej plików. Po zaindeksowaniu konieczne będzie ponowne uruchomienie Mopidy.

8. Przy pomocy tych poleceń instalujemy screena [1] i uruchamiamy w tło serweroodtwarzacz mopidy [2] oraz transmiter FM pifm [3]. W trzeciej linijce przedostatni parametr - u mnie 87.6 to częstotliwość na jakiej nadajemy. Możemy podać tutaj dowolną od 1 do 250 MHz.

sudo apt-get -y install screen
screen -dmS mopidy mopidy
screen -dmS pifm sudo pifm /tmp/mopidy.wav 87.6 44100

screen -dmS uruchomi nasze polecenia w tło. Wartość po S to nazwa sesji - dzięki niej będziemy mogli łatwo dostać się do konsoli z uruchomionymi poleceniami, choćby po to żeby sprawdzić co się dzieje gdy coś nie będzie działało prawidłowo, wpisując screen -dr nazwa. W dalszej części znajdują się właściwe polecenia uruchamiające programy.

9. Instalujemy klienta MPC do sterowania naszym odtwarzaczem:

sudo apt-get -y install ncmpcpp

10. Uruchamiamy klienta MPC i wybieramy utwór z naszej kolekcji lub wyszukujemy jakiś z bazy Spotify.

ncmpcpp

Aby przejść do opcji z górnej belki pilota wybieramy ich numer na klawiaturze. Dalej poruszamy się strzałkami.

--

Zdjęcie anteny oraz schemat pinów GPIO pochodzi ze strony http://malinowepi.pl/post/45982694540/malinowe-radio-pierwsze-doswiadc... i jest udostępniony za zgodą autora.

Zdjęcie Raspberry B rev 2.0 pochodzi z oficjalnej strony projektu.

--

Edit: Pojawiają się głosy że do działania radia może być potrzebny jeszcze pakiet gstreamer0.10-plugins-bad. Instalujemy go tak:

sudo apt-get install gstreamer0.10-plugins-bad
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.