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.
-
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.
| 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 |
| 4 | OLED RST |
| 5 | OLED CS |
| 18 | OLED SCK |
| 19 | OLED DC |
| 21 | PCM5102A DIN |
| 23 | OLED MOSI |
| 26 | I²S BCK condiviso (PCM5102A e PCM1808) |
| 27 | Comando relè (proposto) |
| 33 | I²S LRCK condiviso (PCM5102A e PCM1808) |
| 35 | PCM1808 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.
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.
Il codice è distribuito con licenza MIT;
documentazione, foto e schemi con licenza CC BY 4.0.