Como Captar e Reproduzir Áudio com ESP32-S3 Display

Neste projeto, você vai aprender a captar e reproduzir áudio com o ESP32-S3 Display, utilizando o microfone integrado e um alto-falante externo. Vamos configurar o sistema de áudio da placa com o codec ES8311 e as bibliotecas AudioTools e ESP32S3HosyondDisplay.h.

Você também vai aprender a programar o ESP32-S3 na IDE do Arduino para captar os sons do ambiente e encaminhá-los diretamente para o alto-falante, permitindo a reprodução praticamente em tempo real.

Conhecendo o sistema de áudio do ESP32-S3 Display

O ESP32-S3 Display possui recursos de áudio integrados à placa, permitindo captar e reproduzir sons sem a necessidade de montar um circuito externo para o microfone.

A placa conta com:

  • Microfone integrado: capta os sinais sonoros do ambiente.
  • Saída para alto-falante: permite conectar um alto-falante externo para reproduzir os áudios.
  • Codec de áudio ES8311: realiza o processamento e a conversão dos sinais de áudio durante a comunicação entre os componentes.


O que é o ES8311?

O ES8311 é um codec de áudio responsável por realizar as conversões necessárias para a captação e reprodução de som.

Ele faz a interface entre o microcontrolador e os componentes de áudio da placa, permitindo que o ESP32-S3 trabalhe com os sinais recebidos pelo microfone e enviados para o alto-falante.

Bibliotecas necessárias

Para facilitar a comunicação com os componentes de áudio, vamos utilizar duas bibliotecas: ESP32S3HosyondDisplay.h e AudioTools.

ESP32S3HosyondDisplay.h

Essa biblioteca contém as definições de hardware necessárias para identificar os pinos e estabelecer a comunicação com o codec de áudio da placa.

Com ela, podemos utilizar a configuração específica do ESP32-S3 Display sem precisar definir manualmente todas as conexões do circuito de áudio.

AudioTools

A biblioteca AudioTools disponibiliza ferramentas para configurar e trabalhar com fluxos de áudio no ESP32.

Neste projeto, vamos utilizá-la para inicializar o sistema de áudio e encaminhar os dados captados pelo microfone diretamente para o alto-falante.

Programação na Arduino IDE

Para desenvolver e gravar o programa, vamos utilizar a Arduino IDE.

O código abaixo configura o sistema para trabalhar simultaneamente com a entrada e a saída de áudio. Dessa forma, o som captado pelo microfone é encaminhado diretamente para o alto-falante.

Código do projeto

#include "AudioTools.h"
#include "AudioTools/AudioLibs/AudioBoardStream.h"

AudioInfo info(16000, 1, 16);

AudioBoardStream audio(ESP32S3HosyondDisplay);

StreamCopy copier(audio, audio);

void setup() {
  Serial.begin(115200);
  delay(1000);

  auto config = audio.defaultConfig(RXTX_MODE);
  config.copyFrom(info);

  if (!audio.begin(config)) {
    Serial.println("Erro ao iniciar audio!");
    while (true) delay(1000);
  }

  audio.setVolume(0.7);

  pinMode(45, OUTPUT);
  digitalWrite(45, LOW);
}

void loop() {
  copier.copy();
}

Entendendo o código

Antes de enviar o programa, vamos entender as principais configurações utilizadas.

1. Configuração do áudio

AudioInfo info(16000, 1, 16);

Essa linha define os parâmetros do áudio:

  • 16000: taxa de amostragem de 16 kHz.
  • 1: áudio em um canal (mono).
  • 16: resolução de 16 bits por amostra.

2. Inicialização do sistema

AudioBoardStream audio(ESP32S3HosyondDisplay);

Essa instrução identifica a configuração de hardware do ESP32-S3 Display e prepara a comunicação com o sistema de áudio.

3. Configuração de entrada e saída

auto config = audio.defaultConfig(RXTX_MODE);
config.copyFrom(info);

O modo RXTX_MODE configura o sistema para trabalhar com recepção e transmissão de áudio, permitindo utilizar a entrada do microfone e a saída do alto-falante.

4. Inicialização e volume

if (!audio.begin(config)) {
  Serial.println("Erro ao iniciar audio!");
  while (true) delay(1000);
}

audio.setVolume(0.7);

A função audio.begin(config) inicializa o sistema com os parâmetros definidos. Caso ocorra algum erro, o programa informa a falha no Monitor Serial.

Já audio.setVolume(0.7) configura o volume de saída para 70%, conforme a escala utilizada pela biblioteca.

5. Reprodução do áudio

void loop() {
  copier.copy();
}

A função copier.copy() realiza a transferência dos dados de áudio entre a entrada e a saída. Assim, o som captado pelo microfone é encaminhado para o alto-falante continuamente.

Gravando o programa

Com o código pronto, conecte o ESP32-S3 Display ao computador utilizando um cabo USB.

Abra a Arduino IDE e confira as configurações:

  • Selecione o modelo correspondente à placa ESP32-S3.
  • Escolha a porta COM correspondente.
  • Verifique se as bibliotecas necessárias estão instaladas.
  • Clique em Carregar para enviar o programa.

Após o envio, abra o Monitor Serial para acompanhar a inicialização do sistema.

Caso ocorra algum erro durante a inicialização do áudio, o programa exibirá a mensagem:

Erro ao iniciar audio!

Se a inicialização ocorrer corretamente, o sistema estará pronto para captar e reproduzir os sons.

Resultado esperado

Após gravar o programa, conecte um alto-falante compatível à saída da placa e fale próximo ao microfone integrado.

O som captado deverá ser encaminhado diretamente para o alto-falante, permitindo acompanhar a reprodução praticamente em tempo real.

Com esse teste, você consegue verificar o funcionamento da entrada e da saída de áudio do ESP32-S3 Display.

Conclusão

Pronto! Agora você já sabe como configurar o ESP32-S3 Display para captar e reproduzir áudio.

Com o microfone integrado e um alto-falante externo, é possível captar os sons do ambiente e reproduzi-los diretamente pela placa.

Esse recurso permite desenvolver diferentes aplicações com áudio, como sistemas de comunicação, comandos de voz e projetos de automação com recursos sonoros.

Post navigation

Deixe um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Introdução ao micro:bit – Primeiros Passos

Projeto Musical com Arduino Uno: Tutorial Completo 

Faça seu próprio Joystick com Arduino UNO

ESP32 Super Mini: Comparativo entre C3, S3, C6 e H2