我为朋友的酒吧内置了一个盒子,里面有一个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浏览量
16661 -
无线电
+关注
关注
60文章
2144浏览量
116502
发布评论请先 登录
相关推荐
评论