sábado, 27 de junho de 2015

Reproduzindo Sons Com o Raspberry Pi

    Saudações leitores, neste tutorial vamos mostrar como programar o Raspberry para reproduzir sons através de conexões com as portas GPIO's. O que é um simples exemplo de manipulação das funções de som do módulo Pygame. Para isso vamos precisar de:

1 - Um resistor de 10k ohms (Nós testamos também com 11k, notamos que o som foi reproduzido com um volume mais baixo, devido a maior oposição a corrente);
2 - Um Push Button;
3 - Fios de conexão macho-fêmea e jumpers de conexão;
4 - Alto-falantes ou fones de ouvido para serem conectados na saída de áudio analógico.



O esquema de ligação eletrônica está mostrado abaixo, utilizamos o software Multisim 14.0 para desenhá-lo:




    Para maiores detalhes da do mapa de pinos do Raspberry e sobre o esquema de ligações no protoboard, nós explicamos como funciona na postagem "O Hello World com GPIO"

    Depois de montado o esquemático, vamos fazer a programação. Para isso abra a IDLE do Python e digite o seguinte código, utilizamos a porta GPIO 14 (pino 8) do Raspberry:

                           (clique na imagem acima para melhor visualização)
                                       
    Agora vamos explicar alguns comandos em específico:

pygame.mixer.init(4800, -16, 1, 1024) - Inicializa o mixer do módulo pygame

pygame.mixer.Sound("caminho_do_arquivo_de_som") - Carrega o som, importante lembrar que o som que você deseja executar tem que estar no formato ".wav", existem alguns arquivos de som pré-carregados no Raspberry Pi que podem ser usados, no nosso exemplo utilizamos o que está no caminho "/usr/share/sounds/alsa/Front_Center.wav".

pygame.mixer.Channel(numero_do_canal) - Configura um canal para que o som possa ser reproduzido.

print "Soundboard Ready." - Imprime essa mensagem para informar se está tudo certo.

soundChannelA.play(soundA) - Reproduz som.

sleep("tempo_de_resposta") - Importante para não forçar demais o processador ao verificar os botões mais rápido do que o necessário.

O bloco:

except KeyboardInterrupt:
    exit()

Nos permite sair do script quando o usuário teclar ctrl + c, sem mostrar a mensagem de rastreamento.


PS: Dependendo de como o Raspberry está configurado o som pode estar sendo enviado via HDMI ou pelo conector de saída analógica, para alterar a qualquer momento isso digite esse comando no terminal\;

sudo amixer cset numid=3 1 - Para saída de áudio analógico.
sudo amixer cset numid=3 2 - Para saída HDMI.



E isso é tudo, pessoal! Qualquer dúvida utilizem os comentários que lhe responderemos o mais rápido possível.

Referência: 

"Primeiros Passos com o Raspberry PI" - Matt Richardson e Wallace Shawn.

Um comentário:

  1. Gostaria de saber se é possível sair com um som pelo HDMI e outro pelo analógico ao mesmo tempo?

    ResponderExcluir