Leitor de áudio e amplificador simples do Arduino com LM386

Tempo de leitura: 7 minutes

Adicionar sons ou músicas ao nosso projeto sempre fará com que pareça legal e pareça muito mais atraente. Especialmente se você estiver usando um Arduino e tiver muitos pinos grátis, poderá adicionar facilmente efeitos sonoros ao seu projeto investindo apenas em um extra Módulo de cartão SD e um alto-falante normal. Neste artigo, mostrarei como é fácil Toque música/adicione efeitos sonoros usando o seu Arduino Board  Graças à comunidade Arduino, que desenvolveu algumas bibliotecas para construir isso de maneira rápida e fácil. Também usamos o IC LM386 aqui para fins de amplificação e cancelamento de ruído.

Neste projeto, reproduziremos as lojas de arquivos de música .wav em um cartão SD. Programaremos o Arduino para ler esses arquivos .wav e reproduzir o áudio em uma palestra através de um Amplificador de áudio LM386. Agora, como esse código só podia ler arquivos .wav, tecnicamente esse projeto não pode ser chamado como um. Jogador Arduino Mp3, mas ei, você ainda poderá ouvir músicas com ele. Se você está procurando alternativas simples como uma Leitor de música Arduio sem cartão SD, você deve conferir o Leitor de melodia de Arduino que construímos anteriormente.

Hardware obrigatório:

  1. Arduino UNO
  2. Módulo leitor de cartão SD
  3. Cartão SD
  4. Amplificador de áudio LM386
  5. 10uf Capacitor (2 Nos)
  6. 100uf Capacitor (2 Nos)
  7. Resistor 1K, 10K
  8. Botões de pressão (2 n.os)
  9. ProtoBoard
  10. Conectando fios

Preparando-se com seus arquivos de áudio WAV :

Para tocando sons do cartão SD usando o Arduino, precisamos de arquivos de áudio no formato .wav, porque o Arduino Board pode reproduzir um arquivo de áudio em um formato específico que seja o formato wav. Fazer um arquuino mp3 player, existem muitos escudos mp3 disponíveis que você pode usar com o arduino. Ou então reproduza arquivos mp3 no arduino, existem sites nos quais você pode ser usado para converter qualquer arquivo de áudio no seu computador nesse arquivo WAV específico.

Portanto, para converter qualquer arquivo de áudio no formato wav, siga as etapas abaixo :

Etapa 1 : Clique em “Conversor Wav Online” para entrar no site.

Etapa 2 : O Arduino pode reproduzir um arquivo wav no seguinte formato. Você pode brincar com as configurações mais tarde, mas essas configurações foram experimentadas para serem as melhores em qualidade.

Resolução de bits8 bits
Taxa de amostragem16000 Hz
Canal de áudioMono
Formato PCMPCM não assinado de 8 bits

Etapa 3 : No site, clique em “escolher arquivo” e selecione o arquivo que deseja converter. Em seguida, alimente as configurações acima. Uma vez feito, deve ficar assim na imagem abaixo

Etapa 4 : Agora, clique em “Converter arquivo” e seu arquivo de áudio será conversor para o formato de arquivo .Wav. Também será baixado assim que a conversão for concluída.

Etapa 5 : Por fim, formate seu cartão SD e salve seu arquivo de áudio .wav nele. Certifique-se de formatá-lo antes de adicionar este arquivo. Lembre-se também do nome do seu arquivo de áudio. Da mesma forma, você pode selecionar qualquer um dos seus quatro áudios e salvá-los com os nomes 1, 2, 3 e 4 (os nomes não devem ser alterados). Eu converti quatro músicas e as salvei como 1.wav, 2.wav, 3.wav e 4.wav, como mostrado abaixo.

 

Circuito e hardware :

Diagrama de circuito para isso Leitor de arquivos de áudio Arduino é simples. O diagrama de circuito completo é mostrado na imagem abaixo.

