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:

Arduino Nano ESP32 Mini Player de Mp3

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×DIYables Mini Mp3 Player module
1×Cartão Micro SD
1×Speaker
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.

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
Pinagem do Mini Player de Mp3

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 −
Diagrama de ligação do Mini Player de Mp3 com o Arduino Nano ESP32

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:

  1. Formate como FAT16 ou FAT32.
  2. Copie os arquivos mp3 para a raiz com nomes preenchidos com zeros:
/001.mp3 /002.mp3 /003.mp3

Para reprodução por pasta:

/01/001.mp3 /01/002.mp3 /02/001.mp3

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.
Biblioteca do Mini Player de Mp3 para Arduino Nano ESP32

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:

#include <DIYables_MiniMp3.h> DIYables_MiniMp3 mp3; void setup() { Serial.begin(115200); Serial1.begin(9600); // Hardware serial for the mp3 module mp3.begin(Serial1); delay(1000); // Wait for the module to boot mp3.setVolume(25); } void loop() { // Your code here }

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

/* * DIYables Mini Mp3 Player - Play One Track * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays track 001 once, then stops. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); // Wait for the module to initialize mp3.setVolume(25); // Set volume (0 to 30) Serial.println("Playing track 1..."); mp3.play(1); // Play track 001.mp3 } void loop() { // Nothing to do here }

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

/* * DIYables Mini Mp3 Player - Play Multiple Tracks * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays tracks one after another with a delay between them. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, 003.mp3 */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; int currentTrack = 1; int totalTracks = 3; // Change this to match your SD card unsigned long lastTrackTime = 0; unsigned long trackDuration = 5000; // Wait 5 seconds between tracks (adjust as needed) void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); Serial.println("Playing track 1..."); mp3.play(currentTrack); lastTrackTime = millis(); } void loop() { // After trackDuration, play the next track if (millis() - lastTrackTime >= trackDuration) { currentTrack++; if (currentTrack > totalTracks) currentTrack = 1; // Loop back to first track Serial.print("Playing track "); Serial.println(currentTrack); mp3.play(currentTrack); lastTrackTime = millis(); } }

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

/* * DIYables Mini Mp3 Player - Volume Control * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Use two buttons to increase/decrease the volume. * Press button on pin D2 to volume up, pin D3 to volume down. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button UP -> Pin D2 (other leg to GND) * Button DOWN -> Pin D3 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_VOL_UP = D2; const int BUTTON_VOL_DOWN = D3; int volume = 15; // Start at half volume void setup() { Serial.begin(9600); mp3Serial.begin(9600); pinMode(BUTTON_VOL_UP, INPUT_PULLUP); pinMode(BUTTON_VOL_DOWN, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(volume); mp3.loopTrack(1); // Play track 1 on repeat Serial.print("Volume: "); Serial.println(volume); } void loop() { // Volume Up button (pressed = LOW because of INPUT_PULLUP) if (digitalRead(BUTTON_VOL_UP) == LOW) { if (volume < 30) { volume++; mp3.setVolume(volume); Serial.print("Volume: "); Serial.println(volume); } delay(200); // Simple debounce } // Volume Down button if (digitalRead(BUTTON_VOL_DOWN) == LOW) { if (volume > 0) { volume--; mp3.setVolume(volume); Serial.print("Volume: "); Serial.println(volume); } delay(200); // Simple debounce } }

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

/* * DIYables Mini Mp3 Player - Next/Previous with Buttons * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Use two buttons to play next/previous tracks. * Displays the current track number on the Serial Monitor. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button NEXT -> Pin D2 (other leg to GND) * Button PREV -> Pin D3 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_NEXT = D2; const int BUTTON_PREV = D3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); pinMode(BUTTON_NEXT, INPUT_PULLUP); pinMode(BUTTON_PREV, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); mp3.play(1); // Start with track 1 Serial.println("Press NEXT or PREV button to change track"); } void loop() { if (digitalRead(BUTTON_NEXT) == LOW) { Serial.println("Next track"); mp3.playNext(); delay(300); // Simple debounce } if (digitalRead(BUTTON_PREV) == LOW) { Serial.println("Previous track"); mp3.playPrevious(); delay(300); // Simple debounce } }

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

/* * DIYables Mini Mp3 Player - Pause and Resume * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Demonstrates pausing and resuming playback using a single button. * Press the button to toggle between pause and resume. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button -> Pin D2 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_PIN = D2; bool paused = false; void setup() { Serial.begin(9600); mp3Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); mp3.play(1); Serial.println("Playing. Press button to pause/resume."); } void loop() { if (digitalRead(BUTTON_PIN) == LOW) { if (paused) { mp3.resume(); Serial.println("Resumed"); } else { mp3.pause(); Serial.println("Paused"); } paused = !paused; delay(300); // Simple debounce } }

Código do Nano ESP32 — Repetir uma Faixa

/* * DIYables Mini Mp3 Player - Loop Track * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Loops (repeats) a track continuously with EQ setting. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card file structure: * /001.mp3 * /002.mp3 * ... */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); // Wait for the module to initialize mp3.setVolume(25); // Volume: 0 to 30 mp3.setEQ(DIYables_MiniMp3::EQ_NORMAL); Serial.println("Playing track 1 on loop..."); mp3.loopTrack(1); } void loop() { // Your code here }

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

/* * DIYables Mini Mp3 Player - Play from Folder * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays tracks from specific folders on the SD card. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card file structure: * /01/001.mp3 <- playFolder(1, 1) * /01/002.mp3 <- playFolder(1, 2) * /02/001.mp3 <- playFolder(2, 1) * /02/002.mp3 <- playFolder(2, 2) * * IMPORTANT: * - Numbering starts from 1, NOT 0 * - Folder names must be 2-digit zero-padded (01-99) * - Track names must be 3-digit zero-padded (001-255) * - Format SD card as FAT32, then copy files one by one in order * - Track order is determined by the order files were copied, * NOT by filename. So copy them in the correct sequence. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); // Play track 1 from folder 01 Serial.println("Playing folder 01, track 001..."); mp3.playFolder(1, 1); delay(5000); // Play track 2 from folder 01 Serial.println("Playing folder 01, track 002..."); mp3.playFolder(1, 2); delay(5000); // Play track 1 from folder 02 Serial.println("Playing folder 02, track 001..."); mp3.playFolder(2, 1); } void loop() { // Nothing to do here }

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

/* * DIYables Mini Mp3 Player - Serial Command Control * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Control the Mp3 player by typing commands in the Serial Monitor. * Great for testing all functions without extra hardware. * * Commands (type in Serial Monitor, then press Enter): * 1-9 Play track 1 to 9 * + Volume up * - Volume down * p Pause * r Resume * s Stop * n Next track * b Previous track (back) * ? Show current status * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); Serial.println("=== DIYables Mini Mp3 Player ==="); Serial.println("Commands:"); Serial.println(" 1-9 Play track number"); Serial.println(" + Volume up"); Serial.println(" - Volume down"); Serial.println(" p Pause"); Serial.println(" r Resume"); Serial.println(" s Stop"); Serial.println(" n Next track"); Serial.println(" b Previous track"); Serial.println(" ? Show status"); Serial.println("================================"); } void loop() { if (Serial.available()) { char cmd = Serial.read(); switch (cmd) { case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': Serial.print("Playing track "); Serial.println(cmd - '0'); mp3.play(cmd - '0'); break; case '+': Serial.println("Volume up"); mp3.volumeUp(); break; case '-': Serial.println("Volume down"); mp3.volumeDown(); break; case 'p': Serial.println("Paused"); mp3.pause(); break; case 'r': Serial.println("Resumed"); mp3.resume(); break; case 's': Serial.println("Stopped"); mp3.stop(); break; case 'n': Serial.println("Next track"); mp3.playNext(); break; case 'b': Serial.println("Previous track"); mp3.playPrevious(); break; case '?': { Serial.println("--- Status ---"); int16_t vol = mp3.getVolume(); Serial.print("Volume: "); Serial.println(vol); int16_t track = mp3.getCurrentTrack(); Serial.print("Current track: "); Serial.println(track); bool playing = mp3.isPlaying(); Serial.print("Playing: "); Serial.println(playing ? "Yes" : "No"); int16_t total = mp3.getTrackCount(); Serial.print("Total tracks: "); Serial.println(total); Serial.println("--------------"); break; } default: break; } } }

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
mp3.setEQ(DIYables_MiniMp3::EQ_POP);

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

※ 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!