Main Content

Mico is an Open Source PDM to USB microphone based on the Raspberry PI RP2040.

Earlier this year, I was doing audio experiments with Machine Learning (ML) on the Raspberry Pi, and was looking for a compact USB microphone. The one which is commonly available is shown below.

While it was convenient to plug this in and access it from Python using pyaudio, the sound quality from this mic was terrible. Extremely noisy with poor (distance) sensitivity.

Ultimately I completed my audio recognition project using an I2S microphone which had a much better audio quality.

But I kept thinking about this problem, and did some research on I2S to USB bridge ICs. I found a couple of ICs like the Si Labs CP2615, but they looked obsolete. I also looked at the Cypress FX2 series with I2S support, and that seemed like a possible option, provided I was willing to put in a fair amount of work.

Recently, I’ve been working with the Raspberry Pi Pico. I’ve been dazzled with the RP2040 - especially with the PIO and the documentation and software support provided by the company. The Pico uses TinyUSB which has audio support, which got me thinking - surely someone must have thought of making a USB mic with this? And sure enough, Sandeep Mistry has done just that, with his Microphone Library for Pico open source project. So I already had firmware for my project. Now I just needed to make the hardware. Thus the idea of Mico was born.

Design
I wanted a compact design for the mic, but I knew it was difficult to make it as small as the noisy mic shown above, due to the size of the RP2040 chip and mechanical design considerations. So I opted for a simple design with a reliable USB Type-A plug. I initially toyed with the idea of making the USB connector as part of the PCB, but that meant a thicker PCB and higher costs, so I dropped the idea. I also added an LED to the board for ease of testing.

The RP2040 needs very few extra components to get going, so Mico has a simple schematic.”

Link to article