
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
Antes de tudo, vamos Habilitar o Upload de Arquivos LittleFS na Arduino IDE 2.0 (Windows e Mac)
Se você trabalha com ESP32 ou ESP8266 e precisa criar interfaces web profissionais, armazenar arquivos HTML, CSS, JavaScript ou imagens diretamente na memória flash do microcontrolador é essencial. Antigamente, na IDE 1.8, usávamos um plugin Java. Agora, na moderna Arduino IDE 2.0, o processo mudou e ficou mais integrado à arquitetura do editor. Neste tutorial, a Zion Automation te ensina o passo a passo para configurar o LittleFS Upload e como forçar o modo de gravação na sua placa.
O que você vai precisar
- Arduino IDE 2.0 ou superior instalada.
- O arquivo do plugin (
.vsix). - Uma placa EchoVision Zion.
Passo 1: Baixar o Plugin
A ferramenta que utilizaremos é o arduino-littlefs-upload.
- Acesse o repositório oficial no GitHub (procure por
earlephilhower/arduino-littlefs-upload) ou nesse link. - Vá na aba Releases.
- Baixe o arquivo mais recente com a extensão .vsix (Exemplo:
arduino-littlefs-upload-1.0.0.vsix).
Passo 2: Instalação
A instalação consiste em colocar esse arquivo na pasta de plugins da IDE.
🪟 Para Usuários Windows
- Feche a Arduino IDE se estiver aberta.
- Navegue até a pasta de usuário:
C:\Usuários\{SEU_USUARIO}\.arduinoIDE\ - Se não existir, crie uma pasta chamada
plugins. - Copie o arquivo .vsix baixado para dentro de:
C:\Usuários\{SEU_USUARIO}\.arduinoIDE\plugins\ - Abra a Arduino IDE.
🍎 Para Usuários macOS (Apple Silicon & Intel)
- Feche a Arduino IDE.
- Abra o Terminal ou use o Finder (menu “Ir” > “Ir para a Pasta…” ou
Cmd+Shift+G). - Digite o caminho:
~/.arduinoIDE/ - Crie uma pasta chamada
plugins(caso não exista). - Copie o arquivo .vsix para dentro desta pasta.
- Nota: O caminho final será
~/.arduinoIDE/plugins/arquivo.vsix.
- Nota: O caminho final será
- Abra a Arduino IDE.
Atenção (macOS): Na primeira execução, o sistema pode bloquear o plugin por segurança. Vá em Ajustes do Sistema > Privacidade e Segurança e clique em “Abrir Mesmo Assim” se solicitado.
Passo 3: Preparando os Arquivos (A Pasta “data”)
Para que o plugin saiba o que enviar, você precisa seguir uma estrutura rígida:
- Abra a pasta do seu projeto (Sketch).
- Crie uma pasta chamada data (tudo minúsculo).
- Coloque seus arquivos HTML, CSS, JSON ou imagens dentro dessa pasta.
Passo 4: Como Fazer o Upload (Modo Boot)
Diferente da IDE antiga, o comando não fica no menu “Ferramentas”.
- Na Arduino IDE 2.0, pressione:
- Windows:
Ctrl + Shift + P - Mac:
Command (⌘) + Shift + P
- Windows:
- Uma barra de busca abrirá. Digite:
Upload LittleFS. - Selecione a opção: Upload LittleFS to Pico/ESP8266/ESP32.
⚡ O Segredo do “Modo Boot” (Download Mode)
Muitas vezes, ao tentar enviar os arquivos, você pode receber o erro A fatal error occurred: Failed to connect to ESP32: Timed out. Isso acontece porque, diferentemente do upload do código (sketch), o upload de arquivos via ferramenta externa às vezes não consegue resetar a placa automaticamente.
Para resolver, você deve colocar a placa em Modo de Download Manualmente:
- Conecte a placa ao USB.
- Mantenha pressionado o botão BOOT da placa.
- Sem soltar o BOOT, dê um toque rápido no botão EN (ou RESET).
- Solte o botão EN.
- Por fim, solte o botão BOOT.
Agora a placa está em modo de espera. Execute o comando de upload novamente na IDE. Assim que o terminal mostrar “Writing…”, o processo começou. Após finalizar, aperte o botão EN (Reset) uma vez para reiniciar a placa e rodar seu sistema. O próximo passo é gerar o áudio e enviar seu código normalmente via arduino upload, vamos lá!
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.
