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.

  1. Acesse o site TTMaker.
  2. Digite a frase que deseja (ex: “Sistema Zion iniciado com sucesso”).
  3. Escolha uma voz brasileira e digite o código de verificação.
  4. Importante: Ao baixar, o arquivo geralmente vem em MP3. Recomendamos converter para WAV (16-bit, 16000Hz ou 44100Hz) para garantir compatibilidade total e performance.
  5. 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

  1. Salve seu sketch (código) em uma pasta.
  2. Dentro dessa pasta, crie uma subpasta chamada data.
  3. Cole seu arquivo audio.wav dentro da pasta data.
  4. Na IDE, feche o Monitor Serial (se estiver aberto).
  5. 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.

Deixe um comentário

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