Como sabemos, nossos arquivos de áudio são salvos no cartão SD, daí nós interface com um módulo leitor de cartão SD com o nosso Arduino. O. Arduino e cartão SD comunicar usando o protocolo de comunicação SPI. Portanto, o módulo está em interface com os pinos SPI do Arduino, conforme mostrado acima no diagrama. Está mais listado no tabela abaixo.

ArduinoMódulo de cartão SD
+ 5VVcc
GndGnd
Pino 12MISO (Mestre em Escravo)
Pino 11MOSI (Master Out Slave In)
Pino 13SCK (relógio síncrono)
Pin 4CS (Chip Select)

Agora, o Arduino poderá ler o arquivo de música do cartão SD e reproduzi-lo no pino número 9. Mas os sinais de áudio produzidos pelo Arduino no pino 9 não serão muito audíveis.

O amplificador mostrado acima foi projetado para um ganho de 200 e o Vdd (pino 6) é alimentado pelo pino de 5V do Arduino. Se você deseja aumentar/diminuir o som, pode aumentar/diminuir a tensão fornecida a este pino. Pode suportar um máximo de 15V.

Também temos dois botões conectados aos pinos 2 e 3 do Arduino. Esses comutadores são usados para tocar a próxima faixa da música e tocar/pausar a música, respectivamente. Eu usei esses botões apenas para demonstrar suas habilidades; você pode tocar a música sempre que necessário.

 

Você pode montar esse circuito completamente em um ProtoBoard, como mostra a figura abaixo

Programando seu Arduino :

Quando estivermos prontos com o Hardware e o cartão SD, estamos a apenas um passo de tocar essas músicas. Insira o cartão no módulo do cartão SD e siga as etapas abaixo.

Etapa 1 : Como dito anteriormente, usaremos uma biblioteca para fazer esse projeto funcionar. O link para a biblioteca é fornecido abaixo. Clique nele e selecione “Clone ou download” e escolha o download como ZIP

Etapa 2 : Adicione este arquivo Zip ao seu IDE do Arduino selecionando Esboço -> Incluir Biblioteca -> Adicione .ZIP Library como mostrado abaixo e selecione o arquivo ZIP que acabamos de baixar.

Etapa 3 : O programa completo do projeto de tocador de música arduino é fornecido no final deste artigo, basta copiá-lo e colá-lo no Programa Arduino. Agora, clique em Upload e prepare-se para reproduzir seus arquivos de áudio.

O programa é auto-explicativo, pois eles têm as linhas de comentários. Mas também expliquei a capacidade da biblioteca TMRpcm abaixo.

Reproduzindo um arquivo de áudio :

Você pode reproduzir qualquer áudio armazenado no formato Wav dentro do módulo do cartão SD usando a linha abaixo.

music.play("3.wav"); 
//object name.play ("FileName.wav");

Você pode usar esta linha em locais onde deseja acionar o áudio

Pausar um arquivo de áudio :

Para pausar um arquivo de áudio, basta chamar a linha abaixo.

music.pause(); 
//objectname.pause ();

Encaminhamento / rebobinamento de um áudio :

Não há maneiras diretas de encaminhar ou retroceder um arquivo de áudio, mas você pode usar a linha abaixo para reproduzir uma música em um determinado momento. Isso pode ser usado para encaminhar / recontar com alguma programação adicional.

music.play("2.wav",33); //Toca a música a partir do 33º segundo
//objectname.play(“Filename.wav”,time in second);

Definindo a qualidade do áudio :

A biblioteca nos dá duas qualidades para tocar a música, uma é tocar no modo normal e a outra para tocar com o excesso de amostragem 2X.

music.quality(0); //Modo Normal
music.quality(1); //2X sobre o modo de amostragem

Definindo o volume do áudio :

Sim, você pode controlar o volume do áudio através do software. Você pode simplesmente definir o volume usando a linha abaixo. Volumes de música mais altos tendem a afetar a qualidade do áudio e, portanto, usam o controle de hardware quando possível.

