Talaan ng mga Nilalaman:

Isang-pindutan na Radio Streaming Box: 7 Mga Hakbang (na may Mga Larawan)
Isang-pindutan na Radio Streaming Box: 7 Mga Hakbang (na may Mga Larawan)

Video: Isang-pindutan na Radio Streaming Box: 7 Mga Hakbang (na may Mga Larawan)

Video: Isang-pindutan na Radio Streaming Box: 7 Mga Hakbang (na may Mga Larawan)
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, Setyembre
Anonim
Isang-pindutan na Radio Streaming Box
Isang-pindutan na Radio Streaming Box

Nagtayo ako ng isang kahon para sa bar ng aking kaibigan na mayroong isang Raspberry Pi sa loob at sa pagpindot ng isang pindutan ay dumadaloy ito ng audio sa isang website gamit ang Darkice at Icecast, habang sabay na sinisindi ang isang sign na 'On-Air'. Akala ko ito ay isang bagay na ginagawa na ng mga tao ngunit pagkatapos ng malawak na paghahanap ay wala akong nahanap at nagpasyang alamin ito para sa aking sarili at gawin itong Makatuturo.

Gumamit ako ng isang Raspberry Pi 3+ B ngunit hanggang sa masasabi kong gagana ito sa anumang Pi (marahil ang mga numero ng GPIO pin ay magkakaiba, hindi ko mapapatunayan iyon). Ginamit ko ang NOOBS package para sa OS at bumili ng sobrang simpleng soundcard para sa input. Nagdagdag din ako ng isang ligtas na shut-down button at aktibidad na LED sa kahon upang maprotektahan ang Pi.

Kakailanganin mong:

Raspberry Pi

NOOBS package sa isang SD card

On / Off switch (Gumamit ako ng isang malaking pulang pindutan ng emergency na tumigil tulad nito, ngunit maaari itong maging anumang uri ng 'click' switch)

Push Button

1 LED

Isang tanda na 'On-Air', gumawa ako ng sarili ko gamit ang isang LED array

Panghinang na bakal at maliit na konektor-board (pinutol ko lang ang isang strip mula sa isa sa mga ito sa paligid ko)

Soundcard (Gumamit ako ng napakasimple na tulad nito)

Hakbang 1: I-set-up ang Iyong Server

Para sa tunay na istasyon ng radyo na ginagamit namin hindi ko nagawa ang bahaging ito dahil wala akong access sa server at ginawa ito ng aking kaibigan, ngunit may isang pangunahing gabay sa pag-set up sa website ng Icecast at nakakuha ako ito ay gumagana mula sa Pi sa simula lamang upang makita kung paano ito napupunta. Bilang kahalili maaari kang makakuha ng isang account sa internet-radio.com at gumagana ito sa Darkice.

Hakbang 2: I-set-up ang Pi at I-install ang Darkice

Kumuha ng isang SD Card na may package na NOOBS. Sa sandaling nabuksan mo ang Raspbian at na-install ang lahat ng mga update buksan ang isang window ng Terminal at i-type:

sudo apt-get update

sudo apt-get install ng darkice

Ang Darkice ay bahagi ng Debian kaya awtomatiko itong mag-i-install, tumatagal ng ilang sandali.

Kapag natapos na ito sa agarang uri:

madilim

Magbibigay ito ng isang mensahe ng error at hindi tatakbo, ngunit ok lang iyon. Sa mensahe sasabihin nito tulad ng:

Paggamit ng config file: /etc/darkice.cfg

Kailangan mong i-edit ang file na iyon, kaya sa agarang uri:

sudo nano /etc/darkice.cfg

I-edit ang file na bubukas gamit ang impormasyon sa wiki na ito. Pahina ng radioreference, kapag tapos ka pindutin ang CTRL-X upang isara, Y upang mai-save at dapat kang bumalik sa prompt ng Terminal. Palaging magandang i-reboot pagkatapos mag-install ng isang bagong programa kaya't i-type:

i-reboot

