电子说
我为朋友的酒吧内置了一个盒子,里面有一个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并安装了所有更新,打开一个终端窗口并输入:
sudo apt-get update sudo apt-get install darkice
Darkice是Debian的一部分,所以它会自动安装,需要一些瞬间。
在提示符完成后输入:
darkice
它会给出一条错误信息但没有运行,但没关系。在消息中它会说:
使用配置文件:/etc/darkice.cfg
您需要编辑该文件,因此在提示符下键入:
sudo nano /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,我真的不太了解代码。我把它拼凑成各种其他的不同功能的教程):
import time
import os
import RPi.GPIO as GPIO
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 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('resuming')
def stop_darkice():
os.system('screen -X -S darkice quit') while True:
buttonState = GPIO.input(buttonPin)
if buttonState == True:
if not toggle:
toggle = True
print('turning on darkice')
start_darkice()
#print ('BUTTON STATE TRUE')
GPIO.output(ledPin, GPIO.HIGH) else:
if toggle:
toggle = False
print('stopping darkice')
stop_darkice()
#print ('BUTTON STATE FALSE')
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浏览器中找到它或使用:
sudo nano /usr/boot/config.txt
编辑文件时,只需添加以下行:
# Use external LED as SD ACT LED
dtoverlay=pi3-act-led,gpio=19
现在外部LED将闪烁,具有SD卡活动。
将按钮开关端子连接到GPIO3和GPIO8。我在教程中找到了以下代码并且工作正常:
import time
from gpiozero import Button
from subprocess import check_call
from signal import pause def shutdown():
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文件。
sudo nano /etc/rc.local
在这里,您需要将完整的文件路径添加到文档的末尾,并附上“&”在每一行的末尾。你应该为每个文件添加一行:
sudo python /home/pi/YOURFILENAME,py & sudo python /home/pi/YOURFILENAME2.py &
就在行
exit 0
'&'之前在每一行的末尾对于确保程序循环非常重要。
第6步:构建框
这完全取决于你。它实际上只需要是Pi的大小,但我在我的设置中放置一个压缩器,以使无线电流保持在相当一致的水平,因此盒子有点大。我的前面有一个用于播出标志的孔和一个用于大红色按钮的孔,另外我为DJ制作了一张小指令卡,并在按钮下方镶嵌了它。在盒子的侧面有一个按钮孔,ACT LED和音频输入,以及酒吧工作人员如何安全关闭盒子的镶嵌说明。
步骤7:安装
将所有单独的组件固定到您的盒子中,请注意,在Pi周围进行一些空气循环以防止过热总是好的。从调音台连接音频线,点击按钮,享受广播!
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !