Tocando arquivos WAVE com Arduino, sem shield, somente com PWM

Tocando arquivos WAVE com Arduino, sem shield, somente com PWM

Quando falamos em Arduino e musicas, logo pensamos em algum shield MP3, e os mais geeks podem pensar na função tone(). E se te falarmos que é perfeitamente possível tocar musicas sem utilizar shields, somente com Arduino e um cartão SD para armazena-las, você acreditaria?

Poderíamos perfeitamente utilizar somente o Arduino para tocar nossos arquivos de musica, porem a memoria RAM do Arduino se limita de 2K à 8K, o que é pouquíssimo para arquivos WAVE. Por conta disso, é necessário utilizar um cartão SD, removendo esta limitação de espaço.

É claro que o desenvolvimento de um mini-player de musica nos dias de hoje é inviável, a não ser por questões didáticas, porem é possível utilizar o mesmo principio em vários cenários diferentes, como por exemplo, alertas sonoros, avisos de digitação de teclas ou até comandos de voz. A ideia é entender o principio do funcionamento do som.

Arquivos WAV quando não comprimidos, armazenam em um formato de modulação de pulso, chamado PCM. Este formato não possui perda, o que faz com que os arquivos sejam maiores que os famosos MP3, mas fazem com que sua qualidade seja superior, o que faz com que músicos profissionais utilizam este formato para.

Adicionando um filtro passa-baixa por volta dos 6Khz à saída PWM, podemos conseguir tocar nossos arquivos .wav, 8Khz, 8bits.

Filtro Passa Baixa

Com tudo montado, basta abrir o arquivo no SD, e ler de byte em byte, jogando à porta PWM. Um pequeno exemplo pode ser visto abaixo.

Existe outros meios mais eficazes de tocar musica. Uma delas é utilizar a lib TMRpcm. Ela já prove abertura/fechamento do arquivo, volume, pausa e outras funcionalidades.

Outro meio ainda não testado por nós, é a lib oficial Audio, que se propõe tocar arquivo 44100 Hz, 16-bit stereo.

E ae? Já sabia que era possível tocar sons sem nenhum modulo especifico? Gostou? Onde pretende utilizar? Conte-nos suas experiencias!!

Comentários