Arduino Nano ESP32 - Player de MP3

Neste guia, vamos descobrir como criar um player de MP3 usando um ESP32, um módulo player de MP3, um cartão Micro SD e um alto-falante. Os arquivos MP3, que podem ser músicas ou áudio gravado, ficam guardados no cartão micro SD. O Arduino Nano ESP32 será programado para enviar comandos que controlam o módulo player de MP3: qual música escolher no cartão SD, converter em som e depois enviar esse som para o alto-falante. Vamos mergulhar nos seguintes aspectos:

Depois, você pode levar o código mais longe incorporando um potenciômetro ou encoder rotativo para ajustar o volume.

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Módulo Reprodutor MP3 Serial
1×Cartão Micro SD
1×Alto-falante Aux 3.5mm
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

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

Pinagem do Módulo Player de MP3 Serial

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

  • A interface com o Arduino Nano ESP32 inclui 4 pinos:
    • Pino RX: pino de dados, precisa ser conectado a um pino TX do Arduino Nano ESP32
    • Pino TX: pino de dados, precisa ser conectado a um pino RX do Arduino Nano ESP32
    • Pino VCC: pino de alimentação, precisa ser conectado ao VCC (5V)
    • Pino GND: pino de alimentação, precisa 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 é um soquete para cartão Micro SD na parte de trás do módulo.
Pinagem do módulo player de MP3 serial

Pinagem do Alto-falante

Um alto-falante normalmente tem duas interfaces:

  • Interface de sinal de áudio: é um conector Aux macho de 3.5mm que se conecta ao módulo player de MP3
  • Interface de alimentação: pode ser USB, adaptador de energia de 5V ou qualquer outra interface de alimentação

Como Funciona

Para começar, certifique-se de ter o seguinte:

  • Reúna uma coleção de músicas ou áudio gravado que você quer tocar e guarde-os em um cartão micro SD.
  • Insira o cartão micro SD no módulo player de MP3.
  • Conecte o módulo player de MP3 ao Arduino Nano ESP32 e conecte o alto-falante ao módulo player de MP3. Além disso, garanta que o alto-falante esteja ligado a uma fonte de energia.

Cada arquivo MP3 no cartão micro SD recebe um ID, começando em 0. Então, você pode dizer ao Arduino Nano ESP32 para fazer várias coisas com o módulo player de MP3, como:

  • Tocar: Começar a tocar a música selecionada.
  • Pausar: Pausar a música.
  • Próxima: Ir para a próxima música.
  • Anterior: Voltar para a música anterior.
  • Alterar Volume: Ajustar o quanto a música fica alta.

Quando o módulo player de MP3 recebe um comando, ele lê o arquivo MP3 do cartão micro SD, transforma em um sinal de áudio e envia esse sinal para o alto-falante usando uma conexão Aux de 3.5mm.

Diagrama de Ligação

Diagrama de ligação do módulo player de MP3 com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código do Arduino Nano ESP32 - Tocar Música

O código abaixo toca a primeira música guardada no cartão Micro SD.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-mp3-player */ #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 RX1PIN D8 // Arduino Nano Pin connected to the TX of the Serial MP3 Player module #define TX1PIN D7 // Arduino Nano Pin connected to the RX of the Serial MP3 Player module void setup() { Serial.begin(9600); Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN); 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++) { Serial1.write(frame[i]); } }

Passos Rápidos

Código do Arduino Nano ESP32 - Tocar Música com botões de controle

O código abaixo é uma evolução do código anterior. Ele adiciona quatro botões para você interagir com o player de MP3.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-mp3-player */ #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 RX1PIN D8 // Arduino Nano ESP32 Pin connected to the TX of the Serial MP3 Player module #define TX1PIN D7 // Arduino Nano ESP32 Pin connected to the RX of the Serial MP3 Player module ezButton button_play(D2); // create ezButton object for pin D2 ezButton button_pause(D3); // create ezButton object for pin D3 ezButton button_next(D4); // create ezButton object for pin D4 ezButton button_prev(D5); // create ezButton object for pin D5 void setup() { Serial.begin(9600); Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN);; 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++) { Serial1.write(frame[i]); } }

O diagrama de ligação para o código acima:

Diagrama de ligação do player de MP3 com alto-falante e Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Agora, você pode modificar os projetos para adicionar mais funções, 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!