For voice commands in our home automation system I'd like to have a couple microphones around the house, with a hard requirement for them to be wired.
A cheap and easy solution I came up with is using a INMP441 MEMS microphone, RP2040-zero and a PoE adapter, all together costing now around 9 €/£/$ per complete microphone.
Passive PoE will be quite a bit cheaper, since the €4 POE adapter is not necessary and the switch will be cheaper, but the latter will need to be modified to provide 5V over the unused twisted pairs.
The RPi Pico is chosen since it can do 10BASE-T without any more components but three resistors, and the RP2040-Zero is chosen for its small size. It should be able to fit in the PoE adapter housing together with the INMP441 to make a nice tight build.
So I have chosen the arduino-pico environment for this project. SPI is quite straightforward to work with, but keep in mind that the LRCLK (=WS) has to go on pin BCLK +1 due to limitations on the PIO in arduino-pico.
There are no less then three very well supported ways to program a Raspberry Pi Pico, all with a great and active community:
The official bare C-SDK
arduino-pico, based on the C-SDK, but using the familiar .ino sketches.
MicroPython / CircuitPython
So first thing is to decide which one to use in this project. The two main requirements are SPI input for the INMP441, and the ability to use https://github.com/kingyoPiyo/Pico-10BASE-T for sending the audio frames over Ethernet.
Funny thing is, the 10BASE-T code by kingyoPiyo is written for the C-SDK, and only arduino-pico and MicroPython have SPI input! (the SPI code in the C-SDK is output only as of yet)
So for now I have chosen to go with arduino-pico, since it should be relatively straightforward to use the 10BASE-T code as a library in Arduino. I've never done this before, so keep your fingers crossed.