Donedávna jsem situaci řešil tak, že když jsem pracoval v kanceláři, používal jsem jako přehrávač počítač. To s sebou neslo následující úskalí:
- V task baru nebo v záložce v prohlížeči jsem měl neustále jednu pozici obsazenou nějakým přehrávačem
- Pokud jsem chtěl resetovat PC, musel jsem přerušit poslech
- Stolní PC nemá reproduktory, takže jsem musel využívat sluchátka
- Zvuk z notebooku není žádný zázrak
Přehrávání z počítače bylo navíc naprosto nevhodné v případě, že jsem chtěl poslouchat například při svařování v dílně. Při takových příležitostech jsem používal telefon, který tím ovšem dost trpěl a navíc kvalita zvukového přednesu byla tristní.
… a pak, jednoho krásného dne, jsem při úklidu sklepa narazil na starý, 20 let nepoužívaný a dost poškozený CD/radio/kazetofon, na kterém už fungoval pouze přijímač FM rádia. Rozhodl jsem se tento odpad zkusit přetvořit na zařízení, které by splňovalo moje požadavky na přehrávač on-line audia. Ve skříni se mi válelo Raspberry Pi, pro které jsem momentálně neměl využití, a tak jsem začal bastlit.
Příprava Hardware
Začal jsem s přípravou „železa“. Článek píšu až zpětně a nehodlám svoje rádio, které mi tady pěkně vyhrává, rozebrat jen proto, abych mohl zevrubně dokumentovat způsob a úroveň vnitřní montáže, která beztak není nijak úctyhodná. Omezím se na fotografie vnějšího charakteru.
Postupoval jsem tedy následovně:
- Rozebral jsem přehrávač
- Identifikoval jsem modul koncového zesilovače, který jsem, spolu s napájecím zdrojem, jako jediný ponechal tam, kde byl
- Ostatní, teď už nepotřebné části, tj. kazetovou mechaniku, FM modul a CD mechaniku s ovládací elektronikou, jsem odstranil.
- Do prostoru po CD mechanice jsem upevnil Raspberry Pi,
- Další část volného prostoru jsem využil pro umístění 5V napájecího adaptéru.
- Navíc jsem na přístroj osadil dva vypínací konektory JACK 6.3mm, které mi umožňují k přehrávači připojit externí reproduktory.
Zapojení
Zapojení je triviální. Musí se zajistit napájení Raspberry Pi a propojit jeho audio výstup s koncovým zesilovačem.
5V napájecí adaptér jsem za pojistkou(!) připojil ke svorkám přívodu síťového napětí na napájecím zdroji přehrávače. Napojení jsem provedl odborně, izolovanými vodiči, které jsem přiletoval na vidlici adaptéru a zaizoloval smršťovacími dutinkami.
Propojení audio výstupu jsem provedl s využitím stíněného kabelu, který jsem i s 3,5mm konektorem jack odstřihl ze starých sluchátek, kterých se mi v zásuvce u stolu povaluje hned několik. Aby bylo možné komfortně řídit hlasitost, zařadil jsem mezi Raspberry Pi a zesilovač potenciometr. Použil jsem logaritmický stereo 1KΩ. Doporučuji koupit co nejdražší a nejkvalitnější kus.
Původně jsem se domníval, že na tom nesejde. Koupil jsem „klasiku“, kterou jsem si pamatoval ze svých dětských let, ale výsledek byl otřesný. Chrastění, bručení 50 Hz a šum, to byla daň za ušetřených 50 Kč. Po rozebrání už hotového přístroje a výměně potenciometru za kvalitní kus, během které jsem sebe a všechno okolo vydatně častoval nadávkami všeho druhu, už bylo všechno v pořádku.
Pro oddělení případných stejnosměrných složek jsem za potenciometr zařadil svitkové kondenzátory s kapacitou 1000 nF. Pro úplnost uvádím schéma zapojení, které jsem pracně vymaloval v Gimpu. Doufám, že si z dob svého elektrotechnického období pamatuji správně schematické značky.
Software
Základním předpokladem pro jakékoliv využití Raspberry Pi je pochopitelně operační systém. Já používám Raspbian, nicméně jsem si skoro jistý, že na konkrétním systému nesejde. Základní systém jsem doplnil o několik dalších komponent:
- SSH server
- VNC server
- Apache s podporou PHP
Jelikož přehrávač nemá žádný displej, nastavil jsem si do /etc/rc.local
akustické hlášení aktuální IP adresy.
# Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then echo "My IP address is $_IP" | festival --tts fi
Nastavení SSH a VNC tady nebudu rozebírat. SSH jsem nastavil v cuku letu, s VNC jsem trochu bojoval, takže jsem se nakonec rozhodl cvičně napsat vlastní software pro vzdálený přístup k ploše. O tom bych možná mohl v budoucnu ještě poreferovat.
Primární přístup pro ovládání svého přehrávače jsem se rozhodl vytvořit jako webovou službu. Apache jsem ponechal ve výchozím nastavení, pouze jsem přesměroval jeho pracovní adresář do /home/pi/http
a nastavil web server tak, aby běžel pod uživatelem pi. Celý „site“ jsem pak implementoval v tomto adresáři. Kopii mého http adresáře si můžete pro inspiraci stáhnout: http.zip. V úvoduindex.php
je „konfigurace“, což je jednoduché pole s položkami specifikujícími ikonu, jméno a příkaz, který má položka spustit. Položky jsou odděleny svislítkem.
$cmds = array( "bbc1.png|Radio BBC1|cvlc http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p", "bbc2.png|Radio BBC2|cvlc http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio2_mf_p", "bbc3.png|Radio BBC2|cvlc http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio3_mf_p", "bbc4.png|Radio BBC4|cvlc http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4fm_mf_p", "cr1.png|CR 1|cvlc http://icecast8.play.cz/cro1-128.mp3", "cr2.png|CR 2|cvlc http://icecast8.play.cz/cro2-128.mp3", "jazz.png|Radio JAZZ|cvlc http://ice3.abradio.cz/crojazz128.mp3", "orion.png|Radio Orion|cvlc https://playerservices.streamtheworld.com/api/livestream-redirect/HITRADIO_ORION.mp3", "majak.png|Majak|cvlc http://icecast.vgtrk.cdnvideo.ru/mayakfm_mp3_192kbps", "jazz891.png|JAZZ 89.1|cvlc https://nashe1.hostingradio.ru/jazz-128.mp3", );
Skript funguje tak, že pokud je zavolán s číselným parametrem, zkusí vyhledat v poli příslušnou položku, spustí příkaz a zároveň uloží číslo volby do souboru number
a příkaz do souboru command.sh
.
Následně vytvoří odkazy pro aktivaci jednotlivých položek tak, že vytvoří odkaz na sebe sama s číselným parametrem položky, čili například pro 1. položku vytvoří odkaz.
<a href="index.php?1"><img src="bbc1.png" alt="Radio BBC1"/></a>
Ze souboru number
přečte číslo aktuálně aktivní položky, kterou zvýrazní zeleným „světýlkem“.
Výsledná stránka vypadá následovně:
Souborcommand.sh
slouží k aktivaci posledního příkazu po restartu. Poslední příkaz je aktivován pomocí souboru
/home/pi/.config/autostart/radio.desktop
s následujícím obsahem:
[Desktop Entry] Type=Application Name=Radio Icon=radio Exec=/home/pi/http/command.sh
Funguje to
V tomto bodě jsem byl prakticky spokojen. Měl jsem přehrávač, který po zapnutí nahlásí svoji IP adresu a „naladí“ stanici, kterou jsem naposledy poslouchal. Kromě toho mi umožňuje snadno stanici přepnout z PC nebo z telefonu. Pokud chci, můžu připojit USB nebo pomocí vzdálené plochy přehrávat hudbu z libovolného internetového zdroje.
Jako bonus jsem do přehrávače doplnil ještě skript cron.hourly
, který provádí zálohy souborů z mého verzovacího serveru.