Como Reproduzir Áudio no ESP32 Usando Apenas o DAC Interno (Sem Módulo MP3)
![]() |
| Projeto você aprenderá a transformar um efeito sonoro em um arquivo compatível com o ESP32 e reproduzi-lo usando apenas o DAC interno e um amplificador PAM8403. |
Introdução
No artigo anterior vimos como o DAC (Conversor Digital para Analógico) do ESP32 pode gerar notas musicais utilizando uma biblioteca. Agora vamos um passo além: reproduzir um áudio real, como o som de uma campainha, usando apenas o DAC interno do ESP32 e um pequeno amplificador PAM8403.
O mais interessante é que não utilizaremos cartão SD, módulo MP3 ou qualquer circuito adicional para armazenar o áudio. Todo o som ficará gravado dentro da memória Flash do próprio ESP32 na forma de um grande vetor (array) de números.
Ao final deste tutorial, você aprenderá:
- O que é PCM.
- O que é um arquivo WAV.
- Como baixar um efeito sonoro gratuito.
- Como converter MP3 para WAV.
- Como transformar um arquivo WAV em um array em linguagem C.
- Como utilizar esse array no ESP32 para reproduzir o áudio.
Como o ESP32 reproduz um som?
Quando ouvimos uma campainha, escutamos apenas um som.
Já o ESP32 enxerga esse mesmo áudio como milhares de números armazenados na memória.
Durante a reprodução acontece o seguinte:
Áudio → números → DAC → tensão analógica → amplificador → alto-falante.
Ou seja, o DAC recebe uma sequência de valores digitais e reconstrói a onda sonora.
![]() |
| Etapas da reprodução de áudio no ESP32: Som → MP3 → WAV (PCM) → Array → ESP32 → DAC → PAM8403 → Alto-falante. |
O que é PCM?
PCM significa Pulse Code Modulation (Modulação por Código de Pulso).
É um dos formatos de áudio digital mais simples e utilizados no mundo.
Seu funcionamento é baseado em um processo chamado amostragem.
Imagine uma onda sonora.
Em vez de armazenar a onda inteira, o computador mede sua altura milhares de vezes por segundo.
Cada medição recebe um valor numérico.
Esses valores são armazenados em sequência.
Por exemplo:
120
123
125
128
124
118
112Esses números representam a forma da onda sonora.
Quanto maior a quantidade de amostras por segundo, mais fiel será o áudio.
No nosso projeto utilizaremos:
- PCM
- Mono
- 8 bits
- 16 kHz
Isso significa que o ESP32 receberá 16 mil valores por segundo.
O que é um arquivo WAV?
Muitas pessoas confundem WAV com PCM.
Na verdade, o WAV é apenas um formato de arquivo.
Ele funciona como um recipiente que guarda:
- o áudio PCM;
- frequência de amostragem;
- quantidade de bits;
- número de canais (mono ou estéreo).
O ESP32 consegue reproduzir facilmente arquivos WAV simples porque seus dados estão armazenados em PCM.
Por que converter MP3 para WAV?
O formato MP3 é comprimido.
Antes de ser reproduzido, ele precisa ser descompactado.
Esse processo exige bastante processamento.
Já o WAV contém o áudio praticamente pronto para reprodução.
Por isso, primeiro convertemos o MP3 em WAV e somente depois transformamos esse arquivo em um array.
Passo 1 – Baixando um efeito sonoro
Você pode utilizar efeitos sonoros gratuitos disponíveis no Pixabay.
https://pixabay.com/pt/sound-effects/search/campainha/
Pesquise por:
Campainha
Escolha um efeito sonoro e faça o download no formato MP3.
Passo 2 – Convertendo MP3 para WAV
Agora precisamos converter o áudio.
Utilize um conversor online.
https://audio.online-convert.com/pt/converter/mp3-para-wav
Configure, sempre que possível:
- Formato: WAV
- Mono
- 8 bits
- 16000 Hz
Esse formato é ideal para reprodução utilizando o DAC interno do ESP32.
Passo 3 – Convertendo WAV para um Array
Agora vem a parte mais interessante.
Utilize o conversor FileToCArray.
https://notisrac.github.io/FileToCArray/
Faça o upload do arquivo WAV.
Em poucos segundos ele irá gerar algo semelhante a isto:
const unsigned char somCampainha[] = {
0x52, 0x49, 0x46, 0x46,
0x9C, 0x00,
...
};Todo o áudio agora virou um grande vetor de números.
Passo 4 – Inserindo o array no ESP32
No projeto existe um vetor destinado ao áudio.
Basta substituir seu conteúdo pelo novo array gerado.
// 1. COLE OS BYTES DO SEU ÁUDIO AQUI DENTRO (Gerados no site FileToCArray)
const unsigned char somCampainha[] = {
/ ... cole o restante do código gerado pelo site aqui ...
};
📥 Download do Projeto
📄 Artigo completo
Leia o tutorial completo aqui no blog.
💻 Código-fonte no GitHub
https://github.com/RodRobot/Como-Reproduzir-uma-Campainha-no-ESP32-Usando-Apenas-o-DAC-Interno
🎥 Vídeo no YouTube
https://www.youtube.com/watch?v=UtoHPKP8cu8
Como o ESP32 toca esse áudio?
Durante a execução, o programa faz a leitura do array.
Cada número é enviado para o DAC.
O DAC transforma esse valor digital em uma pequena tensão elétrica.
Como isso acontece milhares de vezes por segundo, a onda sonora é reconstruída.
O sinal ainda possui pouca potência.
Por isso utilizamos um amplificador PAM8403 ligado a um alto-falante.
O resultado é uma campainha reproduzida apenas pelo ESP32.
Vantagens de utilizar um array
Essa técnica possui diversas vantagens.
- Não precisa de cartão SD.
- Não precisa de módulo MP3.
- Inicialização instantânea.
- Projeto mais barato.
- Código simples.
- Excelente para alarmes, campainhas e mensagens curtas.
Desvantagens
Também existem algumas limitações.
- O áudio ocupa memória Flash.
- Para trocar o som é necessário recompilar o programa.
- Não é indicado para músicas longas.
- O código fica muito grande se o array estiver no arquivo principal.
Conclusão
Neste tutorial você aprendeu como transformar um simples arquivo MP3 em um áudio compatível com o ESP32.
Vimos que primeiro convertemos o MP3 para WAV, depois transformamos esse arquivo em um array em linguagem C e, por fim, utilizamos o DAC interno para reconstruir a onda sonora e reproduzi-la em um alto-falante.
Essa técnica é ideal para projetos de robótica, automação residencial, alarmes, campainhas inteligentes e dispositivos com mensagens de voz.
No próximo projeto, vamos organizar todos os sons em um arquivo audios.h, permitindo que o ESP32 reproduza várias frases curtas como "Olá ESP32", "Bem-vindo" e "Sensor da porta acionado", deixando o código muito mais limpo e fácil de expandir.
🔧 Acompanhe o RodRobot
Projetos maker com ESP32, Arduino, eletrônica e programação.
RodRobot – Projetos maker, eletrônica e programação na prática.






Comentários
Postar um comentário