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.
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.
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:
- Kit Raspberry Pi
- Display LCD 16×2 I2C
- Protoboard
- 5x Chave Táctil Push-Button
- 5x Resistor 1KΩ
- Jumpers
- Cabo de Áudio (ou Áudio e Vídeo) P2
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:
- Kit Raspberry Pi Zero 2 W
- Display LCD 16×2 I2C
- Protoboard
- 5x Chave Táctil Push-Button
- 5x Resistor 1KΩ
- Jumpers
- Cabo Micro USB
- Adaptador USB OTG
- Adaptador de som USB
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 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:
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).
Na sequência, vá em Configurações (ícone de engrenagem) e habilite o SSH. Também defina um usuário e uma senha.
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.
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).
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.
Olá Daniel.
Como faço para adicionar outras rádios? Sabe informar se existe algum arquivo já pronto para substituir o “estações.txt”?
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.
Muito obrigado.