一键无线电流媒体盒教程

我为朋友的酒吧内置了一个盒子,里面有一个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周围进行一些空气循环以防止过热总是好的。从调音台连接音频线,点击按钮,享受广播!


土壤养分速测仪的作用是什么,它有哪些功能
华强北分销商的转型之路(上)
WTN6低功耗8脚OTP语音芯片—天然气报警语音芯片
中国新能源汽车的总体增长仍远强于美国和其他新能源汽车市场
小华半导体亮相“ELEXCON 2022”, MCU四大产品线诠释芯蓝图
一键无线电流媒体盒教程
Z-Wave无线网络协议的作用是什么
“万物智联·共数未来”2023年移远通信物联网生态大会圆满落幕
小米造车背后的潜力与隐忧
RT9001应用电路 (600ma,超快速瞬态响应LDO稳压
西门子PLC S7-300模拟量的处理方法
格创东智出席2018中国制造业创新大会,开放融合助力制造业转型升级
基于SVM改进的异步电机直接转矩控制系统设计
圆周运动机器人制作方法
二氧化碳传感器用于地下商业街空气质量监测
白炽灯发黑的原因分析
AI调酒师的酒你觉得味道好吗
教你不用三方APP快速查看iPhone/iPad电池循环数
涂魔师Coatmaster非接触测厚仪可非接触测量汽车轮毂
英飞凌成为首家覆盖四大磁传感技术的供应商