Internetinis radijo imtuvas su Raspberry Pi #3 – pasidaryk pats

Šiame įraše aprašysiu kaip reikia pasidaryti internetinį imtuvą iš Raspberry Pi, kuriuo jau naudojuosi beveik 3 metus.

Raspberry Pi iradio viduje

Internetinis radijo imtuvas su Raspberry Pi #1

Internetinis radijo imtuvas su Raspberry Pi #2 – naujas korpusas

MPD

Šio internetinio radijo pagrindinį darbą atlieką MPD (Music Player Daemon) grotuvas. Prie MPD grotuvo galima prisijungti per tinklą ir jį valdyti: matyti būseną, koreguoti grojaraštį, valdyti patį grotuvą. Windows aplinkoje naudoju “Gnome Music Player Client“, o Android įrenginiuose “MPDroid“. Programoje reikia įvesti IP adresą, kurį priskyrėte Raspberry Pi.

Su Raspberry paketu platinama mpd versija yra gana sena ir kai kurių formatų nesugeba groti. Galima bandyti patiems kompiliuoti naujesnę MPD versiją.

Įvairių stočių adresus tenką ieškoti internetu įvairiais būdais. Kartais pavyksta juos iškapstyti iš web grotuvų ir t.t.

Python kodas (iradio.py)

Papildomą įrangą (ekranėlį ir mygtukus) aptarnauja mano python kodas. Jei papildomos įrangos nenaudojate – šis kodas nereikalingas.

Python kodą rašiau pats, panaudodamas įvairias bibliotekas ir kitą informaciją.

Mygtukais valdomas grojaraštis (pirmyn, atgal) bei pradedama groti nuo pirmos pozicijos.

Ekranėliai gali būti dviejų tipų: tekstinis LCD su HD44780 valdikliu ar tekstinis OLED su WS0010 (RS0010) valdikliu. Paprasčiausia įsigyti LCD ekranėlį su HD44780 atitikmeniu. Kodas pritaikytas 2×20, bet galima naudoti kad ir kitokį simbolių kiekį turinčius ekranėlius. Simbolių kiekis eilutėje nustatomas parametru (LCD_WIDTH), o pagal ekranėlio tipą reikia pasirinkti init funkcija (lcd_init arba oled_init).

Kai kurios stotys nesiunčia grojamų kūrinių informacijos, bet rodo ją web grotuvuose, tad kai kurių stočių informaciją traukių iš ten 🙂

Pasiruošimas

Reikės:

  • Rasperry Pi minikompiuteris. Tinka bet kuri pilno dydžio (ne zero) Raspberry Pi versija.
  • SD kortelė (pakanka 4GB). Kortelės tipas (SD ar uSD) priklauso nuo Raspberry versijos.
  • LCD arba OLED ekranėlis. Ekranėlis nėra būtinas, reikalingas norint matyti informaciją.
  • Mygtukai (nefiksuojami). Mygtukai nebūtini, reikalingi jei norima valdyti imtuvą fiziškai.
  • Internetas. Internetą galima prijungti naudojant Ethernet kabelį arba WiFi ryšį. Senesnės Raspberry verijos (iki 3) neturėjo integruoto WiFi modulio, tad galima naudoti USB WiFi adapterius.
  • ausinės, stiprintuvas ar kitas įrenginys galintis atkurti garsą iš minikompiuterio
  • maitinimo šaltinis (5V). Maitinimo šaltinis turi užtikrinti 2-3A srovę.
  • klaviatūra ir monitorius. Būtini tik pirmiems konfigūravimams

Sujungimas

Ekranėlį ir mygtukus papildomą įrangą jungiame prie kontaktų jungties (GPIO). Per šia jungtį taip pat galime tiekti 5V maitinimą minikompiuteriui.

Ekranėlį prijungiame taip

# 1 : GND = GND
# 2 : VCC = 5V
# 3 : Kontrastas = 0-5V per potenciometrą arba tiesiog į GND
# 4 : RS = GPIO 7
# 5 : R/W = GND
# 6 : En = GPIO 8
# 7 : D0 = nenaudojamas
# 8 : D1 = nenaudojamas
# 9 : D2 = nenaudojamas
# 10: D3 = nenaudojamas
# 11: D4 = GPIO 25
# 12: D5 = GPIO 24
# 13: D6 = GPIO 23
# 14: D7 = GPIO 18
# 15: LCD Backlight +5V
# 16: LCD Backlight GND

Kiekvienas mygtukas turi turėti po 100nF lygiagrečiai prijungtą kondensatorių. Visų mygtukų vienas kontaktas jungiamas į GND, kiti prie atitinkamų GPIO išvadų:

BTN_RIGHT = GPIO 10
BTN_MENU = GPIO 11
BTN_LEFT = GPIO 9

Raspberry Pi konfigūravimas

Parsiunčiame Raspbian Jessie Lite atvaizdą (be grafinės aplinkos) ir jį išplečiame. Atvaizdą su *.img plėtiniu reikią įrašyti į SD kortelę. Tam galime panaudoti Win32DiskImager programą. Paruoštą SD kortelę įstatome į Raspberry Pi, viską įjungiame ir leidžiam užsikrauti.

Užsikrovus matome komandine eilutę, kurioje prašoma prisijungti. Įvedame prisijungimo vardą “pi” ir slaptažodį “raspberry”.

