Cos'è WaveBox

WaveBox è un ricevitore audio Bluetooth basato su ESP32. Si collega allo smartphone, riproduce la musica su casse collegate al jack da 3,5 mm e mostra il segnale in tempo reale su un display OLED.

Il progetto è nato su una scheda ESP32-A1S Audio Kit con codec integrato ed è poi passato a una soluzione modulare, con ADC e DAC separati, per avere più controllo su ingresso e uscita.

Barre di un segnale audio

Cosa fa

  • Bluetooth → casse

    Lo smartphone si collega via Bluetooth (A2DP) e l'audio esce sul jack da 3,5 mm, verso casse amplificate o un ingresso AUX.

  • Ingresso AUX

    Una sorgente analogica (lettore, PC, strumento) entra dal jack TRRS nel convertitore PCM1808 e viene inoltrata all'uscita. Un relè sceglie se il jack di uscita riceve il DAC o il pass-through.

  • Segnale in tempo reale

    Il display OLED 256×64 mostra il segnale audio (VU meter, forma d'onda, spettro) e lo stato del dispositivo: connessione Bluetooth e sorgente attiva.

Hardware

Moduli separati e facili da trovare, collegati all'ESP32 tramite I²S e SPI.

Schema a blocchi: lo smartphone via Bluetooth e la sorgente AUX tramite jack TRRS e ADC PCM1808 entrano nell'ESP32, che pilota il DAC PCM5102A, il relè di selezione dell'uscita verso il jack e le casse, e il display OLED SSD1322
Componente Ruolo Interfaccia
ESP32-WROOM-32 Dev Board Microcontrollore, Bluetooth Classic A2DP —
PCM1808 ADC stereo 24 bit (ingresso AUX) I²S
PCM5102A (GY-PCM5102) DAC stereo 32 bit (uscita) I²S
Jack TRRS 3,5 mm Ingresso AUX verso il PCM1808 (MIC non collegato) analogica
Relè DPDT Sceglie cosa arriva al jack di uscita: DAC PCM5102A (a riposo) o pass-through GPIO
Jack 3,5 mm di uscita Connettore verso le casse analogica
OLED 3,12" 256×64 (SSD1322) Stato e visualizzazione del segnale SPI 4 fili

Collegamenti

PCM1808 e PCM5102A condividono i clock I²S (BCK e LRCK): l'ESP32 li genera e i due convertitori lavorano alla stessa frequenza di campionamento.

GPIO Funzione
4OLED RST
5OLED CS
18OLED SCK
19OLED DC
21PCM5102A DIN
23OLED MOSI
26I²S BCK condiviso (PCM5102A e PCM1808)
27Comando relè (proposto)
33I²S LRCK condiviso (PCM5102A e PCM1808)
35PCM1808 DOUT

Alimentazioni: PCM5102A, PCM1808 e relè a 5 V, display a 3,3 V. Lo schema completo, con le note e i punti ancora da chiarire, è nello schema elettrico; i collegamenti si possono esplorare anche nel modello 3D.

L'uscita del PCM5102A è di linea: servono casse amplificate. Per casse passive va aggiunto un amplificatore (per esempio PAM8403 o TPA3116).

Firmware

Scritto in C/C++ con il framework Arduino per ESP32 e compilato con PlatformIO. Usa le librerie ESP32-A2DP per il Bluetooth e U8g2 per il display.

Stato del progetto

La versione attuale funziona: i test hanno dato esiti positivi, ma c'è qualche miglioria da fare.

Nella versione attuale (branch main) il firmware è un passthrough: legge l'audio dall'ADC PCM1808 via I²S, lo inoltra al DAC PCM5102A con volume al 50% e mostra sulla seriale il livello di ogni canale in dBFS. Bluetooth e display non sono presenti in questa versione.

Il firmware deve ancora essere adattato allo schema elettrico: oggi il PCM1808 usa pin e clock I²S separati dal DAC, e relè e display non sono gestiti.

Il prossimo passo è applicare le migliorie e riportare Bluetooth A2DP e spettro su OLED. Dettagli del firmware attuale.

Open source e replicabile

Sorgenti e documentazione sono su GitHub,
con l'obiettivo di poter costruire una seconda copia identica del dispositivo.

Il codice è distribuito con licenza MIT; documentazione, foto e schemi con licenza CC BY 4.0.