Arduino UNO R4 - Player de MP3

Este tutorial ensina como criar um player de MP3 usando um Arduino UNO R4, um módulo de player de MP3, um cartão Micro SD e um alto-falante. O player de MP3 carrega músicas ou gravações de áudio do cartão Micro SD. O Arduino UNO R4 controla o módulo de player de MP3 para escolher e tocar uma música do cartão, transformá-la em um sinal de áudio e enviar esse sinal ao alto-falante. Vamos ver esses passos em detalhes.

Depois, você pode mudar o código para incluir um potenciômetro ou um encoder rotativo para ajustar o volume.

Arduino UNO R4 mp3 player

Sobre o Módulo de Player de MP3 Serial e o Alto-falante

Pinagem do Módulo de Player de MP3 Serial

Um módulo de player de MP3 serial inclui três interfaces:

  • A interface com o Arduino UNO R4: tem quatro pinos:
    • Pino RX: é para dados e deve ser conectado ao pino TX do Arduino UNO R4, usando Serial de hardware ou por software.
    • Pino TX: também é para dados e deve ser conectado ao pino RX do Arduino UNO R4, por meio de Serial de hardware ou por software.
    • Pino VCC: é para alimentação e deve ser conectado ao VCC (5V).
    • Pino GND: é um pino de terra e deve ser conectado ao GND (0V).
  • A interface com o alto-falante: um conector fêmea de saída Aux de 3,5mm.
  • A interface com o cartão Micro SD: o slot do cartão Micro SD fica na parte de trás do módulo.
Serial MP3 Player Module Pinout
image source: diyables.io

Pinagem do Alto-falante

Um alto-falante geralmente tem dois pontos de conexão:

  • Conexão de áudio: usa um conector Aux macho de 3,5mm para se conectar ao player de MP3.
  • Conexão de alimentação: pode usar um USB, um adaptador de 5V ou outros tipos de conexão de energia.

Como Funciona

O que precisamos deixar pronto:

  • Salvar uma lista de músicas ou gravações em um cartão micro SD.
  • Colocar o cartão micro SD no módulo de player de MP3.
  • Conectar o módulo de player de MP3 ao Arduino UNO R4.
  • Conectar o módulo de player de MP3 a um alto-falante.
  • Conectar o alto-falante a uma fonte de energia.

Cada arquivo MP3 no cartão Micro SD tem um número, começando em 0, que mostra a ordem das músicas.

Então podemos configurar o Arduino UNO R4 para enviar comandos ao módulo de player de MP3. Ele consegue tratar estes comandos:

  • Começar a tocar
  • Parar
  • Tocar a próxima
  • Tocar a anterior
  • Ajustar o volume

O módulo de player de MP3 toca o arquivo MP3 guardado no cartão micro SD, transforma-o em um sinal de áudio e envia esse sinal ao alto-falante pela interface Aux de 3,5mm.

Diagrama de Ligação

The wiring diagram between Arduino UNO R4 MP3 player module

This image is created using Fritzing. Click to enlarge image

Código Arduino UNO R4 - Tocar Música

O código abaixo começa a tocar a primeira música salva no cartão Micro SD.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-mp3-player */ #include <SoftwareSerial.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define ARDUINO_RX 7 // The Arduino UNO R4 pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // The Arduino UNO R4 pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms mp3_command(CMD_PLAY, 0x0000); // Play mp3 //mp3_command(CMD_PAUSE, 0x0000); // Pause mp3 //mp3_command(CMD_PLAY_NEXT, 0x0000); // Play next mp3 //mp3_command(CMD_PLAY_PREV, 0x0000); // Play previous mp3 //mp3_command(CMD_SET_VOLUME, 30); // Change volume to 30 } void loop() { } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // the number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); } }

Passos Rápidos

Siga estas instruções passo a passo:

  • Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima no Arduino IDE.
  • Ligue os componentes de acordo com o diagrama fornecido.
  • Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
  • Abra o Arduino IDE no seu computador.
  • Selecione a placa Arduino Uno R4 correta (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
  • Siga os passos da seção Como Funciona
  • Copie o código fornecido e use-o no Arduino IDE
  • Pressione o botão Upload do Arduino IDE para enviar o código ao Arduino UNO R4
  • Divirta-se com a música

Código Arduino UNO R4 - Tocar Música com botões de controle

O código abaixo é uma versão melhorada do código anterior. Ele inclui quatro botões que permitem controlar o player de MP3.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-mp3-player */ #include <SoftwareSerial.h> #include <ezButton.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define ARDUINO_RX 7 // The Arduino UNO R4 pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // The Arduino UNO R4 pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); ezButton button_play(2); // create ezButton object that attach to pin 2 ezButton button_pause(3); // create ezButton object that attach to pin 3 ezButton button_next(4); // create ezButton object that attach to pin 4 ezButton button_prev(5); // create ezButton object that attach to pin 5 void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms button_play.setDebounceTime(50); // set debounce time to 50 milliseconds button_pause.setDebounceTime(50); // set debounce time to 50 milliseconds button_next.setDebounceTime(50); // set debounce time to 50 milliseconds button_prev.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button_play.loop(); // MUST call the loop() function first button_pause.loop(); // MUST call the loop() function first button_next.loop(); // MUST call the loop() function first button_prev.loop(); // MUST call the loop() function first if (button_play.isPressed()) { Serial.println("Play mp3"); mp3_command(CMD_PLAY, 0x0000); } if (button_pause.isPressed()) { Serial.println("Pause mp3"); mp3_command(CMD_PAUSE, 0x0000); } if (button_next.isPressed()) { Serial.println("Play next mp3"); mp3_command(CMD_PLAY_NEXT, 0x0000); } if (button_prev.isPressed()) { Serial.println("Play previous mp3"); mp3_command(CMD_PLAY_PREV, 0x0000); } } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // the number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); } }

As conexões de ligação para o código mencionado:

The wiring diagram between Arduino UNO R4 MP3 player speaker

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.

Agora, você pode mudar os projetos para incluir mais recursos, por exemplo:

Vídeo

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!