Pasinaudojant Raspberry konfigūravimo įrankiu, galima pakeisti pagrindinius nustatymus. Šį įrankį galime paleisti įrašę konsolėje tokią komandą:

sudo raspi-config

Verta pakeisti hostname (2 Hostname) į kažką labiau tinkamo šiai sistemai, pvz. iradio. Jei Raspberry Pi planuojate konfigūruoti per SSH, būtina įjungti ir šią funkciją (5 Interfacing options -> SSH) .

Pakeitus nustatymus su raspi-configuration įrankiu iškarto siūlau susitvarkyti tinklo nustatymus. Esamus tinklo įrenginius ir jų būsenas galima pamatyti įvedus komandą:

ifconfig

Jei naudosite laidinį tinklą nustatykite statinį IP adresą. Tai galima atlikti redaguojant /etc/network/interfaces failą:

sudo nano /etc/network/interfaces
iface eth0 inet static
 address 192.168.1.60
 netmask 255.255.255.0
 gateway 192.168.1.1

Kitas variantas turėti statinį IP adresą yra jį nustatyti pagal MAC adresą maršrutizatoriuje.

Jei naudosite bevielį tinklą, turi būti įstatytas bevielio tinklo adapteris. Raspberry 3 jau turi integruotą bevielį tinklą. Tada galima su norimu tinklo įrenginiu nuskenuoti egzistuojančius bevielius tinklus:

sudo iwlist wlan0 scan

Jei matome savo beielį tinklą, galime prie jungtis. Tai atliekame redaguodami /etc/wpa_supplicant/wpa_supplicant.conf failą:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Failo pabaigoje pridedam eilutes, atitinkančius tinklo nustatymus:

network={
 ssid="SSID_pavadinimas"
 psk="pass_slaptazodis"
 }

Pasitikrinti ar pavyko prisijungti galima komanda:

ifconfig wlan0

Jei addr laukelis turi adresą, prisijungti pavyko sėkmingai. Norint nustatyti statinį IP adresą, viskas daroma kaip ir laidiniam tinkui, tik nustatymus reikia rašyti prie wlan0 (ar atitinkamas).

Jei bet kuria sąsaja pavyko prisijungti prie tinklo ir įjungėte SSH, tolesnes komandas galima vykdyti prisijungus iš kito kompiuterio. Tokiu atveju prie Raspberry Pi tampa nebereikalinga klaviatūra ir monitorius. Paprastai prisijungimui per SSH naudoju programėlę Putty. Žinoma, komandas ir toliau galima vykdyti tiesiogiai per Raspberry. Nuo čia baigiasi bendras Raspberry Pi konfigūravimas ir prasideta tik tai, kas reikalinga internetiniam radijo imtuvui.

Atnaujinkite Raspberry Pi paketų sąrašą ir instaliuokite reikalingus paketus:

sudo apt-get update
sudo apt-get install mpc mpd python-mpd python-rpi.gpio python-requests python-httplib2

Instaliavimo metu gali reikėti paspausti Yes (y).

Baigus instaliavimą, galima jungtis prie MPD grotuvo. Tam perkraukite rankiniu būdu įjunkite MPD arba tieisog perkraukite Raspberrry Pi. Prisijungus su bet kuriuo anksčiau minėtu MPD grotuvo klientu ir pridėjus radijo stoties adresą (pvz. http://5.20.223.18:80/relaxfm128.mp3) bei pradėję jį groti per ausinių išėjimą turite tai girdėti. MPD grotuvas turi daug nustatymų, kurie keičiami faile /etc/mpd.conf, tačiau dažniausiai jų keisti nebūtiną.

Jei reikia pakeisti numatytą garso lygį, tai galime atlikti panaudojant šią alsamixer komandą:

sudo alsamixer

Rodyklėmis aukštyn/žemyn nustatomas lygis. Garso lygį taip pat galima reguliuoti naudojant ir MPD klientais.

 

Tolesni žingsniai reikalingi jei norite naudoti ekranėlį ir mygtukus.

Nueikite į šakninį katalogą, sukurkite aplanką iradio ir jį atidarykite:

cd /
sudo mkdir iradio
cd iradio

Tada į šį aplanką reikia įkelti python programavimo kalba parašytą kodą iradio.py Vienas iš paprastesnių variantų yra parsisiųsti GitHub iradio repositoriją ir ją išplėsti:

sudo wget https://github.com/Dovydas-R/iradio/archive/master.zip
sudo unzip -j master.zip

Dabar jau galima rankinių būdu paleistį šį kodą ir patikrinti kaip veikia:

sudo python /iradio/iradio.py

Jei kodas bus sėkmingai pradėtas vykdyti, ekranėlis pradėti rodyti grotuvo informaciją ir reaguoti į mygtukus. Taip pat konsolėje matysime įvairią derinimo informaciją.

Dabar reikia padaryti, kad py kodas būtų pradedamas vykdyti kiekvieną kartą įjungus Raspberry Pi. Tam reikia paredaguoti /etc/rc.local failą:

sudo nano /etc/rc.local

ir prieš exit 0 įdėti tokias eilutes:

printf "Starting iradio"
 sudo python /iradio/iradio.py  &

 

Projekto iradio repositorija GitHub

Spread the love

One thought on “Internetinis radijo imtuvas su Raspberry Pi #3 – pasidaryk pats

Leave a Reply to Robchiz Cancel reply

Your email address will not be published. Required fields are marked *