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.

YouTube video player

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:
FacebookTwitterHacker NewsSlashdotRedditLinkedInPinterestFlipboardMeWeLineEmailShare

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK 5 ITX RK3588 mini-ITX motherboard

4 Replies to “Mico – A USB microphone based on Raspberry Pi RP2040 MCU”

  1. 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.

    1. 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 reduce the BOM cost. So really, starting from small storage seems more like a premature optimization than a good idea in case of such boards (which are not the mass production products).

      Also, nowadays, you use whatever part you can get your hands on – not necessarily the most effective ones 🙂

      1. 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 a year ago or two that the 8MB SPI NORs were extremely cheap. When I was trying to upgrade some devices from 8 to 16MB I would find them everywhere at ridiculously low prices. And as you say it’s trivial to switch to another model later.

Leave a Reply

Your email address will not be published. Required fields are marked *

Khadas VIM4 SBC
Khadas VIM4 SBC