Id like to connect a microphone, a speaker and a usb memory stick to the Pico. But as I understand both analog mic(https://www.adafruit.com/product/1713) and audio shield(https://thepihut.com/products/pico-audio-audio-module-for-raspberry-pi-pico-inc-speakers) want to use the same GPIO 26 pin since it has adc. What is the solution for that? How to connect a usb port to the Pico and then use it as file storage?
1 Answer
With regards to the audio part of your question. Indeed, audio shield uses GP26,27,28 that seem to be all ADC capable pins of Pico. So I don't see a way you can easily get both devices you referenced without additional hardware or without modifying existing one. So solutions can be as follows:
- Use digital microphone (e.g. this one) connected to other (3 GPIO) pins via I2S. This is actually a good option as working with built-in ADC at high sampling rate might be tricky.
- Use external ADC for microphone communicating over I2S on other GPIO pins. The solution above should be easier and compacter though.
- Use different audio output board (e.g. this mono board) is another good option. In this case you can flexibly assign different GPIO pins for I2S communication. If you need stereo output, it is possible to get it with two mono boards, but would require more efforts, perhaps it is better to search for a different stereo board instead.
- Rewire the audio shield. If you go with this solution, make sure that the dedicated python library is flexible enough to use different GPIO pins before you take a solder iron. (Here I assumed you are up to using python.)
As for connecting a USB stick, you would need for that to run Pico as a USB host with Mass Storage support. There is C implementation of it (using RPi Pico SDK). Getting SD card instead should be way easier. Quick search gives detailed instructions, but there are more out there.
-
Is it not possible to take the MEMS digital output from the mic break out and process within micropython ?– VassCommented Dec 30, 2022 at 21:45
-
1If you are referring to the analog mic referenced in the question - no, it is analog so one needs and ADC to get the signal into Pi. Otherwise, if you refer to some digital mic - short answer is yes, one should be able to get the signal with micropython. May though require some effort, depending on libraries available.– VadimCommented Jan 11, 2023 at 12:34