ESP32 - Mini Mp3 Player
O ESP32 é um microcontrolador versátil de 3.3V com WiFi, Bluetooth e várias portas seriais de hardware. Combinado com o módulo DIYables Mini Mp3 Player, você pode criar de tudo, desde uma simples placa de efeitos sonoros até um jukebox controlado por WiFi.
Este tutorial mostra como:
- Conectar o Mini Mp3 Player a um ESP32 — diretamente, sem resistor.
- Carregar os arquivos mp3 no cartão SD do jeito certo.
- Tocar, pausar, retomar, parar e pular faixas.
- Ajustar o volume com botões físicos.
- Repetir faixas, usar o modo aleatório e organizar o áudio em pastas.
- Monitorar o estado da reprodução a partir do seu código.

Componentes Necessários
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Nenhum resistor necessário. O ESP32 opera em 3.3V — a mesma tensão que a UART do Mini Mp3 Player espera.
O Módulo Mini Mp3 Player
O DIYables Mini Mp3 Player é uma placa minúscula construída com o chip YX5200-24SS. Ele decodifica arquivos mp3 de um cartão micro SD e pode acionar um alto-falante diretamente, por meio do seu amplificador embutido de 3W. Como alternativa, use os pinos DAC para alimentar um amplificador externo e obter uma saída mais alta.
Tudo é controlado por comandos seriais a 9600 baud:
- Transporte: tocar, pausar, retomar, parar, próxima, anterior
- Volume: 31 níveis (0–30)
- Equalizador: Normal, Pop, Rock, Jazz, Classic, Bass
- Repetição: repetir uma faixa, repetir a pasta, repetir todas as faixas, modo aleatório
- Pastas: tocar a partir de diretórios numerados no cartão
- Anúncios: interromper a reprodução por um momento e depois continuar
- Consultas: ler o número da faixa, o volume, o estado de reprodução e a quantidade de faixas
Descrição dos Pinos
| Pino | Finalidade |
|---|---|
| VCC | Entrada de alimentação de 3.2V a 5.0V |
| GND | Terra |
| RX | Entrada de dados seriais (conecte ao pino TX do ESP32) |
| TX | Saída de dados seriais (conecte ao pino RX do ESP32) |
| SPK_1 | Alto-falante + (amplificador embutido, máx. 3W) |
| SPK_2 | Alto-falante − |
| DAC_R | Saída de linha do canal direito |
| DAC_L | Saída de linha do canal esquerdo |
| BUSY | LOW = tocando, HIGH = parado |
| IO_1 | Toque curto → faixa anterior; toque longo → diminuir volume |
| IO_2 | Toque curto → próxima faixa; toque longo → aumentar volume |

Ligação
O ESP32 usa nativamente lógica de 3.3V, então você liga as linhas seriais diretamente — sem conversão de nível e sem resistores.
Recomendamos usar a Serial2 (disponível por padrão na maioria das placas ESP32 DevKit):
| Mini Mp3 Player | ESP32 | Observações |
|---|---|---|
| VCC | 3.3V | Ou 5V do VIN, se disponível |
| GND | GND | |
| RX | GPIO 17 (TX2) | Conexão direta |
| TX | GPIO 16 (RX2) | Conexão direta |
| SPK_1 | Alto-falante + | |
| SPK_2 | Alto-falante − |

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.
Dica: Se a sua variante de ESP32 não expõe os GPIO 16/17 (algumas placas DevKit-C V4 os usam para a PSRAM), você pode reatribuir os pinos da Serial2 no código:
Preparando o Cartão SD
- Formate como FAT16 ou FAT32.
- Coloque os arquivos mp3 na raiz:
- Para uma reprodução organizada, use pastas numeradas:
Observações críticas:
- Os números das faixas começam em 1.
- O módulo indexa as faixas pela ordem em que foram copiadas para o cartão, não pelo nome do arquivo. Sempre formate primeiro e depois copie em sequência.
- Nomes de pastas: 01–99 (2 dígitos), nomes de arquivos: 001–255 (3 dígitos).
Instalando a Biblioteca
- Conecte o ESP32 ao seu computador.
- No Arduino IDE, selecione a variante da sua placa ESP32 e a porta correta.
- Abra o gerenciador de Libraries.
- Pesquise "DIYables_MiniMp3" e instale a biblioteca da DIYables.