at kapag na-restart ng Pi muli ang isang window ng Terminal. Ngayon kapag na-type mo ang 'Darkice' dapat itong tumakbo nang walang anumang mga mensahe ng error. Kung pupunta ka sa https:// HISSERVERADDRESS: 8000 / (8000 o alinmang port na itinalaga sa iyong server ng icecast) dapat kang makakuha ng isang pahina ng mga istatistika na nagsasabing konektado ka. Kung hindi, sabunutan ang config file (ang linya ng audio input ay nagbigay sa akin ng ilang mga problema ngunit sinubukan ko ang lahat ng mga pagpipilian at kalaunan natagpuan ang aking soundcard). Kapag ang Darkice ay tumatakbo nang maayos na lumipat sa susunod na hakbang.

Hakbang 3: Stream Button at On-Air Sign

Stream Button at On-Air Sign
Stream Button at On-Air Sign

Ginawa ko ang isang pangkat ng iba't ibang mga tutorial para dito dahil walang tiyak na isa para sa pagtatalaga ng isang aksyon sa isang pindutan sa Python. Ang pinakamalaking problema na kinakaharap ko ay ang pagkuha ng Darkice na tumakbo sa background (at sa gayon ay hindi i-freeze ang script ng Python nang magsimula itong tumakbo) ngunit tinanong ko ang isang kaibigan na taga-coder na lumapit at tumulong at naisip niya ang isang paraan upang gawin ito sa mga sheet ng pagsulat, isang bagay na wag mong makuha. Maliwanag na maaari ding posible gamit ang isang '&' sa isang lugar sa code ngunit wala akong coder at kung ano ang mayroon akong mga gawa kaya't pinili kong huwag makialam dito. Sa sandaling natapos ko ang lahat ay nagsimula ako sa pag-whittling lahat ng mga cable mula sa breadboard hanggang sa maiiwan ako sa sumusunod na set-up:

GPIO16 sa isang panlabas na 3-point na konektor.

GPIO7 sa positibong terminal ng LED array para sa ON-Air sign.

GPIO25 sa click-switch.

Ang kabilang panig ng click-switch ay nakakabit sa 3-point na konektor.

Ang negatibong terminal ng LED array ay nakakabit din sa 3-point na konektor.

(Ang iba pang mga bahagi sa diagram ay ipinaliwanag sa susunod na hakbang).

Ang script ng Python na natapos namin ay ang mga sumusunod (mangyaring tandaan na ito ay isang maituturo para sa buong proyekto, hindi ko talaga alam na sapat upang ipaliwanag ang code. Pinagsama ko ito mula sa iba't ibang iba pang mga tutorial para sa iba't ibang mga pag-andar):

import timeimport os import RPi. GPIO bilang GPIO GPIO.setwarnings (Mali) GPIO.setmode (GPIO. BOARD) ledPin = 12 buttonPin = 16 GPIO.setup (ledPin, GPIO. OUT) GPIO.setup (buttonPin, GPIO. IN, pull_up_down = GPIO. PUD_UP)

toggle = Mali

def start_darkice ():

print ('calling subprocess') #result = subprocess.call ('sh screen -S darkice -d -m darkice') os.system ('screen -S darkice -d -m darkice') print ('resume') def stop_darkice (): os.system ('screen -X -S darkice quit')

habang Totoo:

buttonState = GPIO.input (buttonPin) kung buttonState == True: kung hindi i-toggle: toggle = True print ('turn on darkice') start_darkice () #print ('BUTTON STATE TRUE') GPIO.output (ledPin, GPIO. HIGH)

iba pa:

kung toggle: toggle = False print ('stopping darkice') stop_darkice () #print ('BUTTON STATE FALSE') GPIO.output (ledPin, GPIO. LOW) time.sulog (1)

Ang py file ay naka-attach sa Instructible na ito, maaari mo lamang itong i-download at sundin ang Hakbang 5 kung nais mo.

Hakbang 4: Ligtas na Button na Shutdown at LED na Aktibidad

Ligtas na Button ng Shutdown at LED na Aktibidad
Ligtas na Button ng Shutdown at LED na Aktibidad

