Arduino Nano ESP32 - Mini Player de Mp3
O Arduino Nano ESP32 é uma placa poderosa de 3.3V com WiFi e Bluetooth embutidos. Neste tutorial, vamos combiná-lo com o módulo DIYables Mini Mp3 Player para montar um player de mp3 totalmente controlável. Veja o que vamos fazer:
- Conectar o módulo ao Nano ESP32 — sem precisar de resistor, graças aos níveis lógicos de 3.3V.
- Preparar o cartão SD com arquivos mp3 com os nomes corretos.
- Escrever código para tocar, pausar, retomar, parar e pular faixas.
- Controlar o volume por botões e comandos seriais.
- Configurar a repetição de faixa, o modo aleatório completo e a reprodução por pasta.
- Ler o status do módulo (faixa atual, volume, estado de reprodução).

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Observação: Nenhum resistor de 1K é necessário — o Nano ESP32 usa lógica de 3.3V, que combina nativamente com o módulo.
Visão Geral do Módulo Mini Player de Mp3
O DIYables Mini Mp3 Player é um módulo decodificador de mp3 independente, alimentado pelo chip YX5200-24SS. Insira um cartão micro SD com arquivos mp3, conecte um pequeno alto-falante e envie comandos seriais para controlar a reprodução.
O módulo aceita comandos UART a 9600 baud e oferece estes recursos:
- Controle completo da reprodução: tocar, pausar, retomar, parar, próxima, anterior
- 31 níveis de volume (0 a 30)
- 6 predefinições de equalizador (Normal, Pop, Rock, Jazz, Classic, Bass)
- Modos de repetição: repetir uma faixa, repetir pasta, repetir tudo, aleatório
- Reprodução organizada por pastas para áudio categorizado
- Inserção de anúncios (interrompe e retoma)
- Consultas de status em tempo real
Pinagem
| Pino | Função |
|---|---|
| VCC | Alimentação de 3.2V a 5.0V |
| GND | Terra |
| RX | Entrada UART (conecte ao TX da placa) |
| TX | Saída UART (conecte ao RX da placa) |
| SPK_1 | Alto-falante + (amplificador de 3W embutido) |
| SPK_2 | Alto-falante − |
| DAC_R | Saída de nível de linha direita |
| DAC_L | Saída de nível de linha esquerda |
| BUSY | LOW = tocando, HIGH = ocioso |
| IO_1 | Toque curto → anterior, toque longo → diminuir volume |
| IO_2 | Toque curto → próxima, toque longo → aumentar volume |

Diagrama de Ligação
O Nano ESP32 opera com lógica de 3.3V — a mesma tensão que o Mini Mp3 Player usa internamente. Isso significa que você pode conectar TX/RX diretamente, sem nenhum resistor.
Vamos usar a Serial1 do Nano ESP32 para a comunicação com o módulo, mantendo a Serial padrão livre para o Serial Monitor.
| Mini Mp3 Player | Arduino Nano ESP32 | Observações |
|---|---|---|
| VCC | 3.3V | O módulo também aceita 5V do VBUS, se necessário |
| GND | GND | |
| RX | TX1 (D5) | Conexão direta — sem resistor |
| TX | RX1 (D4) | Conexão direta |
| SPK_1 | Alto-falante + | |
| SPK_2 | Alto-falante − |

This image is created using Fritzing. Click to enlarge image
Preparação do Cartão SD
Prepare o cartão micro SD antes de inseri-lo no módulo:
- Formate como FAT16 ou FAT32.
- Copie os arquivos mp3 para a raiz com nomes preenchidos com zeros:
Para reprodução por pasta:
Lembre-se:
- A numeração das faixas começa em 1 (não em 0).
- O módulo determina a ordem das faixas pela sequência de cópia, não pelos nomes dos arquivos. Formate o cartão primeiro e depois copie os arquivos um por um, em ordem.
- Nomes de pastas: 2 dígitos, preenchidos com zeros (01–99). Nomes de arquivos dentro delas: 3 dígitos, preenchidos com zeros (001–255).
Instalação da Biblioteca
- Conecte o Nano ESP32 ao seu computador por USB-C.
- Abra o Arduino IDE, selecione Arduino Nano ESP32 como sua placa e escolha a porta correta.
- Vá ao painel Libraries à esquerda.
- Pesquise "DIYables_MiniMp3" e instale a biblioteca da DIYables.
- Clique em Install.

