ESP32 - Player MP3

Neste guia, vamos descobrir como criar um player MP3 usando um ESP32, um módulo player 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 ESP32 será programado para enviar comandos ao módulo player MP3, dizendo qual música escolher no cartão SD, converter em som e depois enviar esse som para o alto-falante. Vamos ver os seguintes pontos:

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

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

Pinagem do Módulo Player MP3 Serial

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

  • A interface com o ESP32 inclui 4 pinos:
    • Pino RX: pino de dados, precisa ser conectado a um pino TX do ESP32
    • Pino TX: pino de dados, precisa ser conectado a um pino RX do ESP32
    • Pino VCC: pino de alimentação, precisa ser conectado ao VCC (3.3V ou 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,5 mm.
  • 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 MP3 Serial

Pinagem do Alto-falante

Um alto-falante normalmente tem duas interfaces:

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

Como Funciona

Para começar, verifique se você tem o seguinte:

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

Cada arquivo MP3 no cartão micro SD recebe um ID, começando em 0. Depois, você pode mandar o ESP32 fazer várias coisas com o módulo player MP3, como:

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

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

Diagrama de Ligação

  • Como conectar o ESP32 e o player mp3 usando uma protoboard
Diagrama de Ligação do ESP32 com módulo player MP3

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Como conectar o ESP32 e o player mp3

Código ESP32 - Tocar Música

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

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/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 void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 16, 17); 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++) { Serial2.write(frame[i]); } }

Passos Rápidos

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

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

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/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 ezButton button_play(32); // create ezButton object that attach to ESP32's pin GPIO32 ezButton button_pause(33); // create ezButton object that attach to ESP32's pin GPIO33 ezButton button_next(25); // create ezButton object that attach to ESP32's pin GPIO25 ezButton button_prev(26); // create ezButton object that attach to ESP32's pin GPIO26 void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 16, 17); 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++) { Serial2.write(frame[i]); } }

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

Diagrama de Ligação do ESP32 com player MP3 e alto-falante

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!