我為朋友的酒吧內置了一個盒子,里面有一個Raspberry Pi,按下一個按鈕就可以使用Darkice和Icecast將音頻傳輸到網站,同時照明一個'直播'標志。我認為這是人們已經在做的事情,但經過廣泛的搜索后我什么也沒找到,并決定為自己弄清楚并制作這個Instructable。
我使用了Raspberry Pi 3+ B,但我盡我所能告訴它可以在任何Pi上工作(也許GPIO引腳號會有所不同,但我無法證明這一點)。我在操作系統中使用了NOOBS包,并為輸入購買了一個超級簡單的聲卡。我還在盒子中添加了一個安全關閉按鈕和活動LED來保護Pi。
您將需要:
Raspberry Pi
NOOBS包一張SD卡
開/關開關(我使用了一個像這樣的大紅色緊急停止按鈕,但它可以是任何一種'點擊'開關)
按鈕
1個LED
一個'On-Air'標志,我自己制作了一個LED陣列
烙鐵和小連接器板(我只是剪了一個條帶我所擁有的其中一個)
聲卡(我使用了這樣的超簡單)
步驟1:設置 - 你的服務器
對于我們正在使用的實際廣播電臺,我沒有做這個部分,因為我沒有訪問服務器而且我的朋友做了,但有一個基本的在Icecast網站上設置指南,我設法從Pi開始工作,看它是怎么回事。或者你可以在internet-radio.com上獲得一個帳戶,它適用于Darkice。
第2步:設置Pi并安裝Darkice
使用NOOBS包獲取SD卡。一旦打開Raspbian并安裝了所有更新,打開一個終端窗口并輸入:
sudoapt-getupdate sudoapt-getinstalldarkice
Darkice是Debian的一部分,所以它會自動安裝,需要一些瞬間。
在提示符完成后輸入:
darkice
它會給出一條錯誤信息但沒有運行,但沒關系。在消息中它會說:
使用配置文件:/etc/darkice.cfg
您需要編輯該文件,因此在提示符下鍵入:
sudonano/etc/darkice.cfg
使用此wiki.Radioreference頁面上的信息編輯打開的文件,完成后按CTRL-X關閉,Y保存,您應該返回終端提示。安裝新程序后重新啟動總是好的,所以輸入:
reboot
當Pi重新啟動時重新打開終端窗口。現在,當您鍵入“Darkice”時,它應該運行時沒有任何錯誤消息。如果您轉到https://YOURSERVERADDRESS:8000/(8000或您的icecast服務器分配給哪個端口),您應該會得到一個統計信息頁面,說明您已連接。如果沒有,調整配置文件(音頻輸入行給了我一些問題,但我嘗試了所有選項,最終找到了我的聲卡)。一旦Darkice正常運行,繼續進行下一步。
步驟3:流按鈕和播出標志
I為此做了一堆不同的教程,因為沒有特定的教程為Python中的按鈕分配動作。我遇到的最大問題是讓Darkice在后臺運行(因此在開始運行時不會凍結Python腳本)但我請求一位編碼器的朋友來幫忙,他找到了一種方法來編寫表單,我就是這樣的不要。顯然,也可以使用'&'代碼中的某個地方,但我沒有編碼器和我的工作,所以我選擇不搞亂它。一旦我完成所有工作,我就開始削減面包板上的所有電纜,直到我完成以下設置:
GPIO16到外部3點連接器。
GPIO7到用于ON-Air標志的LED陣列的正極端子。
GPIO25到點擊開關。
點擊開關的另一端連接到3點連接器。
LED陣列的負極也連接到3點連接器。
(圖中的其他組件將在下一步中說明) 。
我們最終得到的Python腳本如下(請注意這是整個項目的一個Instructable,我真的不太了解代碼。我把它拼湊成各種其他的不同功能的教程):
importtime
importos
importRPi.GPIOasGPIO
GPIO.setwarnings(False)
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=False defstart_darkice():
print('callingsubprocess')
#result=subprocess.call('shscreen-Sdarkice-d-mdarkice')
os.system('screen-Sdarkice-d-mdarkice')
print('resuming')
defstop_darkice():
os.system('screen-X-Sdarkicequit') whileTrue:
buttonState=GPIO.input(buttonPin)
ifbuttonState==True:
ifnottoggle:
toggle=True
print('turningondarkice')
start_darkice()
#print('BUTTONSTATETRUE')
GPIO.output(ledPin,GPIO.HIGH) else:
iftoggle:
toggle=False
print('stoppingdarkice')
stop_darkice()
#print('BUTTONSTATEFALSE')
GPIO.output(ledPin,GPIO.LOW)
time.sleep(1)
py文件附加到此Instructible,你可以如果您愿意,請下載并按照步驟5進行操作。
步驟4:安全關機按鈕和活動指示燈
為了安全起見為了延長Pi的使用壽命,我添加了一個安全的關機按鈕和一個外部活動LED,讓人們知道什么時候可以安全地拔掉盒子。我很容易找到這兩個教程,但我注意到Raspberry Pi 3 B +有一個ACT LED分配GPIO引腳,而早期型號沒有,如果你有一個較舊的Pi可能會有問題。
將LED的正極連接到GPIO13,將負極連接到GPIO26。要使ACT LED工作,您需要編輯BOOT目錄中的config.txt文件。您可以在Raspbian瀏覽器中找到它或使用:
sudonano/usr/boot/config.txt
編輯文件時,只需添加以下行:
#UseexternalLEDasSDACTLED
dtoverlay=pi3-act-led,gpio=19
現在外部LED將閃爍,具有SD卡活動。
將按鈕開關端子連接到GPIO3和GPIO8。我在教程中找到了以下代碼并且工作正常:
importtime
fromgpiozeroimportButton
fromsubprocessimportcheck_call
fromsignalimportpause defshutdown():
check_call(['sudo','poweroff']) shutdown_btn=Button(2,hold_time=1)
shutdown_btn.when_held=shutdown pause()
time.sleep(1)
此py文件也隨附供您下載如果你想。我的按鈕必須保持1秒鐘,如果你想改變那個'hold-time ='值。
步驟5:讓Python腳本從啟動運行
同樣,有很多關于這個主題的教程,我使用了Dexter Industries的這個教程,并按照第一步編輯了rc.local文件。
sudonano/etc/rc.local
在這里,您需要將完整的文件路徑添加到文檔的末尾,并附上“&”在每一行的末尾。你應該為每個文件添加一行:
sudopython/home/pi/YOURFILENAME,py& sudopython/home/pi/YOURFILENAME2.py&
就在行
exit0
'&'之前在每一行的末尾對于確保程序循環非常重要。
第6步:構建框
這完全取決于你。它實際上只需要是Pi的大小,但我在我的設置中放置一個壓縮器,以使無線電流保持在相當一致的水平,因此盒子有點大。我的前面有一個用于播出標志的孔和一個用于大紅色按鈕的孔,另外我為DJ制作了一張小指令卡,并在按鈕下方鑲嵌了它。在盒子的側面有一個按鈕孔,ACT LED和音頻輸入,以及酒吧工作人員如何安全關閉盒子的鑲嵌說明。
步驟7:安裝
將所有單獨的組件固定到您的盒子中,請注意,在Pi周圍進行一些空氣循環以防止過熱總是好的。從調音臺連接音頻線,點擊按鈕,享受廣播!
審核編輯 黃昊宇
-
流媒體
+關注
關注
1文章
194瀏覽量
16659 -
無線電
+關注
關注
59文章
2139瀏覽量
116434
發布評論請先 登錄
相關推薦
評論