Caixa de streaming de rádio de um botão: 7 etapas (com imagens)
Caixa de streaming de rádio de um botão: 7 etapas (com imagens)
Anonim
Caixa de transmissão de rádio de um botão
Caixa de transmissão de rádio de um botão

Eu construí uma caixa para o bar do meu amigo que tem um Raspberry Pi dentro e com o toque de um botão ele transmite áudio para um site usando Darkice e Icecast, enquanto simultaneamente acende um sinal 'On-Air'. Achei que isso fosse algo que as pessoas já estivessem fazendo, mas após uma extensa pesquisa, não encontrei nada e decidi descobrir por mim mesmo e tornar isso instrutível.

Eu usei um Raspberry Pi 3+ B, mas pelo que posso dizer, ele funcionaria em qualquer Pi (talvez os números dos pinos GPIO variem, mas não posso atestar isso). Usei o pacote NOOBS para o SO e comprei uma placa de som super simples para a entrada. Também adicionei um botão de desligamento seguro e LED de atividade à caixa para proteger o Pi.

Você vai precisar de:

Raspberry Pi

Pacote NOOBS em um cartão SD

Botão liga / desliga (usei um grande botão vermelho de parada de emergência como este, mas pode ser qualquer tipo de botão de 'clique')

Botão de apertar

1 LED

Um sinal 'On-Air', eu fiz o meu próprio com um conjunto de LED

Ferro de soldar e um pequeno conector (acabei de cortar uma tira de um desses que eu tinha por perto)

Placa de som (usei uma super simples como esta)

Etapa 1: configurar seu servidor

Para a estação de rádio que estamos usando, não fiz esta parte porque não tinha acesso ao servidor e meu amigo fez, mas há um guia de configuração básica no site do Icecast e consegui trabalhando a partir do Pi no início, apenas para ver como vai. Alternativamente, você pode obter uma conta em internet-radio.com e funciona com Darkice.

Etapa 2: configurar o Pi e instalar o Darkice

Obtenha um cartão SD com o pacote NOOBS. Depois de abrir o Raspbian e instalar todas as atualizações, abra uma janela do Terminal e digite:

sudo apt-get update

sudo apt-get install darkice

Darkice é parte do Debian, por isso ele é instalado automaticamente, leva alguns minutos.

Assim que terminar, digite o prompt:

Darkice

Ele vai dar uma mensagem de erro e não funcionar, mas tudo bem. Na mensagem, ele dirá algo como:

Usando o arquivo de configuração: /etc/darkice.cfg

Você precisa editar esse arquivo, portanto, no prompt, digite:

sudo nano /etc/darkice.cfg

Edite o arquivo que abre usando as informações nesta página wiki. Radioreference, quando terminar pressione CTRL-X para fechar, Y para salvar e você deve retornar ao prompt do Terminal. É sempre bom reiniciar depois de instalar um novo programa, então digite:

reinício

e quando o Pi for reiniciado, reabra uma janela do Terminal. Agora, quando você digitar 'Darkice', ele deverá ser executado sem nenhuma mensagem de erro. Se você for para https:// YOURSERVERADDRESS: 8000 / (8000 ou qualquer porta à qual o seu servidor do icecast está atribuído), deverá obter uma página de estatísticas informando que está conectado. Caso contrário, ajuste o arquivo de configuração (a linha de entrada de áudio me deu alguns problemas, mas tentei todas as opções e finalmente encontrei minha placa de som). Assim que o Darkice estiver funcionando corretamente, vá para a próxima etapa.

Etapa 3: botão de transmissão e sinal no ar

Botão de transmissão e sinal no ar
Botão de transmissão e sinal no ar

Fiz vários tutoriais diferentes para isso, pois não havia nenhum específico para atribuir uma ação a um botão em Python. O maior problema que enfrentei foi fazer o Darkice rodar em segundo plano (e, portanto, não congelar o script Python quando ele começou a rodar), mas pedi a um amigo programador para vir e ajudar e ele descobriu uma maneira de fazer isso escrevendo planilhas, algo que eu não entendo. Aparentemente, também poderia ser possível usar um '&' em algum lugar do código, mas não sou um programador e o que tenho funciona, então optei por não mexer com isso. Depois que tudo estava funcionando, comecei a cortar todos os cabos da placa de ensaio até ficar com a seguinte configuração:

GPIO16 para um conector externo de 3 pontos.

GPIO7 para o terminal positivo da matriz de LED para o sinal ON-Air.

GPIO25 para o botão de clique.

O outro lado da chave click-switch é conectado ao conector de 3 pontos.

