
Reproduzindo voz personalizada com EchoVision.
Seja bem-vindo de volta ao ecossistema Zion! Hoje vamos dar vida — e voz — à sua EchoVision. Se piscar um LED já é satisfatório, imagine sua placa falando com você, dando avisos sonoros ou tocando música com alta fidelidade.
Neste tutorial, vamos dominar o amplificador NS4168 integrado à EchoVision usando o protocolo I2S e o sistema de arquivos LittleFS. Vamos passar por todo o processo: desde criar o áudio com IA até a configuração correta da IDE para evitar erros de memória.
O que você vai precisar:
- Placa EchoVision (ESP32-S3 N16R8)
- Alto-falante (4Ω ou 8Ω) conectado ao conector do amplificador(Já disponível com a placa).
- Cabo USB-C de dados
- Plugin “ESP32 LittleFS Uploader” instalado na Arduino IDE
Passo 1: Gerando o Áudio (TTMaker)
Não precisa gravar sua própria voz. Vamos usar uma IA para gerar um arquivo limpo.
- Acesse o site TTMaker.
- Digite a frase que deseja (ex: “Sistema Zion iniciado com sucesso”).
- Escolha uma voz brasileira e digite o código de verificação.
- Importante: Ao baixar, o arquivo geralmente vem em MP3. Recomendamos converter para WAV (16-bit, 16000Hz ou 44100Hz) para garantir compatibilidade total e performance.
- Renomeie o arquivo para
audio.wav.
Passo 2: Preparando a Arduino IDE
Para o ESP32 tocar áudio via I2S, usaremos a melhor biblioteca disponível para isso.
- Vá em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas.
- Busque por “ESP32-audioI2S” (autor: Schreibfaul1).
- Instale a versão mais recente.
Passo 3: A Configuração “Pulo do Gato” (Partition Scheme)
Aqui é onde muita gente trava. A EchoVision é poderosa (16MB de Flash), mas precisamos configurar a memória corretamente para caber o código e o sistema de arquivos LittleFS sem dar conflito com o plugin de upload.
Vá em Ferramentas e configure exatamente assim:
- Board: ESP32S3 Dev Module
- Flash Size: 16MB (128Mb)
- PSRAM: OPI PSRAM (Essencial para áudio sem travas)
- Partition Scheme:
8M Flash (3MB APP / 1.5MB SPIFFS)
Por que escolher 8MB se a placa tem 16MB?
O plugin atual do LittleFS tem dificuldade em reconhecer partições customizadas de 16MB (FAT). Ao selecionar o esquema de 8MB SPIFFS, garantimos que o upload do áudio funcione de primeira, mantendo 3MB livres para seu código, o que é mais que suficiente.
Passo 4: Upload do Arquivo de Áudio
- Salve seu sketch (código) em uma pasta.
- Dentro dessa pasta, crie uma subpasta chamada
data. - Cole seu arquivo
audio.wavdentro da pastadata. - Na IDE, feche o Monitor Serial (se estiver aberto).
- Vá em Ferramentas > ESP32 LittleFS Data Upload. Aguarde a mensagem “LittleFS Image Uploaded”. Caso não encontro essa opção, pressioane Ctrl+shift+P, pesquisa upload LittleFS e selecione esse upload.
Passo 5: O Código (Sketch)
Agora vamos ao código que faz a mágica acontecer. Note que na EchoVision, o pino GPIO 46 é fundamental: ele é o gatilho que liga o amplificador.
#include <Arduino.h>
#include <WiFi.h>
#include "Audio.h"
#include "FS.h"
#include "LittleFS.h"
// --- Definição dos Pinos (Baseado no seu Esquemático) ---
#define I2S_BCLK 48
#define I2S_LRC 45
#define I2S_DOUT 3
#define AMP_ENABLE 46 // Pino CTRL do NS4168
Audio audio;
void setup() {
Serial.begin(115200);
// 1. Inicializa o LittleFS
if (!LittleFS.begin()) {
Serial.println("Falha ao montar LittleFS");
return;
}
// 2. Configura e ATIVA o amplificador (Crucial!)
pinMode(AMP_ENABLE, OUTPUT);
digitalWrite(AMP_ENABLE, HIGH); // Liga o NS4168
// 3. Configura o I2S
// setPinout(BCLK, LRC, DOUT)
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
// Ajusta o volume (0 a 21)
audio.setVolume(21);
// 4. Reproduz o arquivo
// Tenta abrir o arquivo no LittleFS
if(LittleFS.exists("/audio.wav")){
Serial.println("Reproduzindo audio.wav...");
audio.connecttoFS(LittleFS, "/audio.wav");
} else {
Serial.println("Erro: Arquivo audio.wav não encontrado na memória!");
}
}
void loop() {
// Esta função deve rodar constantemente para processar o buffer de áudio
audio.loop();
// Se quiser ver logs ou controlar algo via serial, faça sem delay()
}
// Funções opcionais de debug da biblioteca
void audio_info(const char *info){
Serial.print("info "); Serial.println(info);
}
void audio_eof_stream(const char *info){
Serial.print("Fim do arquivo: "); Serial.println(info);
}
Dica de Mestre: Volume Baixo?
Se mesmo no volume 21 o som parecer baixo, o “culpado” geralmente não é a placa, mas o arquivo de áudio.
O amplificador digital apenas reproduz o que recebe. Se seu áudio foi gravado em um nível baixo (ex: -10dB), ele tocará baixo. Antes de colocar na pasta data, use um editor de áudio (como Audacity) e aplique o efeito Normalizar para 0dB. Outra opção é no TTSmaker e deixar áudio em 200%. Isso garante que a EchoVision use toda a potência disponível do NS4168.
Agora é com você! Que tal fazer a EchoVision dar boas-vindas quando alguém entrar na sala? Compartilhe seus resultados marcando a Zion nas redes sociais.