A biblioteca não tem nenhuma dependência externa.
Código do Nano ESP32 — Modelo Básico
Como o Nano ESP32 tem portas seriais por hardware, usamos a Serial1 em vez do SoftwareSerial:
Não precisa da biblioteca SoftwareSerial! A serial por hardware é mais confiável, principalmente na baixa velocidade de 9600 baud que este módulo usa.
Código do Nano ESP32 — Tocar uma Única Faixa
Como Testar
- Carregue o cartão SD com arquivos mp3 e insira-o no módulo.
- Ligue o módulo ao Nano ESP32 como mostrado acima (sem resistor!).
- Conecte a placa por USB-C, selecione Arduino Nano ESP32 e faça o upload.
Você deve ouvir a faixa 001.mp3 pelo alto-falante conectado.
Comandos de Reprodução
| Método | Finalidade | Exemplo |
|---|---|---|
| play(trackNum) | Iniciar uma faixa específica | mp3.play(1) |
| playNext() | Avançar para a próxima faixa | mp3.playNext() |
| playPrevious() | Ir para a faixa anterior | mp3.playPrevious() |
| pause() | Pausar a faixa ativa | mp3.pause() |
| resume() | Retomar a faixa | mp3.resume() |
| stop() | Parar a reprodução | mp3.stop() |
Código do Nano ESP32 — Tocar Várias Faixas
Como Testar
- Garanta que o cartão SD tenha pelo menos 3 faixas. Faça o upload e as faixas vão se alternar a cada 5 segundos.
Código do Nano ESP32 — Controle de Volume
Como Testar
- Ligue dois botões, faça o upload do sketch e pressione os botões enquanto a música toca.
Comandos de Volume
| Método | Finalidade | Exemplo |
|---|---|---|
| setVolume(v) | Ir para um nível de volume específico | mp3.setVolume(20) |
| volumeUp() | Aumentar 1 passo | mp3.volumeUp() |
| volumeDown() | Diminuir 1 passo | mp3.volumeDown() |
| getVolume() | Consultar o nível atual | mp3.getVolume() |
Código do Nano ESP32 — Botões Próxima/Anterior
Como Testar
- Ligue os botões e faça o upload. Pressione NEXT ou PREV para navegar pelas suas faixas.
Código do Nano ESP32 — Alternar Pausar/Retomar
Código do Nano ESP32 — Repetir uma Faixa
Comandos de Repetição e Aleatório
| Método | Finalidade | Exemplo |
|---|---|---|
| loopTrack(t) | Continuar repetindo uma faixa | mp3.loopTrack(1) |
| loopFolder(f) | Repetir todas as faixas de uma pasta | mp3.loopFolder(1) |
| loopAll() | Repetir tudo que está no cartão | mp3.loopAll() |
| stopLoop() | Encerrar o modo de repetição atual | mp3.stopLoop() |
| shuffle() | Embaralhar a ordem de reprodução | mp3.shuffle() |
Código do Nano ESP32 — Tocar de uma Pasta
Métodos de Pasta
| Método | Finalidade | Exemplo |
|---|---|---|
| playFolder(f, t) | Selecionar a faixa t da pasta f | mp3.playFolder(1, 1) |
| playLargeFolder(f, t) | Modo de pasta grande (até 3000 faixas) | mp3.playLargeFolder(1, 1500) |
| playFromMP3Folder(t) | Acessar a pasta especial /mp3 | mp3.playFromMP3Folder(1) |
Código do Nano ESP32 — Controle pelo Serial Monitor
Comandos Seriais
| Entrada | Resultado |
|---|---|
| 1–9 | Tocar aquela faixa |
| + / − | Aumentar / diminuir volume |
| p | Pausar |
| r | Retomar |
| s | Parar |
| n | Próxima faixa |
| b | Faixa anterior |
| ? | Mostrar status |
Predefinições do Equalizador
| Constante | ID | Tom |
|---|---|---|
| DIYables_MiniMp3::EQ_NORMAL | 0 | Neutro |
| DIYables_MiniMp3::EQ_POP | 1 | Pop |
| DIYables_MiniMp3::EQ_ROCK | 2 | Rock |
| DIYables_MiniMp3::EQ_JAZZ | 3 | Jazz |
| DIYables_MiniMp3::EQ_CLASSIC | 4 | Clássico |
| DIYables_MiniMp3::EQ_BASS | 5 | Reforço de graves |
Funções de Consulta de Status
Cada consulta bloqueia por até 100 ms. Retorna −1 em caso de timeout.
| Método | Retorna | Informação |
|---|---|---|
| isPlaying() | bool | Se uma faixa está ativa |
| getVolume() | int16_t | Volume (0–30) |
| getEQ() | int16_t | Predefinição de EQ (0–5) |
| getTrackCount() | int16_t | Total de faixas no cartão |
| getCurrentTrack() | int16_t | Faixa em reprodução no momento |
| getFolderCount() | int16_t | Número de pastas |
| getTrackCountInFolder(f) | int16_t | Faixas na pasta f |