Receptor de rádio online com Raspberry Pi 10

Rádios online não são novidade, é verdade. Porém, constituem um meio ainda fantástico de se ouvir música e notícias do mundo todo e, por que não, conhecer novas culturas também. Quando idealizadas e popularizadas, o único dispositivo que tornava possível ouvir uma rádio online era um computador. Mas os tempos mudaram e hoje é possível fazer isso até mesmo de seu smartphone. Neste artigo, será mostrado como construir seu próprio receptor de rádio online com Raspberry Pi rodando a distribuição Linux Raspbian.

Rádio On-line com Raspberry Pi

O que é necessário comprar para reproduzir o projeto?

Para fazer o projeto de rádio online com Raspberry Pi, será necessário:

No caso, a Raspberry Pi é o “cérebro” do projeto. Uma vez que o projeto estiver rodando, a rádio-online que estiver tocando no momento irá aparecer do display OLED e será possível controlar totalmente o projeto através dos 5 botões pulsantes / push-buttons. Os botões terão as seguintes funções:

  • Play/pause
  • Aumentar volume
  • Diminuir volume
  • Ir para a próxima estação
  • Voltar à estação anterior

Neste projeto de rádio online com Raspberry Pi, podem ser utilizado qualquer modelo de placa (desde que contenham conexão com a Internet), incluindo a Raspberry Pi 3 Model B e a Raspberry Pi A+ à venda em nossa loja FILIPEFLOP.

Como funciona a rádio online com Raspberry Pi?

O princípio de funcionamento deste projeto está na comunicação entre processos no Linux. Cada aplicação executada no Linux pode ser um processo (funcionamento temporário) ou serviço (funcionamento permanente), ficando a cargo do Kernel Linux gerenciar a execução dos mesmos.

O projeto deste post será um processo, o qual se comunicará com um player de mídia do Linux para tocar as rádios online, sendo este player um outro processo em execução. O player de mídia em questão é o mplayer, um player muito leve e consagrado do Linux (já testado a exaustão, com sucesso, ao longo dos anos em várias distribuições). Este player pode tocar diferentes tipos de mídia, sendo uma solução leve e elegante para quem deseja tocar mídias no Linux.

Portanto, em termos de funcionamento, o projeto aqui desenvolvido irá se comunicar com o mplayer, enviando comandos ao mesmo através de uma técnica chamada de named pipes.  Esta técnica permite que processos distintos no Linux se comuniquem / enviem mensagens uns aos outros, ficando a cargo do Kernel Linux gerenciar a transferências destas mensagens. No caso específico deste projeto, as mensagens trafegadas entre o receptor e o mplayer são os comandos que o mplayer aceita em modo slave, e são escritas e lidas em arquivos FIFO (arquivos especiais para esta finalidade) salvos no diretório /tmp. Não se preocupe com a quantidade de I/Os nesses arquivos, pois no Linux todos os arquivos FIFO são criados/mapeados em RAM!

Preparação: instalação do mplayer e escolha das rádios online

Antes de prosseguir com o projeto, é necessário instalar o mplayer. Para isto, utilize o comando abaixo:

A instalação é rápida e não ocupará muito espaço na memória.

Para a escolha das rádios online, uma das formas é carregar nele arquivos do tipo playlist (.pls) da rádio on-line desejada. Portanto, ao escolher suas rádios a serem ouvidas, procure pela playlist / endereço da playlist em formato .pls. Abaixo há alguns exemplos, todos tirados do site SHOUTCast:

  • http://yp.shoutcast.com/sbin/tunein-station.pls?id=1057392
  • http://panel3.serverhostingcenter.com:2199/tunein/radiobackstage1.pls
  • http://yp.shoutcast.com/sbin/tunein-station.pls?id=142571

Ainda, você pode testar o funcionamento do mplayer ao tocar uma rádio de sua escolha com o seguinte comando:

 

Circuito Esquemático

O circuito esquemático do projeto pode ser visto abaixo:

 Circuito Rádio on-line com Raspberry Pi

 

Código-fonte projeto Rádio online com Raspberry Pi

Veja abaixo o código-fonte do projeto!
Observação: para maiores informações das bibliotecas a serem instaladas para o funcionamento do display OLED na Raspberry Pi, veja este nosso artigo.

Copie e cole este código em um editor de texto de sua preferência (sugestão: nano) e salve o arquivo como ReceptorRadioOnlineRasp.py. Para executar o projeto, utilize o seguinte comando:

Abaixo você confere um vídeo do projeto em ação:

 

Gostou do post rádio online com Raspberry Pi? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

10 Comentários

  1. TERIA COMO RODAR NUM UNO ARDUINO COM DISPLAY 1.8 TFT V1.0 SPI 128*160

    GRATO

  2. Nelson, boa tarde.

    Não seria possível por dois motivos:

    1) Somente o Arduino Uno + display não possui conectividade com a Internet.
    2) Mesmo se existisse conectividade com a Internet neste caso, o Uno não é capaz de lidar stream e decodificação de áudio.

    Atenciosamente,
    Pedro Bertoleti

  3. tem como fazer algom assim mais com Bluetooth ?
    o smart controla ele e ele so toca a radio qualquer uma ?

    1. Paulo, bom dia.

      Eu entendi que você gostaria de controlar o projeto por Bluetooth através de seu Smartphone, certo? Se sim, isso é possível ser feito (apesar de eu não ter feito algo assim ainda, não vejo impeditivo algum).

      Quanto a tocar qualquer rádio, apenas tenha um cuidado: como o artigo diz, o formato do arquivo que contém as informações de streaming (no caso deste projeto, arquivo .pls) deve ser compatível com o mplayer. Se isso for obedecido, a rádio pode ser tocada sim.

      Atenciosamente,
      Pedro Bertoleti

  4. Olá Pedro…
    Montei esse projeto e funcionou perfeitamente, muito obrigado pelo projeto e dedicação.
    Gostaria de saber como faço pra ele iniciar junto a inicialização do sistema, ou seja sempre que ligar o Raspberry o sistema já vir pronto.
    Desde já fico grato pela ajuda!

    1. Sylvio, bom dia.

      Primeiramente, muito obrigado pela leitura e pelo elogio! É um prazer saber que estou fazendo projetos que estão ajudando os makers e hobbistas.
      Para iniciar o projeto junto com a inicialização do sistema, os seguintes procedimentos devem ser feitos:

      1) No script Python do projeto (código do projeto), façaum import os.time
      2) Como primeiro comando do Programa principal, executar um delay de 30 segundos (time.sleep(30)).
      Motivo: se isto não for feito, há grandes chances do script tentar usar a rede quando a mesma ainda não estiver conectada, podendo causar o fechamento “prematuro” do script ( = fechar antes mesmo de tocar alguma cosia).
      3) Siga os passos do site https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/ para inicializar o script no boot através do método do rc.local.

      Atenciosamente,
      Pedro Bertoleti

    2. Olá Pedro…

      Fiz como indicou e funcionou muito bem.
      Muito Obrigado!

  5. Parabéns pelo projeto. Gostaria de saber se é possível um projeto em q o py controlaria e processaria um audio e depois enviaria a um amplificador externo ???

  6. Rapaz… O projeto é muito bacana e resolvi montar aqui. Meus pais, já idosos, costumam ouvir rádio AM pela madrugada afora e sempre reclamam que não pega bem (interior de Minas). Com um rádio desses eles pegariam até as estações da terra deles (interior de SP).
    Daí esbarrei no meu pouco conhecimento em programação e por ser iniciante em Raspberry. Por isso peço que desde já me desculpe pela minha ignorância, e me responda:
    a) Não sabia que existia diferenças entre Python 2 e 3. Seu código está em 2? Como faço para ele rodar em 2 no Raspberry (de cara ele rodou como se fosse 3)?
    b) Como meu conhecimento é maior em eletrônica, eu tirei os botões de controle de volume e adicionei um módulo amplificador com alto-falantes. O controle de volume com potenciômetro é bem mais cômodo e familiar para os idosos. Daí suprimi do código a parte do controle do volume (fixei em 50%). Dá problema isso?
    c) Para rodar o programa devo usar o “sudo”? No post de como usar o OLED era pra usar e aqui não… Mesmo assim, ele dá erro ao importar a biblioteca do OLED e também do GPIO.
    d) Teria que fazer o rádio iniciar assim que ligar, daí preferi a solução de iniciar após o login (arquivo profile). Dá certo?

    1. Renato, boa noite.

      Primeiramente, muito obrigado pela leitura e pelo contato! Gostei muito do uso que você dará ao projeto, adoro quando os projetos que faço ganham utilidades tão bacanas!

      Respondendo às suas dúvidas:
      a) As versões de Python presentes nas Raspberry por “default” (instaláveis sem frescuras) são a 2.7 e a 3. Eu construí o código pra versão 2.7 pois já utilizo esta versão há bastante tempo (ou seja, por questão de prática mesmo). Para rodar um programa com python 2.7, utilize o comando:

      python NomeDoSeuScript.py

      Para rodar com python 3, utilize o comando:

      python3 NomeDoSeuScript.py

      Achei esquisito rodar de cara como se fosse o 3. Qualquer coisa veja o site https://www.raspberrypi.org/documentation/usage/python/more.md e aplique as modificações necessárias para rodar em Python 3

      b) Não vejo problemas nisso.

      c) A questão do sudo é polêmica mesmo. Nesse caso, pode utilizar.
      Qual (ou quais) erros ocorreram? Poderia colocá-los aqui por favor? Dessa forma consigo te ajudar a corrigi-los.

      d) A solução que você se refere eu não conheço. O que eu conheço para tal fim (iniciar a aplicação assim que a Raspberry bootar) é acrescentar a chamada ao script no arquivo /etc/rc.local, com um & no final (por exemplo: python NomeDoSeuScript.py &).
      Por favor, mostre aqui como você fez, estou curioso.