Projeto de Rádio internet com Raspberry Pi

Projeto de Rádio internet com Raspberry Pi 3

As rádios internet são um tipo de streaming no qual o áudio é transmitido através da internet. As estações podem ser estações de rádio convencionais, que transmitem sua programação simultaneamente via internet, ou estações que enviam sua programação somente via internet. Neste post vamos ver como podemos criar um projeto de rádio com alguma das placas Raspberry Pi para escutar estações de rádio internet.

Projeto de Rádio Internet com Raspberry Pi
Projeto de Rádio Internet com Raspberry Pi

Saída de Som nas Placas Raspberry Pi

Existem várias formas de obter saída de som das placas Raspberry Pi, algumas dependem do modelo. A primeira forma é a saída de som via HDMI. Isto é útil se você estiver conectando a Raspberry em uma TV ou a um monitor com alto falantes. Outra forma, para os modelos com comunicação wireless, é conectar um fone de ouvido ou uma caixa de som via Bluetooth.

Neste artigo vamos nos concentrar nas opções de saída de som analógico, para conexão de um fone de ouvido ou de um aparelho de som.

Em modelos mais antigos da placa Raspberry Pi existia um conector exclusivo de áudio, ao lado de um conector RCA de vídeo. A partir do modelo B+ este conector foi substituído por um conector de quatro pólos no qual pode ser ligado um cabo de áudio P2 normal (para conectar a um amplificador com entrada P2)  ou cabo de áudio e vídeo P2 (para conectar a um amplificador e/ou TV com entrada RCA). Este conector está presente em todas as placas seguintes, exceto nas Raspberry Pi Zero.

Atenção que existem padrões diferentes para o cabo de áudio e vídeo P2. A figura abaixo mostra a configuração usada nos Raspberry Pi.

Configuração de cabos de áudio e vídeo P2 nas placas Raspberry Pi
Configuração de cabos de áudio e vídeo P2 nas placas Raspberry Pi

No caso do Raspberry Pi Zero 2 W, o conector de áudio e vídeo não está presente. Se você tiver habilidade com solda e eletrônica, pode montar externamente o circuito do Raspberry Pi original, mas aqui vamos seguir uma alternativa mais simples: usar um adaptador de som USB (que costuma ser comercializada como “placa de som USB”).

Material Necessário Projeto de Rádio – Versão Raspberry Pi 3B+ ou 4B

Abaixo você pode conferir a lista de materiais necessários para a construção do projeto de rádio internet utilizando uma Raspberry Pi 3B+ ou Raspberry Pi 4B:

Material Necessário Projeto de Rádio – DisplayVersão Raspberry Pi Zero W

Abaixo você pode conferir a lista de materiais necessários para a construção do projeto de rádio internet utilizando uma Raspberry Pi Zero W ou Raspberry Pi Zero 2 W:

Esquemático do Projeto de Rádio – Versão Raspberry Pi 3B ou 4B

Na figura abaixo, você encontra o esquemático eletrônico para montagem do projeto utilizando uma Raspberry Pi 3B+ ou Raspberry Pi 4B: 

Esquemático Rádio Internet - Versão Raspberry Pi 3B ou 4B
Esquemático do Projeto de Rádio – Versão Raspberry Pi 3B ou 4B

Esquemático do Projeto de Rádio – Versão Raspberry Pi Zero W

Na figura abaixo, você encontra o esquemático eletrônico para montagem do projeto utilizando uma Raspberry Pi Zero W ou Raspberry Pi Zero 2 W: 

Esquemático do Projeto de Rádio - Versão Raspberry Pi Zero W
Esquemático do Projeto de Rádio – Versão Raspberry Pi Zero W

Preparação da Raspberry Pi para o Rádio Internet

O primeiro passo é usar o Raspberry Pi Imager para gravar o Raspberry Pi OS no cartão micro SD:

Abra o Raspberry Pi Imager. Depois vá em Choose OS > Raspberry Pi OS (other) e selecione Raspberry PI OS Lite (32-bit).

Raspberry Pi Imager
Raspberry Pi Imager

Na sequência, vá em Configurações (ícone de engrenagem) e habilite o SSH. Também defina um usuário e uma senha.

Enable SSH e Definição de usuário - Raspberry Pi Imager
Enable SSH e Definição de usuário – Raspberry Pi Imager

Ainda em Configurações, habilite a Configuração do Wireless, forneça o nome e a senha do WiFi. Em Wireless LAN Country, selecione BR.

Configurações Wireless - Raspberry Pi Imager
Configurações Wireless – Raspberry Pi Imager

Insira o cartão micro SD na sua placa Raspberry Pi, revise as ligações e ligue a fonte.