music.setVolume(5);        //Toca a música no volume 5
//objectname.setVolume(Volume level);

Trabalhando neste Arduino Music Player :

Depois de programar o seu Arduino, basta pressionar o botão conectado ao pino 2 e o seu Arduino tocará a primeira música (salvo como 1.wav) para você. Agora você pode pressionar o botão novamente para alterar sua faixa para a próxima música que será tocada 2.wav. Da mesma forma, você pode navegar para todas as quatro músicas.

Você também pode tocar / Pausar a música pressionando o botão conectado ao pino 3. Pressione uma vez para pausar a música e pressione-a novamente para tocá-la de onde parou. Assista o vídeo abaixo para trabalho completo (ou talvez para relaxar com algumas músicas).

Espero que você tenha gostado do projeto. Agora cabe à sua criatividade usá-los em seus projetos. Você pode fazer um relógio falante, assistente de voz, robô falante, sistema de segurança de alerta de voz e muito mais. Deixe-me saber como você planeja usá-lo na seção de comentários e também se tiver algum problema para fazer com que isso funcione, você pode entrar em contato comigo através da seção de comentários abaixo.

 

Código

/*
Leitor de música baseado em Arduino

  Este exemplo mostra como reproduzir três músicas do cartão SD pressionando um botão

 O circuito:
 * Botão de pressão nos pinos 2 e 3
 * Saída de áudio - pino 9
 * Cartão SD conectado ao barramento SPI da seguinte forma:
 ** MOSI - pino 11
 ** MISO - pino 12
 ** CLK - pino 13
 ** CS - pino 4

 */
 
#include "SD.h" //Lib para ler o cartão SD
#include "TMRpcm.h" //Lib para reproduzir áudio
#include "SPI.h" //Biblioteca SPI para cartão SD

#define SD_ChipSelectPin 4 //A seleção de chip é o pino número 4
TMRpcm music; //O objeto Lib é chamado de "músic"

int song_number=0;
boolean debounce1=true;
boolean debounce2=true;
boolean play_pause;

void setup(){
music.speakerPin = 9; //Saída de áudio no pino 9
Serial.begin(9600); 
if (!SD.begin(SD_ChipSelectPin)) {
   Serial.println("SD fail");
   return;
}

pinMode(2, INPUT_PULLUP); //Botão 1 com pull up interno para mudar de faixa
pinMode(3, INPUT_PULLUP); //Botão 2 com pull up interno para reproduzir/pausar
pinMode(3, INPUT_PULLUP); //Botão 3 com puxador interno para avanço rápido

music.setVolume(5);      //   0 to 7. Set volume level
music.quality(1);        //   Set 1 for 2x oversampling Set 0 for normal
//music.volume(0);       //   1(up) or 0(down) to control volume
//music.play("filename",30); plays a file starting at 30 seconds into the track    
}

void loop()
{ 
  
  if (digitalRead(2)==LOW  && debounce1 == true) //Button 1 Pressed
  {
  song_number++;
  if (song_number==5)
  {song_number=1;}
  debounce1=false;
  Serial.println("KEY PRESSED");
  Serial.print("song_number=");
  Serial.println(song_number);

  if (song_number ==1)
  {music.play("1.wav",10);} //Play song 1 from 10th second 

  if (song_number ==2)
  {music.play("2.wav",33);} //Play song 2 from 33rd second 

  if (song_number ==3)
  {music.play("3.wav");} //Play song 3 from start

  if (song_number ==4)
  {music.play("4.wav",25);} //Play song 4 from 25th second 

  if (digitalRead(3)==LOW  && debounce2 == true) //Button 2 Pressed
  {
  music.pause();  Serial.println("PLAY / PAUSE");
  debounce2=false;
  }

  if (digitalRead(2)==HIGH) //Avoid debounce
  debounce1=true;

  if (digitalRead(3)==HIGH)//Avoid debounce
  debounce2=true;
}

}