Para lamang sa kaligtasan at upang pahabain ang buhay ng Pi Nagdagdag ako ng isang ligtas na shutdown button at isang panlabas na aktibidad na LED upang malaman ng mga tao kung ligtas na i-unplug ang kahon. Madali akong natagpuan ang mga tutorial para sa pareho sa mga ito, ngunit napansin ko na ang Raspberry Pi 3 B + ay mayroong isang ACT LED na nakatalaga sa GPIO pin habang ang mga naunang modelo ay hindi at maaaring maging problema kung mayroon kang isang mas matandang Pi.

Ikabit ang positibong terminal ng LED sa GPIO13 at ang negatibo sa GPIO26. Upang gumana ang ACT LED kailangan mong i-edit ang config.txt file sa direktoryo ng BOOT. Mahahanap mo ito sa browser ng Raspbian o sa:

sudo nano /usr/boot/config.txt

Kapag ini-edit mo ang file idagdag lamang ang mga sumusunod na linya:

# Gumamit ng panlabas na LED bilang SD ACT LED dtoverlay = pi3-act-led, gpio = 19

Ngayon ang panlabas na LED wil flicker na may aktibidad ng SD card.

Ikabit ang mga push switch terminal sa GPIO3 at GPIO8. Natagpuan ko ang sumusunod na code mula sa isang tutorial at gumagana ito ng maayos:

i-import ang timefrom gpiozero import Button mula sa subprocess na pag-import ng check_call mula sa pag-pause ng signal

def shutdown ():

check_call (['sudo', 'poweroff'])

shutdown_btn = Button (2, hold_time = 1)

shutdown_btn.when_held = shutdown

i-pause ()

oras. tulog (1)

Ang py file na ito ay nakakabit din para ma-download mo kung nais mo. Ang aking pindutan ay dapat na gaganapin sa 1 segundo, kung nais mong baguhin ang pagbabago na baguhin ang halagang 'hold-time ='.

Hakbang 5: Gawin ang Mga Script ng Python Mula sa Boot

Muli, maraming mga tutorial sa paksang ito, ginamit ko ang isang ito mula sa Dexter Industries at sinundan ang unang hakbang sa pamamagitan ng pag-edit ng rc.local file.

sudo nano /etc/rc.local

Dito kailangan mong idagdag ang kumpletong file-path sa dulo ng dokumento, kumpleto sa isang '&' sa dulo ng bawat linya. Dapat kang magdagdag ng isang linya para sa bawat isa sa mga file:

sudo python / home / pi / YOURFILENAME, py &

sudo python /home/pi/YOURFILENAME2.py &

bago ang linya

exit 0

Ang '&' sa dulo ng bawat linya ay mahalaga upang matiyak na ang mga loop ng programa.

Hakbang 6: Buuin ang Kahon

Buuin ang Kahon
Buuin ang Kahon
Buuin ang Kahon
Buuin ang Kahon
Buuin ang Kahon
Buuin ang Kahon

Nasa iyo ang lahat. Talagang kailangan lamang ang laki ng Pi, ngunit naglalagay ako ng isang tagapiga sa aking set-up upang mapanatili ang stream ng radyo sa isang medyo pare-pareho na antas upang medyo mas malaki ang kahon. Ang minahan ay may butas sa harap para sa On-Air sign at isa para sa Big Red Button, kasama ang gumawa ako ng isang maliit na card ng pagtuturo para sa mga DJ at inayos ito sa ibaba ng pindutan. Sa gilid ng kahon mayroong isang butas para sa pindutan ng itulak, ang LED LED at ang audio-input, kasama ang mga inlaid na tagubilin para sa kawani ng bar kung paano ligtas na ma-shut-down ang kahon.

Hakbang 7: Pag-install

Pag-install
Pag-install
Pag-install
Pag-install
Pag-install
Pag-install
Pag-install
Pag-install

Ayusin ang lahat ng magkakahiwalay na mga bahagi sa iyong kahon, naisip na laging mabuti na payagan ang ilang sirkulasyon ng hangin sa paligid ng Pi upang maiwasan ang sobrang pag-init. Ikabit ang mga audio cable mula sa iyong panghalo, pindutin ang pindutan at tangkilikin ang pag-broadcast!

Inirerekumendang: