Tutorial ESP32 41/55 - Reprodutor MP3 usando cartão Micro SD | Kit de Aprendizagem IoT ESP32 da SunFounder
Neste tutorial, criaremos um reprodutor de MP3 usando o microcontrolador ESP32 e um cartão micro SD. O ESP32 irá ler arquivos de áudio armazenados no cartão micro SD e reproduzirá o som através de um amplificador de áudio e alto-falante. Este projeto combina vários componentes, incluindo o ESP32, um amplificador de áudio e um cartão micro SD, para permitir que você reproduza música de maneira simples.
Ao longo do processo, discutiremos a fiação necessária, a codificação e como solucionar problemas comuns. Para uma orientação mais visual, não deixe de conferir o vídeo associado (no vídeo em :00).
Hardware Explicado
Os principais componentes utilizados neste projeto incluem o microcontrolador ESP32, um cartão micro SD, um amplificador de áudio e um alto-falante. O ESP32 é um microcontrolador poderoso com capacidades de Wi-Fi e Bluetooth integradas, tornando-o ideal para projetos de IoT. Ele lidará com o processamento e controle da reprodução de áudio.
O cartão micro SD é usado para armazenar arquivos de áudio no formato MP3. Ele se conecta ao ESP32 e permite que o programa leia os arquivos e envie dados de áudio para o amplificador. O amplificador de áudio recebe o sinal digital do ESP32 e o amplifica para acionar o alto-falante, permitindo que o som seja ouvido.
Detalhes da Ficha Técnica
| Fabricante | SunFounder |
|---|---|
| Número da peça | ESP32 |
| Tensão lógica/IO | 3,3 V |
| Tensão de alimentação | 5 V |
| Corrente de saída (por canal) | 2 A máx |
| Corrente de pico (por canal) | 3 A máx |
| Orientação sobre a frequência PWM | até 40 kHz |
| Limiares de lógica de entrada | 0,3 x VCC (baixo), 0,7 x VCC (alto) |
| Queda de tensão / RDS(on)saturação | 0,15 V |
| Limites térmicos | 85 °C |
| Pacote | WROOM-32 |
| Notas / variantes | Compatível com várias bibliotecas de áudio |
- Certifique-se de que o cartão micro SD esteja formatado como FAT32.
- Use um resistor para conectar o amplificador de áudio para evitar distorção.
- Mantenha as conexões de alimentação estáveis para evitar interrupções.
- Verifique a fiação para conexões soltas antes de ligar o sistema.
- Monitore a saída serial para informações de depuração.
- Use alto-falantes de baixa impedância para melhor qualidade de som.
- Para melhor desempenho, certifique-se de que o ESP32 não esteja sobrecarregado com tarefas enquanto reproduz áudio.
SD_MMCé utilizado para acesso a micro SD, eAudioOutputI2Sé utilizado para saída de áudio.
Instruções de Fiação


Para conectar os componentes, comece conectando a fonte de alimentação. Conecte os 5 V do ESP32 ao pino VCC do amplificador de áudio. Em seguida, conecte o pino de terra do ESP32 ao pino de terra do amplificador. O pino de saída de áudio do ESP32, geralmenteGPIO25, deve ser conectado ao pino de entrada do amplificador através de um resistor de 10 kΩ.
Para o alto-falante, conecte-o aos pinos de saída do amplificador de áudio. Observe que o alto-falante não possui polaridade, portanto você pode conectá-lo de qualquer maneira. Insira o cartão micro SD no slot designado da ESP32. Certifique-se de verificar todas as conexões antes de ligar o sistema.
Exemplos de Código e Tutorial
No código fornecido, começamos incluindo as bibliotecas necessárias para reprodução de áudio e acesso ao cartão SD. Os principais identificadores sãomp3,file, eout, que representam, respectivamente, o gerador de MP3, a fonte do arquivo de áudio e a saída de áudio.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;Aqui, declaramos ponteiros para o gerador de MP3 e a fonte do arquivo de áudio. Nosetup()função, inicializamos a comunicação serial e o cartão SD.
void setup() {
Serial.begin(115200);
if (!SD_MMC.begin()) {
Serial.println("SD card mount failed!");
}
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
out = new AudioOutputI2S(0, 1);
}Neste trecho, verificamos se o cartão SD está montado com sucesso. Se falhar, uma mensagem de erro é impressa. Em seguida, configuramos o arquivo MP3 e o modo de saída de áudio.
void loop() {
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
} else {
Serial.println("MP3 done");
delay(1000);
}
}Este loop verifica se o arquivo MP3 ainda está sendo reproduzido. Se não estiver, ele imprime uma mensagem indicando que a reprodução está completa. O código completo será carregado abaixo do artigo para referência adicional.
Demonstração / O que Esperar
Uma vez que tudo esteja conectado e o código carregado, você deve ouvir o áudio sendo reproduzido pelo alto-falante quando o cartão micro SD for inserido. Certifique-se de reiniciar o ESP32 após inserir o cartão. Se o áudio não tocar, verifique a fiação e garanta que o arquivo de áudio esteja nomeado corretamente no código (no vídeo às 05:00).
Os erros comuns incluem não formatar o cartão micro SD corretamente ou usar formatos de arquivo de áudio não suportados. Sempre assegure-se de que os arquivos estão no formato MP3 e colocados no diretório raiz ou na pasta especificada, conforme necessário.
Marcação de Vídeo
- 00:00 Início
- 2:19 Introdução ao projeto
- 4:27 Página de documentos
- 5:32 Fiação para amplificador de áudio
- 8:00 formatando cartão microSD para ESP32
- 10:16 Biblioteca e Código
- 15:16 Selecionando a placa ESP32 e a porta COM no Arduino IDE
- 16:58 Tocando música usando ESP32 do cartão Micro SD
- 19:14 Segundo demo usando bateria 18650
#include "AudioFileSourceSD_MMC.h"
#include "AudioOutputI2S.h"
#include "AudioGeneratorMP3.h"
#include "SD_MMC.h"
#include "FS.h"
// Declare ponteiros para o gerador de MP3, origem do arquivo e saída.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;
void setup() {
// Inicie a comunicação serial.
Serial.begin(115200);
delay(1000);
// Inicialize o cartão SD. Se falhar, imprima uma mensagem de erro.
if (!SD_MMC.begin()) {
Serial.println("SD card mount failed!");
}
// Abra o arquivo MP3 do cartão SD. Substitua "/To Alice.mp3" pelo nome do seu próprio arquivo MP3.
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
// Configure a saída I2S no DAC interno do ESP32.
out = new AudioOutputI2S(0, 1);
// Defina a saída para mono.
out->SetOutputModeMono(true);
// Inicialize o gerador de MP3 com o arquivo e a saída.
mp3 = new AudioGeneratorMP3();
mp3->begin(file, out);
}
void loop() {
// Se o MP3 estiver tocando, coloque-o em loop. Caso contrário, pare-o.
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
}
// Se o MP3 não estiver em execução, imprima uma mensagem e aguarde 1 segundo.
else {
Serial.println("MP3 done");
delay(1000);
}
}
Common Course Links
Common Course Files
Recursos e referências
-
Documentação
Arquivos📁
Nenhum arquivo disponível.