Riprodurre file audio su un Raspberry Pi Pico senza utilizzo di DAC

Raspberry Pi Pico

Il programmatore Salvatore Sanfilippo ha escogitato un modo per riprodurre audio riconoscibile da un Raspberry Pi Pico, senza la necessità di un convertitore digitale-analogico (DAC) esterno, utilizzando un solo pin e le capacità di modulazione della larghezza di impulso (PWM) dell'RP2040.

Sin dal suo rilascio nel 2021, Raspberry Pi Pico è rapidamente diventato il chip preferito da molti per lo sviluppo embedded. Grazie alle sue caratteristiche di robustezza e durata, oltre alle molteplici funzionalità e ad una documentazione tecnica chiara e completa resa disponibile agli utenti, ha facilmente trovato la sua collocazione nell'ecosistema embedded. Raspberry Pi Pico è ben supportato da MicroPython e l'ambiente C SDK è piuttosto soddisfacente, anche se non mancano inutili complessità, la cui presenza risulta a dir poco "fastidiosa" soprattutto quando si devono compilare piccoli programmi per piccoli dispositivi.

Durante la sua sperimentazione da programmatore, Salvatore Sanfilippo ha avuto l'idea brillante di recuperare l'hardware Raspberry Pi Pico che riproduce l'audio, senza bisogno dell'utilizzo di un DAC esterno. Infatti, una delle cose interessanti che si possono fare con un MCU (MiCrocontroller Unit) come l'RP2040 è generare un pò di suono. Il modo più naturale per farlo è utilizzare la funzione PWM integrata nel chip. I GPIO, ovvero i pin di ingresso/uscita per uso generico, possono essere configurati per alternare tra zero e uno alla frequenza desiderata, ma ci sono piccoli suoni fastidiosi da ascoltare come le onde quadre. Per trasformare un semplice segnale on-and-off in qualcosa che si può non solo tollerare ma anche riconoscere, Sanfilippo ha scritto un programma MicroPython che prende come input una registrazione audio PCM grezza a otto bit convertita da un file WAV usando ffmpeg, la mappa a 16 bit, e la utilizza per impostare il ciclo di lavoro su un segnale modulato in larghezza di impulso proveniente da uno dei pin GPIO del Raspberry Pi. A costo di vincolare uno dei due core Arm Cortex-M0+ dell'RP2040, anche voi potete ottenere la riproduzione audio PCM senza hardware aggiuntivo.

Raspberry Pi Pico

Figura 1: Questo semplice programma MicroPython è in grado di riprodurre l'audio PCM grezzo su un Raspberry Pi Pico, senza bisogno di un DAC esterno

Il rovescio della medaglia di tutto questo è che il programma sarà occupato durante la riproduzione. Anche se il programmatore ha dichiarato di non aver ancora testato il progetto, MicroPython supporta il threading, quindi avere un thread che riproduce l'audio potrebbe essere la strada da percorrere. Con il Raspberry Pi RP2040 che ha due core Arm Cortex-M0+, dovrebbe essere possibile avere un core dedicato alla riproduzione audio e continuare a utilizzare l'altro core per il resto del programma.

L'articolo di Salvatore Sanfilippo è disponibile, completo di codice di esempio, sul suo sito web Playing audio files in a Pi Pico without a DAC - <antirez>

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend