Mico – A USB microphone based on Raspberry Pi RP2040 MCU

Raspberry Pi RP2040 dual-core Cortex-M0+ microcontroller has found its way into Mico, a compact USB microphone with a PDM microphone providing better quality than cheap USB microphones going for one or two dollars or even 5 cents shipped for new Aliexpress users.

The project started when Mahesh Venkitachalam (Elecronut Labs) was doing audio experiments with Machine Learning on the Raspberry Pi, and found out USB microphone dongles were extremely noisy with poor (distance) sensitivity, so he completed the project with a high-quality I2S microphone instead. He then had the idea of making his own USB microphone and found out Sandeep Mistry had already developed a Microphone Library for Pico, so he mostly had to work on the hardware that’s how Mico Raspberry Pi RP2040 USB microphone came to be.

Mico Raspberry Pi RP2040 USB Microphone

Mico specifications:

  • MCU – Raspberry Pi RP2040 dual-core Cortex-M0+ microcontroller @ up to 133 MHz with 264KB SRAM
  • Storage – 128Mbit SPI flash (W25Q128JV)
  • Microphone – STMicro MP23DB01HPTR PDM microphone
  • USB – 1x USB Type-A male port
  • Misc – User LED
  • Power Supply – 5V via USB; 3.3V LDO

Mahesh explains the RP2040 MCU requires only a limited amount of components, and as a result, the Mico schematic is pretty simple.

Raspberry Pi RP2040 USB Microphone schematic

You’ll find KiCad schematic and PCB layout, C samples based on Raspberry Pi Pico C/C++ SDK, and the UF2 firmware on Github. As noted above the firmware relies on the Microphone library for Pico, plus a PIO-based blinky program and changes to some description strings. If you’re interested in Raspberry Pi Pico/RP2040, you may want to have a look at Sandeep Mistry’s Github account named ArmDeveloperEcosystem since it has several other libraries. At first it even looks like an official Arm repo, but Sanpeed is indeed working for Arm, but he is the only maintainer so I’m not sure.

The video above is a quick demo using Mico with Audacity software. Read Mahesh’s write-up to learn more about the project, and the difference he found between Micro and cheap USB microphone dongles.

Via Hackster.io

Share this:

Support CNX Software! Donate via PayPal or cryptocurrencies, become a Patron on Patreon, or buy review samples

ROCK Pi 4C Plus
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
4 Comments
oldest
newest
Willy
6 months ago

That’s interesting, and a good example of how opensource helps innovation. Electret microphones are indeed very noisy by nature and their noise being essentially thermal noise in the amplifying FET, it tends to increase with temperature. For voice-activated devices this project could be a nice alternative. There’s an important aspect which is not mentioned, it’s latency. Let’s hope it’s OK. Also I don’t understand why there’s a 16MB NOR flash. Such devices are quite expensive and seem overkill for such a product.

kadamski
kadamski
6 months ago

By expensive you mean something like 1.2-1.5 USD in single quantities, right? We are talking about a development board, not a final product, so it makes a lot of sense to not limit yourself to small storage when developing software. In addition to that, this particular device (W25Q128JV) is suggested by the hardware-design-with-rp2040.pdf document so it is just known to work without problems. So – adding few cents to save you headaches when your RP2040 does not start makes sense to me. The part can be swapped very easily at any point, without any PCB modifications if anyone wishes to… Read more »

willy
willy
6 months ago

Yes, that’s exactly what I meant. Of course for a dev board 16MB flash is cheap, but when you need to turn that into a final product you definitely won’t want to inflate the total BOM by this much for something of which less than 1% will ever be used! I’m personally using such devices to store a full-blown glibc-based distro + its kernel, and given how large it is I never made the effort to switch to musl to save bits; that’s why I find it a bit “rich” for a device used as an MCU 🙂 I noticed… Read more »

Brian
Brian
6 months ago

Um, isn’ this almost identical to the official ‘Arduino Nano Pi Connect’ board, right down to the digital I2C microphone?

https://docs.arduino.cc/hardware/nano-rp2040-connect

Advertisement