Un ESP32 trasforma un segnale audio in ingresso in barre colorate su un display CrowPanel 3.5-HMI. È l’analizzatore di spettro audio stereo di Mirko “mircemk” Pavleski: il contenuto in frequenza del suono appare in tempo reale, senza strumentazione dedicata. Bastano due resistenze da 100K, una da 1K e un condensatore per collegare la sorgente al microcontrollore. Il resto lo fa il firmware con la FFT.
Il display del CrowPanel 3.5 è un LCD touch da 480×320. Le barre mostrano quanto sono intense le diverse frequenze del segnale audio in ingresso. Il progetto vive su una pagina raccontata da chi l’ha costruito, e chi vuole rifarlo trova lì il punto di partenza: la pagina del progetto su Hackaday.io di Mirko Pavleski.
Il circuito sul pin GPIO35 e la tensione di riferimento da 1,6V
Il segnale audio AC in ingresso arriva direttamente al pin GPIO35 dell’ESP32. Qui serve una tensione di riferimento di 1,6V, applicata tramite due resistenze da 100K. I valori positivi e negativi del segnale audio oscillano attorno a questa tensione, quindi l’ingresso resta sempre nella finestra corretta per il convertitore.
Il condensatore blocca l’eventuale componente continua e la resistenza da 1K protegge l’ingresso da segnali inappropriati. Perciò il circuito di ingresso si riduce a quattro componenti passivi. Non serve nessun amplificatore operazionale, nessun codec esterno, nessun filtro attivo.
- Display CrowPanel 3.5-HMI basato su ESP32
- Due resistenze da 100K per la tensione di riferimento
- Una resistenza da 1K a protezione dell’ingresso
- Un condensatore per bloccare la componente continua
La FFT nel firmware e le 24 o 32 barre
Il codice elabora le frequenze tramite FFT. La banda da 20Hz a 20kHz viene divisa in due parti, processate separatamente. Così il firmware gestisce meglio una gamma molto larga senza perdere risoluzione. Il codice standard prevede 24 barre, mentre la versione con 32 barre divide la stessa banda da 20Hz a 20kHz in due parti processate separatamente.
I due file si chiamano Code 24 Final.txt e Code 32 Final.txt. Il primo pesa 18,39 kB, il secondo 21,50 kB. Inoltre i toni molto bassi e molto alti vengono amplificati a scapito della banda media, per un migliore effetto visivo. Le barre sono renderizzate in 3D e appaiono come sottili tubi.
All’avvio del dispositivo il segnale in ingresso deve essere a zero. Nei primi secondi, infatti, il firmware esegue una calibrazione del rumore di fondo. Se arriva già un segnale, la calibrazione parte da un riferimento sbagliato e le barre risultano falsate.
Per compilare serve la libreria TFT_eSPI nella versione specifica per questo progetto e la selezione ESP32 DEV Module nel Board Manager.
Dalla calibrazione del rumore di fondo alle barre 3D
La sequenza di avvio è semplice ma va rispettata. Prima si alimenta il dispositivo, poi si aspetta che la calibrazione finisca, infine si collega la sorgente audio. Solo a quel punto le barre 3D rispondono correttamente al segnale.
Il risultato è un analizzatore di spettro audio stereo che gira su un microcontrollore e pochi componenti passivi. La banda coperta va da 20Hz a 20kHz, la stessa che serve per un ascolto musicale completo. Quindi non è uno strumento di misura da banco, ma un visualizzatore efficace per chi vuole vedere quello che sente.
Fonte: https://hackaday.io/project/206692-diy-esp32-audio-spectrum-analyzer
