Ponte de Áudio USB reSpeaker XVF3800 com XIAO ESP32S3
Visão geral
Este projeto fornece firmware Arduino para uma ponte de áudio e controle USB com ESP32-S3 conectada a um reSpeaker XVF3800. Uma única conexão USB nativa fornece captura estéreo, reprodução estéreo e uma interface serial CDC para controle do reSpeaker XVF3800 via I2C.

Recursos do firmware
- Captura e reprodução USB Audio Class 1 (UAC1) via USB Full-Speed.
- PCM estéreo assinado de 32 bits little-endian, com slots I2S Philips de 32 bits.
- Seleção em tempo de compilação de operação em 16 kHz ou 48 kHz e da fonte de clock I2S.
- Captura e reprodução USB simultâneas. USB e I2S usam a mesma taxa de amostragem nominal.
- Bufferização de reprodução e correção de desvio de clock por software, com controles de volume e mute do host USB para o canal mestre e canais individuais.
- Captura sem processamento de volume de reprodução ou reamostragem por software.
- Comandos USB CDC encaminhados para a interface de controle I2C do reSpeaker XVF3800, com um utilitário de host em Python e diagnósticos de áudio/USB somente leitura.
- Um driver TinyUSB DWC2 local ao projeto e descritores USB que encaixam áudio duplex e CDC no orçamento de FIFO de hardware do ESP32-S3.
Modos de áudio
Defina BRIDGE_MODE em bridge_config.h e então reconstrua o sketch completo. Master e Slave nos nomes das macros descrevem o papel do reSpeaker XVF3800. O ESP32-S3 usa o papel oposto.
| Modo | Taxa de amostragem | Papel do reSpeaker | Papel do ESP32-S3 | Fonte de clock |
|---|---|---|---|---|
BRIDGE_I2S_MASTER_48K | 48 kHz | Master | Slave | reSpeaker |
BRIDGE_I2S_MASTER_16K | 16 kHz | Master | Slave | reSpeaker |
BRIDGE_I2S_SLAVE_16K | 16 kHz | Slave | Master | ESP32-S3 |
O reSpeaker XVF3800 deve executar um firmware configurado para a taxa de amostragem e o papel I2S correspondentes. A ponte não configura nem grava firmware no reSpeaker. A seleção de modo requer recompilação; não há troca de taxa em tempo de execução nem conversão entre 16/48 kHz.
Requisitos
- Uma placa ESP32-S3 com USB nativo; o perfil fornecido é direcionado ao Seeed Studio XIAO ESP32S3.
- Arduino IDE ou Arduino CLI com o pacote de placas Espressif disponível.
- Arduino-ESP32 3.3.11.
Nenhuma biblioteca USB de áudio separada é necessária. Use a versão fixada do core: a substituição local do driver USB e os descritores dependem da implementação TinyUSB dele.
Configurações de compilação (Arduino IDE)
Abra reSpeaker_ESP32S3_USB_BRIDGE.ino, instale/selecione Arduino-ESP32 3.3.11 e use estas configurações:
| Configuração | Valor |
|---|---|
| Board | Seeed Studio XIAO_ESP32S3 |
| USB Mode | USB-OTG (TinyUSB) |
| USB CDC On Boot | Disabled |
| Upload Mode | USB-OTG CDC (TinyUSB) |
| USB Firmware MSC On Boot | Disabled |
| USB DFU On Boot | Disabled |
| CPU Frequency | 240 MHz |
| PSRAM | Disabled |
Resumindo: USB Mode = USB-OTG (TinyUSB); CDC/MSC/DFU On Boot = Disabled; CPU = 240 MHz; PSRAM = Disabled.

O firmware cria sua própria interface CDC, portanto CDC On Boot deve permanecer desativado. No perfil CLI fixado, CDCOnBoot=cdc corresponde a Disabled. O sketch verifica essas três configurações USB em tempo de compilação. O Upload Mode é verificado por meio de ARDUINO_FQBN, porque o core não define uma macro separada para o modo de upload. O perfil CLI seleciona explicitamente UploadMode=cdc para solicitar o reset a 1200 baud e aguardar a porta de download.
Selecione Verify para compilar e depois Upload.
Download e instalação
- Baixe o firmware no GitHub: reSpeaker_ESP32S3_USB_BRIDGE.
- Copie todo o conteúdo do repositório baixado para uma nova pasta
Documents\Arduino\reSpeaker_ESP32S3_USB_BRIDGE. Inclua todos os arquivos: o.ino, headers, arquivos.cpp,sketch.yaml,host\,src\edocs. Copiar apenas o arquivo.inoé insuficiente. - Edite
bridge_config.hna nova pasta para selecionar o modo de 16 kHz, se você estiver usando:
// #define BRIDGE_MODE BRIDGE_I2S_MASTER_48K
#define BRIDGE_MODE BRIDGE_I2S_SLAVE_16K
- No Arduino IDE, abra File > Sketchbook > reSpeaker_ESP32S3_USB_BRIDGE (o nome da pasta agora corresponde ao do
.ino).
Verificar enumeração USB
Desconecte e reconecte o cabo USB. Você deverá ver:
- Uma porta serial CDC (por exemplo,
COM5no Windows) — esta é a porta de controle. - Um dispositivo de áudio chamado
BRIDGE I2S Slave 16k(estéreo, 32 bits, 16 kHz de entrada e saída).
Feche qualquer programa (como um monitor serial) que esteja mantendo a porta ocupada antes de continuar.

Verificar o lado de controle (ferramenta de host)
A partir do repositório, entre na pasta host e instale a dependência:
cd host
python -m venv .venv
.venv\Scripts\activate.bat
python -m pip install -r requirements.txt
python bridge_host.py --list-ports
python bridge_host.py --port COMx --ping
python bridge_host.py --port COMx VERSION
Substitua x em COMx pelo número real da sua porta COM. No Linux ou macOS, ative o ambiente virtual com source .venv/bin/activate e use um caminho como /dev/ttyACM0 ou /dev/cu.usbmodemXXXX em vez de COMx.
Resultados esperados



Testar áudio
- Reprodução: reproduza um arquivo WAV estéreo de 32 bits a 16 kHz na saída
BRIDGE I2S Slave 16k; o som deve sair do codec/alto-falante do reSpeaker. - Captura: grave áudio estéreo de 32 bits a 16 kHz a partir da entrada dele.
Snapshot de referência do Audacity

Recursos
- Firmware reSpeaker_ESP32S3_USB_BRIDGE (GitHub)
README.md— visão geral do firmware, modos de áudio e instruções de compilação.PLAYBACK.md— fiação de áudio, bufferização de reprodução, diagnósticos e status de áudio/USB.CONTROL.md— fiação I2C, utilitário de host em Python e protocolo serial CDC.
Suporte técnico e discussão sobre o produto
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes formas de suporte e garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.