Eliminare il QRM senza pietà: DSP audio in tempo reale con ESP32

Eliminare il QRM senza pietà: DSP audio in tempo reale con ESP32

Ottobre 29, 2026 0 Di Aniello Di Nardo
Livello di difficoltà    

Quante volte ti sei seduto alla radio la sera, desideroso di fare due chiacchiere in 40 metri o di inseguire quel segnale DX ai confini del mondo, per poi essere accolto da un muro di QRN e QRM cittadino? Abitando in un contesto urbano, conosco bene quel senso di frustrazione: il rumore di fondo costante non solo rende faticoso l’ascolto, ma divora letteralmente i segnali più deboli, trasformando un passatempo rilassante in un esercizio di pura concentrazione forzata.

I sistemi di riduzione del rumore analogici aiutano fino a un certo punto, spesso introducendo artefatti o “mangiandosi” la modulazione. Da qui nasce l’idea dell’IU8NQI Noise Remover: un progetto nato in laboratorio per sfruttare la potenza di calcolo di un ESP32 e il filtraggio spettrale nel dominio della frequenza, con l’obiettivo di ripulire l’audio del ricevitore in tempo reale e ridare il piacere dell’ascolto.

Guarda il video del filtro all’opera su YouTube

La demo “on air” del dispositivo su YouTube

Cosa occorre

Per realizzare il riduttore di rumore ci servono pochi componenti principali, facilmente reperibili, uniti a un pizzico di passione per la saldatura e la programmazione:

  • Unità di elaborazione: Modulo ESP32-WROOM-32E (scheda Freenove, vedi immagine sotto, già adatta al PCB consigliato in questo articolo).
  • Sezione Audio (I2S): Convertitore Analogico-Digitale (ADC) PCM1808 e Convertitore Digitale-Analogico (DAC) PCM5102 a 24 bit.
  • Pannello di controllo: Potenziometri per IN (volume d’ingresso), TRSHLD (soglia), FLOOR (attenuazione massima) e BAND (banda); pulsanti per LEARN e THRU; due LED di stato e indicazione WiFi.
  • Contenitore e alimentazione: Box dedicato con mascherina incisa al laser e alimentazione a 5V.
Vista frontale del dispositivo: comandi essenziali a portata di mano e LED di stato.

Come funziona il filtro

Il cuore del sistema cattura l’audio analogico in arrivo dalla radio, lo converte in digitale a 24 kHz tramite l’ADC PCM1808 e lo elabora mediante una STFT (Short-Time Fourier Transform) a 512 punti con finestra sqrt-Hann e sovrapposizione del 50%. Questo significa che ogni 10,7 millisecondi abbiamo una fotografia spettrale dell’audio con una risoluzione di circa 46,8 Hz per riga, generando un ritardo complessivo di appena 21 ms, del tutto impercettibile all’ascolto.

La magia avviene premendo il pulsante LEARN: il dispositivo campiona circa 1,3 secondi di solo rumore (scartando i primi istanti e rifiutando l’apprendimento se il livello è troppo basso o se è presente un segnale modulato con variazione oltre i 4 dB) e memorizza il profilo spettrale in flash.

NOTA: Per ottenere un risultato ottimale, la fase di Learn va eseguita sintonizzandosi su una frequenza libera adiacente o durante una pausa della trasmissione, mantenendo il volume d’ascolto della radio stabile.

Durante il normale ascolto, un filtro di Wiener “decision-directed” confronta la potenza istantanea con il rumore appreso, calcolando un guadagno dinamico per ciascuna riga spettrale. Per evitare il fastidioso effetto “metallico” sulla voce, il guadagno viene opportunamente ammorbidito tra righe vicine grazie al parametro di risonanza (RESO).

Inoltre, per preservare la naturalezza e la comprensibilità delle consonanti, sopra 1,5 kHz la soglia si abbassa leggermente aggiungendo un tocco di presenza. Il filtro passa-banda, azionato dal potenziometro BAND, agisce a valle del filtraggio (permettendo di stringere la banda dai 150–3200 Hz della SSB fino a un profilo più ristretto centrato sugli 800 Hz per il CW) senza la necessità di ripetere il Learn.

Lo schema elettrico e i collegamenti

Il circuito si sviluppa attorno all’ESP32 (in questo articolo suggerisco di utilizzare il modello della Freenove WROOM32E che è adatta al montaggio sul PCB consigliato) gestendo i flussi I2S con precisione. Di seguito trovi i collegamenti principali tra il microcontrollore e i convertitori audio:

  • MCLK: GPIO 0
  • BCK: GPIO 26
  • WS: GPIO 25
  • DOUT (verso DIN del DAC): GPIO 22
  • DIN (da OUT dell’ADC): GPIO 33
  • Pulsanti e LED: Learn su GPIO 27 (LED su 13), Modo su GPIO 14 (LED Passthrough su 18)
  • Potenziometri (ADC1): Soglia su GPIO 34, Fondo su GPIO 35, Banda su GPIO 32
L’interno del prototipo: la cura del cablaggio è fondamentale per evitare ronzii e interferenze

Caricamento del firmware via riga di comando

Una volta scaricato il pacchetto e estratto i 3 file binari iu8nqi_noise_remover_v7e.0.bin, partition.bin e bootloader.bin (troverai in link per scaricare il pacchetto completo in formato zip in basso, a fine articolo), puoi procedere al flashing diretto sulla tua scheda ESP32 utilizzando lo strumento a riga di comando esptool.py (incluso nell’ambiente di sviluppo ESP-IDF).

Collega l’ESP32 al computer tramite la porta USB e individua la porta seriale assegnata (nel nostro esempio utilizzeremo COM3). Apri il terminale e digita il comando completo per la scrittura in flash:

esptool.py --chip esp32 --port COM3 --baud 460800 write_flash -z 0x1000 bootloader.bin 0x8000 partitions.bin 0x10000 iu8nqi_noise_remover_v7e.0.bin


NOTA: Assicurati di tenere premuto il pulsante BOOT sulla scheda ESP32 (se necessario) nel momento esatto in cui parte la connessione col terminale, rilasciandolo non appena il tool avvia il processo di trasferimento dei dati. Al termine della scrittura, la scheda si riavvierà automaticamente eseguendo il nuovo software.

Gestione e App di controllo Wi-Fi

Il dispositivo nasce per funzionare in modalità standalone tramite i potenziometri e i pulsanti fisici, ma offre una marcia in più grazie al modulo WiFi integrato. Collegandoti all’indirizzo [http://noiseremover.local](http://noiseremover.local) (o 192.168.4.1 sulla rete generata dal dispositivo), potrai accedere a un’interfaccia web o all’app desktop dedicata (compatibile con Windows, macOS e Linux).

NOTA: per attivare/disattivare il WiFi integrato del dispositivo, tieni premuto a lungo il pulsante THRU, il led rosso farà un breve lampeggio, rilascia il pulsante e osserva il led rosso: 2 lampeggi brevi indica Wi-Fi attivo, 1 lampeggio lungo indica Wi-Fi disattivato. L’impostazione verrà salvata nel dispositivo.

L’applicazione mostra in tempo reale lo spettro audio in ingresso e in uscita, permette di regolare le manopole virtuali e offre la visualizzazione dei modi operativi:

  1. Filtro: Il funzionamento standard di riduzione del rumore.
  2. Passthrough: Utile per un confronto A/B immediato con lo stesso ritardo di elaborazione.
  3. Solo rumore: Permette di ascoltare esattamente ciò che il filtro sta eliminando (se riesci a distinguere chiaramente la voce in questo modo, significa che il filtro sta intaccando anche il segnale utile!).

Il software dispone di un pannello di accesso e configurazione WiFi (oppure USB installando il software disponibile nel pacchetto scaricabile in basso, a fine articolo) ed è disponibile in: Italiano, Inglese, Spagnolo, Francese, Tedesco e Portoghese.

Realizzazione e disponibilità dei prototipi

Se desideri cimentarti nella costruzione di questo progetto, ho reso disponibili tutti i file necessari per la riproduzione hobbistica. Puoi scaricare il pacchetto compresso contenente il firmware binario, i file Gerber per la stampa del circuito stampato e la documentazione di supporto direttamente dal link in fondo all’articolo.

Il circuito stampato realizzato con un router CNC DIY

NOTA: I valori dei potenziometri analogici gestiti dall’ADC interno dell’ESP32 possono presentare una leggera oscillazione naturale (attenuata via software e tramite condensatori da 100 nF); si tratta di un comportamento fisico noto e del tutto ininfluente sulle prestazioni audio.

Vuoi il dispositivo pronto all’uso?

Sebbene la soddisfazione di autocostruire i propri apparati faccia parte dello spirito radiantistico, so bene che non tutti hanno a disposizione il tempo o l’attrezzatura adatta per la realizzazione di PCB e montaggio dei componenti. Se preferisci avere tra le mani un esemplare già pronto, collaudato e inserito nel suo contenitore, puoi contattarmi direttamente via email: aniello.dinardo@gmail.com o tramite i riferimenti del sito per accordarti sulla realizzazione e spedizione di un prototipo funzionante.

IU8NQI Noise Remover si abbina perfettamente con radio vintage

Conclusioni

L’IU8NQI Noise Remover rappresenta un banco di prova stimolante che unisce la programmazione a basso livello, l’elaborazione dei segnali digitali (DSP) e la passione per l’ham radio. Nelle prove sul campo in ambiente cittadino, l’apparato ha dimostrato di abbattere in modo sensibile il rumore di fondo, restituendo intelligibilità ai QSO più difficili senza introdurre disturbi spuri nemmeno con il modulo WiFi attivo.

Non mi resta che augurarti buon divertimento con la costruzione e… 73 da IU8NQI!

  • Scarica il pacchetto con il firmware .bin, i file Gerber e la documentazione (ZIP)