Mico RP2040 è un dispositivo totalmente autocostruito ed espressamente concepito per il machine-learning. L’acquisizione audio per le applicazioni di machine learning, infatti, richiede un microfono che sia in grado di acquisire dati in maniera più possibile “clear”, ovvero con un ridotto rumore di fondo. Sebbene siano disponibili microfoni USB economici, un programmatore (Mahesh Venkitachalam – NDR) di sistemi embedded ha scoperto che quei microfoni erano caratterizzati da un eccessivo rumore del segnale a banda larga. Quindi, ha sfruttato una libreria software open source e ha costruito Mico, un microfono da PDM a USB alimentato dal microcontrollore Raspberry Pi RP2040.
Mico è leggermente più largo e lungo il doppio di un connettore USB-A. Il PCB è abbastanza grande da contenere l’RP2040 e i suoi componenti di supporto, insieme a un microfono PDM a montaggio superficiale. Mahesh Venkitachalam ha scelto un microfono STMicroelectronics MP23DB01HPTR Pulse Density Modulation (PDM).Si tratta di un microfono MEMS digitale ultracompatto, a bassa potenza, omnidirezionale, costruito con un elemento di rilevamento capacitivo e un’interfaccia IC con capacità di funzionamento stereo. L’elemento sensibile, in grado di rilevare le onde acustiche, è prodotto utilizzando un processo di microlavorazione specializzato in silicio dedicato alla produzione di sensori audio.
L’interfaccia IC è realizzata utilizzando un processo CMOS che consente di progettare un circuito dedicato in grado di fornire un segnale digitale all’esterno in formato PDM.
L’MP23DB01HP offre diverse modalità di prestazioni (spegnimento, basso consumo e modalità prestazioni) abilitate da diversi intervalli di frequenza di clock. Il dispositivo ha un AOP molto alto in modalità performance, range di sensibilità di ±1 dB e SNR elevato per tutte le modalità operative. L’MP23DB01HP è disponibile in un contenitore con porta inferiore, conforme alla tecnologia SMD, schermato EMI ed è garantito per funzionare in un intervallo di temperatura esteso da -40 °C a +85 °C. Questi tipi di microfono hanno sostituito i microfoni basati su I2S nei dispositivi mobili perché sono piccoli e richiedono solo pochi pin IO. Ad esempio, questo di ST ha bisogno solo di due pin per il funzionamento di base: il Clock e i dati PDM.
Guardando la scheda tecnica o la piedinatura dell’RP2040, possiamo notare che mancano i “pin PDM”. Scelta casuale? Assolutamente no! Venkitachalam ha scelto l’RP2040 per i suoi moduli I/O programmabili (PIO). Il PIO dell’RP2040 è una piccola macchina a stati che funziona indipendentemente dalle due CPU Arm Cortex-M0+. Ogni modulo PIO può avere fino a 32 istruzioni da una manciata di opcode di tipo assembly che gestiscono i pin IO. Il risultato è una struttura GPIO flessibile che può interfacciarsi con molti protocolli senza avere hardware dedicato.
Mico utilizza una libreria di microfoni Pi Pico (RP2040) open source per pilotare il modulo PIO. Si interfaccia con microfoni PDM. Poiché il PIO gestisce l’IO, il codice C in esecuzione sui core Arm può elaborare le informazioni audio. Una piccola modifica apportata da Venkitachalam a quel codice è stata l’aggiunta di un LED per l’attività. L’RP2040 appare all’host come un dispositivo audio USB. Questo design dovrebbe consentire a Mico di funzionare con qualsiasi applicazione in grado di accedere a dispositivi standard.
Volete anche voi creare un Mico? È semplicissimo! Date un’occhiata a questo repository GitHub. Potete trovare il codice, i file di progettazione KiCad e il firmware compilato. Sì, avete capito bene: Mico RP2040 non si acquista, si fa! Buon divertimento!