O terminal negativo da matriz de LEDs também se conecta ao conector de 3 pontos.

(Os outros componentes do diagrama são explicados na próxima etapa).

O script Python que terminamos é o seguinte (observe que este é um Instructable para todo o projeto, eu realmente não sei o suficiente para explicar o código. Eu o reuni de vários outros tutoriais para funções diferentes):

import timeimport 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 ('chamando subprocesso') #result = subprocess.call ('sh tela -S darkice -d -m darkice') os.system ('screen -S darkice -d -m darkice') print ('resumindo') def stop_darkice (): os.system ('screen -X -S darkice quit')

enquanto verdadeiro:

buttonState = GPIO.input (buttonPin) if buttonState == True: se não toggle: toggle = True print ('rodando darkice') start_darkice () #print ('BUTTON STATE TRUE') GPIO.output (ledPin, GPIO. HIGH)

outro:

if toggle: toggle = False print ('stop darkice') stop_darkice () #print ('BUTTON STATE FALSE') GPIO.output (ledPin, GPIO. LOW) time.sleep (1)

O arquivo py está anexado a este Instructible, você pode apenas baixá-lo e seguir a Etapa 5 se desejar.

Etapa 4: botão de desligamento seguro e LED de atividade

Botão de desligamento seguro e LED de atividade
Botão de desligamento seguro e LED de atividade

Apenas por segurança e para prolongar a vida útil do Pi, adicionei um botão de desligamento seguro e um LED de atividade externa para que as pessoas saibam quando é seguro desconectar a caixa. Encontrei facilmente tutoriais para ambos, mas notei que o Raspberry Pi 3 B + tem um pino GPIO atribuído ao LED ACT, enquanto os modelos anteriores não têm, e isso pode ser problemático se você tiver um Pi mais antigo.

Conecte o terminal positivo do LED ao GPIO13 e o negativo ao GPIO26. Para que o ACT LED funcione, você precisa editar o arquivo config.txt no diretório BOOT. Você pode encontrar isso no navegador Raspbian ou com:

sudo nano /usr/boot/config.txt

Ao editar o arquivo, basta adicionar as seguintes linhas:

# Use LED externo como SD ACT LED dtoverlay = pi3-act-led, gpio = 19

Agora o LED externo piscará com a atividade do cartão SD.

Conecte os terminais da chave de pressão ao GPIO3 e GPIO8. Encontrei o seguinte código em um tutorial e funciona bem:

import timefrom gpiozero import Botão do subprocesso importar check_call da pausa de importação de sinal

def shutdown ():

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

shutdown_btn = Botão (2, hold_time = 1)

shutdown_btn.when_held = shutdown

pausa()

tempo.sono (1)

Este arquivo py também está anexado para download, se desejar. Meu botão deve ser mantido pressionado por 1 segundo, se você quiser alterar isso, altere o valor 'hold-time ='.

Etapa 5: faça com que os scripts Python sejam executados a partir da inicialização

Novamente, há muitos tutoriais sobre esse assunto, usei este da Dexter Industries e segui a etapa um editando o arquivo rc.local.

sudo nano /etc/rc.local

Aqui você precisa adicionar o caminho completo do arquivo ao final do documento, com um '&' no final de cada linha. Você deve adicionar uma linha para cada um dos arquivos:

sudo python / home / pi / SEUFILENAME, py &

sudo python /home/pi/YOURFILENAME2.py &

um pouco antes da linha

saída 0

O '&' no final de cada linha é importante para garantir que os loops do programa.

Etapa 6: construir a caixa

Construir a Caixa
Construir a Caixa
Construir a Caixa
Construir a Caixa
Construir a Caixa
Construir a Caixa

Isso é inteiramente com você. Na verdade, só precisa ser do tamanho do Pi, mas coloquei um compressor em minha configuração para manter o fluxo de rádio em um nível bastante consistente para que a caixa fique um pouco maior. O meu tem um orifício na frente para o sinal On-Air e outro para o Big Red Button, além disso, fiz um pequeno cartão de instruções para os DJs e marquei-o abaixo do botão. Na lateral da caixa há um orifício para o botão, o LED ACT e a entrada de áudio, além de instruções embutidas para o pessoal do bar sobre como desligar a caixa com segurança.

Etapa 7: Instalação

Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação

Fixe todos os componentes separados em sua caixa, tendo em mente que é sempre bom permitir a circulação de ar ao redor do Pi para evitar superaquecimento. Conecte os cabos de áudio do seu mixer, aperte o botão e divirta-se transmitindo!