Índice:

Mantendo-o Stoopid Simple Internet Radio: KISSIR: 13 Steps
Mantendo-o Stoopid Simple Internet Radio: KISSIR: 13 Steps

Vídeo: Mantendo-o Stoopid Simple Internet Radio: KISSIR: 13 Steps

Vídeo: Mantendo-o Stoopid Simple Internet Radio: KISSIR: 13 Steps
Vídeo: CS50 2015 – неделя 1, продолжение 2024, Novembro
Anonim
Mantendo-o Stoopid Simple Internet Radio: KISSIR
Mantendo-o Stoopid Simple Internet Radio: KISSIR
Mantendo-o Stoopid Simple Internet Radio: KISSIR
Mantendo-o Stoopid Simple Internet Radio: KISSIR

Às vezes, só precisa ser tátil. Sem interface de qualquer tipo. Apenas botões.

Raspberry Pi como um reprodutor de rádio da Internet não é novidade, e há muitos instructables sobre como criar um reprodutor de rádio da Internet usando um Raspberry Pi com ou sem um monitor para transmitir estações de Internet de todo o mundo. Se você optasse por ficar sem cabeça (sem um monitor), ainda precisaria de um meio de fazer a interface com o reprodutor de pi, geralmente uma interface da web, se não um meio direto de comunicação com o host, como o ssh. Este instrutível será ligeiramente diferente; usaremos o pressionamento de botões simples para enviar comandos ao pi, eliminando assim a necessidade de uma interface da web e uma tela LCD. Parece fácil, certo (?)

Começaremos com um design muito básico usando botões codificados por cores, cada cor representará uma estação de rádio da Internet. Apresentaremos algum código python para lidar com o pressionamento de botão: O pressionamento executará um comando para reproduzir uma estação de rádio da Internet pré-codificada usando MPG123, uma ótima ferramenta de linha de comando para reproduzir áudio em nosso pi.

Suas habilidades em python não precisam ser avançadas. Na verdade, passei literalmente de "Hello World" para escrever isso e, como você verá, peguei muitos códigos emprestados - então, se eu puder fazer isso e documentar um pouco, ninguém mais terá problemas.

Vamos lá!

Suprimentos:

Materiais Necessários

  • Raspberry pi / pi zero w com todas as fixações: Fonte de alimentação, cartão SD e Raspbian ou Raspbian Lite.
  • Wifi e acesso à internet
  • Outro PC para realizar alguma navegação na web e capacidade de SSH para o raspberry pi
  • Conversor Digital para Analógico (DAC) - opcional, mas você ficará grato.
  • Amplificador
  • caixas de som
  • Fio de conexão e jumpers
  • Ferro de solda e solda
  • Perf Board para os botões
  • Botões táteis: normalmente abertos - um para cada gênero de música, um botão liga / desliga e um botão mudo opcional (7 botões recomendados)
  • Uma unidade habitacional para todos os itens acima (opcional, mas arrumado)

Etapa 1: Pré-requisitos:

Pré-requisitos
Pré-requisitos

Começaremos assumindo que você já configurou seu raspberry pi, DAC e amplificador, e também assumiremos que você tem acesso à Internet. Devido à quantidade de escolhas, preferências e opções de equipamento de áudio para ouvir áudio, presumiremos que sua configuração já está completa: você já deve ter som saindo dos alto-falantes antes de iniciar este projeto. Também precisaremos fazer o ssh para o raspberry pi, portanto, usando a configuração do pi, certifique-se de que as interfaces tenham o ssh ativado. Eu estarei usando o Raspbian Lite e recomendo que você tenha uma nova instalação da cópia mais recente em um novo cartão SD dedicado para este projeto. Se for bem-sucedido, estaremos construindo um dispositivo autônomo que pode ser deixado ligado 24 horas por dia, 7 dias por semana, como um dispositivo de escuta dedicado.

Etapa 2: instalar Python e Pip

Eu prefiro ssh para o pi usando um pc diferente, e execute todas as funções necessárias usando uma sessão ssh, mas acho que é possível inicialmente configurar o pi para um monitor, teclado e mouse e trabalhar diretamente no pi até que seja funcionando e, em seguida, implantar como um autônomo.

Primeiro, vamos fazer uma verificação de manutenção de rotina do nosso sistema e da versão do Python:

sudo apt-get update

sudo apt-get upgrade

Certifique-se de que o Python esteja instalado. Em uma sessão de terminal, digite o seguinte no prompt de comando:

python --version

Se você vir o python 2.7.13 (ou anterior), vamos instalar o python 3. +:

sudo apt-get install python3

sudo apt-get install python-pip

sudo apt-get install python3-pip

sudo pip3 install - atualizar pip

Etapa 3: Instale MPG123 e Adafruit Blinka

Agora que a base foi lançada, apenas mais algumas instalações:

MPG123 é o software de áudio que reproduz nossa música. A instalação é muito simples:

sudo apt-get install mpg123

Fiz muitas pesquisas e encontrei um ótimo modelo no site da Adafruit sobre a reprodução de arquivos de som usando botões, então, em vez de começar do zero, vamos continuar na trilha que o pessoal da Adafruit já abriu para nós. O programa deles pede que instalemos o Adafruit Blinka:

$ sudo pip3 install adafruit-blinka

Antes de prosseguirmos, vamos realizar uma verificação rápida para ter certeza de que temos a configuração de Alsa:

aplay - versão

nossos resultados devem ser: versão 1.1.3 por Jaroslav Kysela

Etapa 4: ajuste o volume para 50% no Alsamixer

Ajuste o volume para 50% no Alsamixer
Ajuste o volume para 50% no Alsamixer
Ajuste o volume para 50% no Alsamixer
Ajuste o volume para 50% no Alsamixer

Agora vamos tomar uma medida de precaução e ajustar nosso volume para 50% para evitar surpresas ensurdecedoras:

No prompt de comando, digite alsamixer:

alsamixer

Se olharmos para uma tela vermelha, branca e verde, ou 100% do volume máximo, é uma boa ideia diminuir o volume para 50% para economizar nossos tímpanos. Sempre podemos ajustar mais tarde (para cima ou para baixo), se necessário.

Etapa 5: alguns deveres de casa: encontre 5 estações de rádio que valem a pena ouvir

Alguns trabalhos de casa: Encontre 5 estações de rádio que valem a pena ouvir
Alguns trabalhos de casa: Encontre 5 estações de rádio que valem a pena ouvir
Alguns trabalhos de casa: Encontre 5 estações de rádio que valem a pena ouvir
Alguns trabalhos de casa: Encontre 5 estações de rádio que valem a pena ouvir

Precisaremos de uma estação para cada botão. Na verdade, precisaremos do url da estação. O pressionamento do botão chamará a url da estação de rádio da Internet em um código simples de uma linha. No entanto, estamos nos adiantando, então temos alguns trabalhos de casa a fazer; encontre 5 estações de rádio e seus urls. Encontrar 5 estações de rádio não é difícil, mas encontrar seus urls pode ser complicado. Vou explicar por que em um minuto.

SomaFm * é uma ótima fonte para começar, especialmente se você ainda não tem ideia do que deseja ouvir. Eles têm uma grande variedade de opções musicais ecléticas, nenhuma das quais eu acho ofensiva, nenhum comercial e a melhor parte: eles compartilham abertamente seus urls. Para pegar a url, clique em uma imagem da estação que você tem interesse e, na barra de navegação do lado esquerdo, clique em "Links diretos do stream". A partir daí, encontre a seção MP3 e raspe o url da taxa de reprodução mais alta (ou seja, 128 batidas 64). Cole o url em um editor de texto ou bloco de notas por enquanto.

Por exemplo, para raspar Christmas Rocks, o url seria: (não precisamos da descrição do servidor)

ice4.somafm.com/xmasrocks-128-mp3

Fica um pouco mais difícil fora do mundo da SomaFm. Muitas estações usam um intermediário entre o ouvinte e a estação, seja para publicidade, marketing ou possivelmente rastreamento - e geralmente tento evitar esse tipo de estação. Como os intermediários preferem que você ouça a estação através deles, geralmente é muito difícil encontrar a url; e é aí que entra o Vtuner.

* Eu seria negligente se não pedisse que você considerasse fazer uma doação para sua estação de rádio favorita, já que muitas das estações dependem exclusivamente do apoio do ouvinte.

Etapa 6: opcional: raspar URL usando o Vtuner

Opcional: Raspar URL usando Vtuner
Opcional: Raspar URL usando Vtuner
Opcional: raspar URL usando Vtuner
Opcional: raspar URL usando Vtuner

Agora vem a parte divertida … Na página inicial do Vtuner, verifique o link da lista de estações no canto superior direito. Escolha um gênero musical de seu interesse e, em seguida, classifique na velocidade mais rápida, onde verá uma lista de estações. Escolha uma estação que você acha que pode gostar, clique no link ou no botão play e experimente a música. Se não é para você, não se preocupe, repita o processo até encontrarmos um adequado para desfrutar por longo prazo. Na minha captura de tela, escolhi a versão digital de impulso da música Country e na próxima tela, percebi que está tocando da Croácia. A música country da Croácia parece bastante interessante.

Eu gosto disso. Mas como faço para obter o url? Basta clicar com o botão direito no espaço em branco à direita da imagem da estação, abaixo do nome da estação, selecionar "Exibir código-fonte da página" e rolar para baixo até a linha 150. Estamos procurando a linha que diz "// Tente para lidar com o icecast ". E o url é encontrado imediatamente abaixo!

orion.shoutca.st:8110/stream

Muito liso!

Repita esta etapa até que tenhamos pelo menos 5 estações em nossa lista.

Duplo Opcional: Para medida extra, se você puder encontrar 5 gêneros de música nos quais tem interesse (ao invés de 5 estações), construa uma lista de estações de rádio para cada gênero e salve as listas como arquivos de texto. Voltaremos a isso mais tarde.

Etapa 7: configurar nossos botões

Configure Nossos Botões
Configure Nossos Botões
Configure Nossos Botões
Configure Nossos Botões

A parte mais importante! Retire o pó do ferro de solda antigo ou pelo menos conecte-o e remova a poeira. É hora de soldar. Estou usando botões momentâneos de 4 pinos, normalmente abertos. Vou construir uma série de botões (foto à esquerda) e fixá-los em algum quadro de desempenho. É difícil dizer na foto, mas a direção dos pinos dos botões é toda norte-sul. No lado direito, você pode ver onde eu coloquei um trilho de aterramento para meus fios de aterramento e conectei alguns cabos de jumper com terminação macho no lado oposto de cada botão. Em vez de ter 7 conexões de aterramento, o trilho nos permitirá compartilhar uma conexão de aterramento com o pi para todos. O resultado final é uma placa de wafer delicada que será montada embaixo da parte superior do rádio usando alguns parafusos através dos orifícios piloto fornecidos. Apenas os topos dos botões aparecerão através da ranhura que cortei na parte superior. Como minha superfície superior tem apenas 1/4 de espessura, quero ter cuidado para não parafusar demais. A cola pode ser útil para manter a perfboard presa ao rádio.

Etapa 8: identificar nossos pinos GPIO

Identifique nossos pinos GPIO
Identifique nossos pinos GPIO
Identifique nossos pinos GPIO
Identifique nossos pinos GPIO

Em meu único outro instrutível, apresentei um novo uso para os antigos chapéus de voz do Google AIY versão 1. Neste instrutível amplamente impopular (ou pouco popular), mencionei como fiquei impressionado com o design do chapéu em si. Eu tenho alguns por aí, então estarei construindo um protótipo usando o chapéu, já que ele tem o dac e o amplificador a bordo.

Vamos agora identificar seis pinos que hospedarão nossos pressionamentos de botão. Vou pedir que você se concentre no lado esquerdo do chapéu do Google AIY, onde está escrito "servos". Há uma coluna de 6 ilhós para o pino onde vou prender e soldar as pontas do botão macho da etapa anterior. Se você estiver trabalhando sem o chapéu de voz do google aiy, não se preocupe, - a foto à direita irá guiá-lo. Em ambos os casos, trabalharemos com os pinos 26, 06, 13, 05, 12 e 24 gpio (BCM) de cima para baixo (ou 0-5). GPIO # 24 será reservado para um botão de pausa opcional.

Não se esqueça de conectar também a conexão de aterramento.

Etapa 9: Código

Duvido que o código mude muito a partir daqui, no entanto, para a versão mais recente do código python, visite meu github. Anexei uma cópia de 2019-12-18 chamada pytiful3.py.

Não é o código mais eficiente que você já viu e é bastante prolixo, mas dá conta do recado.

Vamos começar criando uma sandbox para brincar. Em nosso diretório inicial, crie um diretório em nosso raspberry pi chamado kissir:

mkdir kissir /

e copie o conteúdo do arquivo pytiful3.py para o diretório abrindo o arquivo de amostra em um editor de texto e usando

sudo nano kissir / pytiful3.py

copie / cole o conteúdo do arquivo em nosso script python recém-criado. Não se esqueça de salvar nosso trabalho usando Ctrl-x, Y e Enter.

Se você quiser um tour rápido pelo script, importamos os módulos Python de que precisaremos e, em seguida, definimos nossos botões e atribuímos um pino gpio a cada um dos 7 botões. Haverá 5 estações de rádio (sinta-se à vontade para editar de acordo com sua preferência de estação), um botão de parada e um botão de desligamento. O loop true while executa e executa até que um botão seja pressionado, o que na maioria dos casos interrompe qualquer reprodução de mpg123 existente e começa a reproduzir a estação atribuída ao botão que foi pressionado. O botão pausar / parar não é realmente um botão de pausa, mas sim um botão de interrupção, já que não podemos pausar o rádio da Internet. O rádio na Internet não espera por ninguém.

Etapa 10: teste em nossa caixa de areia

Teste em nossa caixa de areia
Teste em nossa caixa de areia

Antes de implantarmos nosso rádio, ainda em nossa sessão ssh, navegue até a pasta kissir onde nosso script está armazenado. Podemos simplesmente executar o script a partir da linha de comando manualmente, digitando:

python3 pytiful3.py

Se você espiou o código primeiro, provavelmente notou que deixei algumas instruções de impressão para que possamos saber o que está acontecendo. Se tudo funcionar bem, teremos um prompt que diz "Pressione um botão". Isso nos diz que nosso script está em execução e foi aprovado em uma verificação de código preliminar. Minha tentativa inicial teve um loop infinito de "música pausada - pressione o botão para continuar", e descobri que meu botão de pausa estava sempre fechado, em vez de normalmente aberto. Esperançosamente, você teve mais sorte com a etapa de soldagem.

Ctrl-C interromperá o script se você precisar abortar.

Então, se você vir "Pressione um botão", o que estamos esperando? Selecione qualquer um dos nossos cinco botões de estação de rádio.

Provavelmente, você ouvirá um estalo de alto-falante para iniciar a reprodução da música, e não posso ajudar com isso no momento. Mpg123 permite um sufixo "--preload 1" após o endereço da estação no comando os.system, no entanto, eu não sabia se fazia diferença. Deve permitir um pequeno buffer.

Outro código que você deve estar se perguntando: há um sinalizador "-f 7000" após a chamada mpg123. Isso reduz o volume para uma distância distante do volume máximo. O volume total seria de 32K. Pelo que entendi, a escala de volume não é linear, então não posso dizer que seja apenas um quinto do volume máximo, mas ainda bem alta. Eu tive que fazer isso porque minha placa de som - a placa de som de voz AIY do Google, às vezes não funciona bem com o Alsamixer.

Continue a selecionar os botões de sua escolha, sente-se, relaxe e aproveite o conforto da sua audição por enquanto.

Etapa 11: configure nosso código para ser executado automaticamente na inicialização

Portanto, se tudo estiver funcionando bem e você tiver gostado de nossa aventura no prompt de comando do sandbox, agora é um bom momento para automatizar o carregamento do script. Certifique-se de que você ainda está no diretório kissir e coloque o código do script no bin do usuário:

sudo cp pytiful3.py / usr / local / bin /

Torne-o executável:

sudo chmod + x /usr/local/bin/pytiful3.py

Escreva um script de shell para executá-lo na inicialização:

sudo nano pytiful3.sh

E insira o seguinte texto:

#! / bin / sh ### BEGIN INIT INFO # Fornece: pytiful3.py # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO # certifique-se de que o nível de volume não esteja alto TODO # Execute funções específicas quando solicitado pelo caso do sistema "$ 1" no início) echo "Iniciando pytiful3.py" /usr/local/bin/pytiful3.py &;; parar) echo "Parando pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) echo "Uso: /etc/init.d/pytiful3.sh {start | stop}" exit 1;; saída 0 esac

Mova-o para init.d:

sudo mv pytiful3.sh /etc/init.d/

Torne-o executável:

sudo chmod + x /etc/init.d/pytiful3.sh

Registre o script para ser executado na inicialização:

padrões sudo update-rc.d pytiful3.sh

Etapa 12: teste novamente

Agora que nosso script foi carregado para ser executado na inicialização, lembre-se de que todas as alterações que fizermos deverão ser transferidas para o compartimento do usuário, e nosso lindo script kissir / pytiful3.py agora é órfão. Mas pelo lado bom, ainda temos uma caixa de areia para jogar. Provavelmente continuarei a brincar com o script, fazer alterações e salvá-lo como uma nova versão em um futuro próximo. Ainda é um projeto em funcionamento.

Vamos fazer uma reinicialização, esperar que o pi reinicie e, depois de cerca de um minuto, pressione um botão novamente.

Se o volume do áudio estiver muito baixo, lembre-se de que também temos o volume do amixer em 50%, portanto, podemos aumentá-lo de acordo com o prompt de comando.

Para começar, é necessário um valor de volume global, em vez de alterar o nível de volume 5 vezes diferentes.

Ei, e aquela lista de estações de rádio que fizemos na etapa 6? Bem, acontece que o MPG123 tem um comando de seleção aleatória. É tão simples quanto construir uma lista de urls de estação e, em vez de chamar o url de uma estação de rádio, basta usar

"btn1234_choice = random.choice (btn1234)", imediatamente após identificar nossa lista de estações, onde btn1234_choice é nossa lista. Não se esqueça de usar colchetes em torno de nossa lista de estações, separados por vírgulas. A chamada do comando do subprocesso, então, reproduz nossa escolha aleatória:

subprocess.call (['mpg123', '-q', btn1234_choice, "--preload 1"])

Etapa 13: encaixote e pronto

Encaixote e pronto
Encaixote e pronto
Encaixote e pronto
Encaixote e pronto
Encaixote e pronto
Encaixote e pronto

Se você chegou a esta etapa, o trabalho está concluído! Parabéns - você acabou de construir um player de rádio da Internet autônomo.

Dependendo do equipamento que você possui (alto-falantes, dac e amplificador), você pode estar se perguntando como esconder alguns dos fios que estão espalhados. Talvez outro instrutível para outro dia, mas se você planeja fazer uma unidade habitacional para prender alguns dos fios, recomendo que se reserve bastante espaço extra.

Como você pode ver nas fotos acima - eu na verdade fiz dois beijos, um usando os restos de um acidente de cola na minha primeira tentativa (do humor distorcido vêm placas distorcidas). A segunda unidade usa excitadores de som em vez de alto-falantes convencionais, e se você pegou o nome do dispositivo em uma de minhas imagens, chamei-o de slimbox.

Achei esse projeto bem divertido. Ambas as vezes. Certamente não é um projeto difícil, talvez um pouco demorado, mas muito gratificante. Eu espero que você goste de ouvir também.

Recomendado: