Como Reproduzir Áudio no ESP32 Usando Apenas o DAC Interno (Sem Módulo MP3)

ESP32 Tocando uma Campainha Real com DAC Interno
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.

Infográfico mostrando o processo completo de reprodução de áudio no ESP32, desde a captura do som, conversão de MP3 para WAV, transformação em um array de números (PCM), processamento pelo ESP32, conversão pelo DAC interno, amplificação pelo PAM8403 e reprodução no alto-falante.
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
112

Esses 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.

Infográfico mostrando como o PCM transforma uma onda sonora em números digitais e como o ESP32 utiliza o DAC para reconstruir o áudio.
O PCM (Pulse Code Modulation) converte uma onda sonora analógica em milhares de amostras numéricas. Cada amostra representa a amplitude do som em um determinado instante. No ESP32, esses valores podem ser armazenados em um arquivo WAV ou em um array na memória Flash e enviados ao DAC interno, que reconstrói a onda analógica para reprodução em um alto-falante.

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.

Infográfico explicando que o arquivo WAV funciona como um recipiente para armazenar áudio PCM, frequência de amostragem, quantidade de bits e número de canais. A imagem também mostra como o ESP32 utiliza o DAC interno para reproduzir o áudio em um alto-falante.
O formato WAV é um contêiner de áudio que armazena informações como dados PCM, frequência de amostragem, resolução em bits e número de canais (mono ou estéreo). No ESP32, o áudio PCM pode ser lido diretamente pelo programa e enviado ao DAC interno, que converte os dados digitais em um sinal analógico. Em seguida, um amplificador, como o PAM8403, aumenta a potência do sinal para que o alto-falante reproduza o som.

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

Diagrama de ligação mostrando um ESP32 utilizando o DAC interno (GPIO25) conectado ao amplificador PAM8403, um alto-falante de 4 Ω / 3 W e um sensor touch TTP223 para reproduzir uma campainha digital.

Diagrama de ligação do projeto da campainha digital com ESP32. O áudio é reproduzido pelo DAC interno (GPIO25), amplificado pelo módulo PAM8403 e enviado para um alto-falante de 4 Ω / 3 W. O sensor touch TTP223 conectado ao GPIO18 é utilizado para acionar a reprodução do som, demonstrando uma solução simples para projetos de automação, robótica e sistemas de alerta.


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.

Infográfico mostrando o funcionamento da reprodução de áudio no ESP32. O programa lê um array de números, envia cada valor ao DAC interno, que gera um sinal analógico. Em seguida, um amplificador PAM8403 aumenta a potência do sinal para que o alto-falante reproduza o som.
Funcionamento da reprodução de áudio no ESP32 utilizando o DAC interno. Durante a execução do programa, cada valor armazenado no array é enviado ao DAC (Conversor Digital para Analógico), que converte os dados digitais em pequenas variações de tensão elétrica. Como esse processo ocorre milhares de vezes por segundo, a onda sonora é reconstruída. Em seguida, o amplificador PAM8403 aumenta a potência do sinal para acionar o alto-falante, permitindo reproduzir uma campainha ou outros sons sem a necessidade de um módulo MP3.

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

Postagens mais visitadas deste blog

ESP32-C3 Super Mini: Características, Vantagens, Pinagem, Matter.

ESP32 para Iniciantes: Projeto LED Piscando Passo a Passo

ESP32 Botão Touch: Como Usar o Sensor Touch (Tutorial com LED e Relé)