Zero dependências — funciona logo de cara.
Modelo de Código Inicial
Código ESP32 — Tocar uma Faixa
Experimente
- Coloque o cartão SD, ligue o módulo e conecte o ESP32 pelo USB.
- Selecione a sua placa ESP32 no IDE e faça o upload.
Controle de Reprodução
| Método | O Que Acontece | Exemplo de Código |
|---|---|---|
| play(n) | Toca a faixa de número n | mp3.play(1) |
| playNext() | Vai para a próxima faixa | mp3.playNext() |
| playPrevious() | Volta uma faixa | mp3.playPrevious() |
| pause() | Congela a reprodução | mp3.pause() |
| resume() | Continua de onde você parou | mp3.resume() |
| stop() | Encerra a reprodução por completo | mp3.stop() |
Código ESP32 — Várias Faixas
Código ESP32 — Botões de Volume
API de Volume
| Método | Ação | Exemplo |
|---|---|---|
| setVolume(v) | Vai direto para o nível v | mp3.setVolume(20) |
| volumeUp() | Aumenta de 1 em 1 | mp3.volumeUp() |
| volumeDown() | Diminui de 1 em 1 | mp3.volumeDown() |
| getVolume() | Lê o nível atual | mp3.getVolume() |
Código ESP32 — Próxima/Anterior
Código ESP32 — Pausar/Retomar
Código ESP32 — Repetir uma Faixa
Repetir e Aleatório
| Método | Comportamento | Exemplo |
|---|---|---|
| loopTrack(n) | Repete a faixa n sem parar | mp3.loopTrack(1) |
| loopFolder(f) | Repete todas as faixas da pasta f | mp3.loopFolder(1) |
| loopAll() | Repete todas as faixas | mp3.loopAll() |
| stopLoop() | Cancela a repetição ativa | mp3.stopLoop() |
| shuffle() | Reprodução aleatória | mp3.shuffle() |
Código ESP32 — Reprodução por Pasta
API de Pastas
| Método | Descrição | Exemplo |
|---|---|---|
| playFolder(f, t) | Toca a faixa t da pasta f | mp3.playFolder(1, 1) |
| playLargeFolder(f, t) | Pasta grande (15 pastas, 3000 faixas) | mp3.playLargeFolder(1, 2000) |
| playFromMP3Folder(t) | Toca da pasta /mp3 | mp3.playFromMP3Folder(1) |
Código ESP32 — Controle pelo Serial Monitor
| Comando | Efeito |
|---|---|
| 1–9 | Tocar faixa |
| + / − | Volume |
| p / r / s | Pausar / Retomar / Parar |
| n / b | Próxima / Anterior |
| ? | Estado |
Opções de Equalizador
| Constante | ID | Característica |
|---|---|---|
| DIYables_MiniMp3::EQ_NORMAL | 0 | Neutro |
| DIYables_MiniMp3::EQ_POP | 1 | Brilhante |
| DIYables_MiniMp3::EQ_ROCK | 2 | Marcante |
| DIYables_MiniMp3::EQ_JAZZ | 3 | Quente |
| DIYables_MiniMp3::EQ_CLASSIC | 4 | Equilibrado |
| DIYables_MiniMp3::EQ_BASS | 5 | Profundo |
Verificando o Estado do Módulo
Estas funções bloqueiam por até 100 ms enquanto esperam a resposta do módulo. Elas retornam −1 se nenhuma resposta chegar.
| Função | Retorno | Descrição |
|---|---|---|
| isPlaying() | bool | true durante a reprodução ativa |
| getVolume() | int16_t | Volume atual (0–30) |
| getEQ() | int16_t | EQ ativo (0–5) |
| getTrackCount() | int16_t | Total de faixas no SD |
| getCurrentTrack() | int16_t | Número da faixa que está tocando agora |
| getFolderCount() | int16_t | Total de pastas no SD |
| getTrackCountInFolder(f) | int16_t | Faixas na pasta f |