Aguarde o Raspberry Pi iniciar e conecte a ele usando um cliente SSH (confira como realizar isso no post Raspberry Pi Zero W: configuração rápida para Rede e SSH). Faça o login com o usuário e senha que você configurou e digite os comandos abaixo para instalar os programas necessários:

sudo apt update

sudo apt upgrade

sudo apt-get install mpd mpc git python3-pip

pip3 install smbus

git clone https://github.com/dquadros/radiointernet.git

 

Em seguida, habilite a interface I2C: execute ‘sudo raspi-config’ e selecione “Interface Options”, “I2C”, “Yes”.

O passo a seguir é configurar o MPD para tocar música e poder controlar o volume:

sudo nano /etc/mpd.conf

A parte da configuração a ser alterada tem o formato abaixo:

audio_output { … }

Linhas que começam com ‘#’ são comentários (ignoradas pelo mpd). Edite o arquivo para ter um único audio_output com:

para as placas Raspberry Pi 3B+ ou Raspberry Pi 4B:

audio_output {
        type  
          
        "alsa"

        name   

        "My ALSA Device" 

        mixer_type

        "software"
}

para  as placas Raspberry Pi Zero W ou Raspberry Pi Zero 2 W:

audio_output {

        type            "alsa"

        name            "USB Audio"

        device          "hw:1,0"

        mixer_type      "software"

}

Agora você já pode iniciar o MDP e a nossa aplicação:

sudo service mpd start

cd radiointernet

sudo cp radiointernet.service /etc/systemd/system/radiointernet.service

sudo systemctl start radiointernet

sudo systemctl enable radiointernet

 

Este último comando faz com que a nossa aplicação execute automaticamente quando o SO subir. Se preferir ativá-la manualmente, exclua este comando.

Funcionamento do Rádio com Raspberry Pi

No início da execução, a aplicação lê as URLs das rádios do arquivo “estacoes.txt” (uma URL por linha). O repositório contém um pequeno exemplo, após alterá-lo para incluir as suas estações preferidas reinicie a aplicação com o comando:

sudo systemctl restart radiointernet

Após a carga da lista de estações, a aplicação começa a tocar a primeira delas, com volume de 50%. Os botões permitem:

 

  • Parar e retomar a execução da estação (⏯)
  • Ir para a próxima estação (⏭) ou para a anterior (⏮)
  • Aumentar (+) ou diminuir (-) o volume 

 

O display apresenta o nome da rádio (ou a URL, se o nome não estiver disponível) e o nome do artista e da música (se disponível).

Projeto de Rádio - Display
Projeto de Rádio – Display

O Código da Aplicação

O programa principal da aplicação está no arquivo “radiointernet.py”. Não vamos listá-lo aqui por ser extenso, mas aqui estão alguns detalhes:

  • O controle da música é feito usando o aplicativo ‘mpc’ que interage com o serviço ‘mpd’ que executa em background. Os comandos usados são:
    • ‘mpc clear’: interrompe a música e limpa a fila de execução
    • mpc add <url>’: coloca uma url na fila de execução (a aplicação mantém apenas uma url por vez na fila de execução)
    • ‘mpc play’: toca a música
    • ‘mpc stop’: para a música
    • mpc volume nn’: muda o volume para nn%
  • Para atualizar o display, periodicamente é executado o comando ‘mpc’ para obter o status do tocador. As informações são extraídas da saída.
  • O tratamento dos botões usa a biblioteca ‘gpiozero’. A classe ‘Botao’ acrescenta um debounce e detecta quando o botão é liberado.
  • As rotinas de acesso ao display estão em ‘lcdi2c.py

Próximos Passos

Uma vez funcionando o básico do Projeto de Rádio Internet com Raspberry Pi, existe muita coisa que você pode fazer para aperfeiçoá-lo.

Se você tem habilidades de montagem, que tal colocar o projeto em uma caixa bonita ou num gabinete de rádio antigo? Você pode colocar dentro da caixa um amplificador (como este aqui) e alto falantes.

Se a sua preferência é por software, dê uma estudada nas fontes da aplicação e experimente aperfeiçoá-la. O display alfanumérico utilizado, apesar de ser fácil de usar, limita a quantidade de informações que pode ser apresentada. Que tal trocar por um modelo gráfico?

Não deixe de contar nos comentários o que achou do projeto e, se você montou, quais aperfeiçoamentos você fez.

Anunciada a Raspberry Pi 5

Faça seu comentário

Acesse sua conta e participe

3 Comentários

  1. Olá Daniel.
    Como faço para adicionar outras rádios? Sabe informar se existe algum arquivo já pronto para substituir o “estações.txt”?

    1. Para adicionar outras rádios, acrescente as URLs correspondentes no arquivo estacoes.txt (uma por linha). Existem sites na internet com catálogos das rádios na internet, procure po “internet radio stream url directory”. Use as URLs correspondentes a m3u.

      1. Muito obrigado.