I2S Mikrophone

,

Da es mittlerweile diverse Boards mit ARM Cortex M0 gibt (Arduino MKR-Serie, diverse Adafruit Feather mit MO), die (nativ?) I2S unterstützen und auch auf Softwareebene mittlerweile eine offizielle I2S-Sound Bibliothek zur Frequenz- oder besser Spektrums-Analyse bereit steht, fehlt zur ersten (digitalen) Sound-Analyse nur noch ein Mikrofon.

Was mir bisher über den Weg gelaufen ist:

Der Vorteil zur analogen Variante via Elektret Mikro, z.B. SparkFun Electret Microphone Breakout - BOB-12758 - SparkFun Electronics, ist - wenn ich es richtig verstehe - dass wir keine Störeinflüsse auf der (wegfallenden) analogen Seite mehr haben, und keinen Verstärker brauchen. Weiter ist der form factor super kompakt und damit ideal, um das Micro auch zwischen Wabengassen platzieren zu können.

Noch zu klären wäre:

  • Reicht der Frequenzgang für uns aus? Elektret Mics beginnen bei 50 Hz, die digitalen I2S werden meist mit 100 Hz angegeben.
  • Die digitalen sind vermutlich für Sprache optimiert, fraglich ist für mich: Wird schon im Mikro etwas weggefiltert bzw. verstärkt, das für uns wichtig ist?
1 Like

Here a comparison of the form factor from both mentioned I2S mics:

On the left side the Adafruit breakout with the SPH0645LM4H, on the right side the much smaller Arduino breakout with the ICS43432. The microphone chip is on the opposite side of the PCB (see next picture). So the sound comes through a hole in the PCB from the bottom side. On the Adafruit breakout you can see this clearly, it is marked with “port” and an arrow.

I think you can not place this types of mics in the hive directly. Bees will agglutinate this sound ports with propolis quickly. So we will use hair roller to protect this parts.

The Arduino breakout fits nicely in a hair roller, The Adafruit breakout is a bit oversized but you can insert it by squeezing the hair roller:

In the picture I have the same position for the Adafruit board in the hair roller as for the Arduino breakout. So I hope I can compare both chips with the same position in the protection cage. In case this is not necessary for you you can solder angle pinheader on the Adafruit’s PCB and put it 45° rotated in the hair roller. But in this position the mic can “look” directly to a comb surface or between two combs depending on the rotation of the hair roller.

So I think it is more save to place the mic “looking” down to the hair roller. So it measures always “in between” two combs. But we have to test if this is necessary.

I have asked myself a time ago how to record and playback data / a file which is recorded with this mic as “raw” stream. I found an anwer at https://www.tindie.com/products/onehorse/ics43432-i2s-digital-microphone/

The ICS43432 has a successor, the ICS43434. A smaller form factor and lower power consumption but compatible in the electronic part and interface, datasheet https://www.invensense.com/wp-content/uploads/2016/02/DS-000069-ICS-43434-v1.2.pdf. You can buy breakouts on tindie:

And the PCB only is available here:

https://www.oshpark.com/shared_projects/GiObJBkm

[edit]

Different pin mappings on Pesky breakouts sold via tindie

Agrr, it costs me some time debugging, so be sure to have the right template and / or doublecheck the labling on the PCB, I have soldered the pins on the side you see on the pic below, so silkscreen was hidden partial:

1 Like

A post was split to a new topic: Audioverarbeitung mit Cortex-M4 DSP

Habe bei ESP32-I2S-SLM | Hackaday.io noch etwas gefunden zu den INMP441.

The microphone of choice for this project is TDK/InvenSense ICS-43434, or more specifically its breakout board available at Tindie. One good thing about this microphone is that its sensitivity is specified as +/-1dB. This means our measurement of 94dB, 1KHz pure sine wave tone, should be -26dBFS, +/-1dB , without any additional calibration. This is pretty good considering I do not have access to any calibration equipment. You can also use the older INMP441 mic, widely available as cheap breakout board on i.e. Aliexpress, but that one has sensitivity specified as +/-3dB.

[update 2022]

2022-02-13 01_43_37-INMP441 24-bit I2S Interface Omnidirectional Microphone Digital Sensor Module _

The INMP441 is discontinued, old and should not be used in new projects: https://youtu.be/VVGln_-XEgI?t=18

Mics are tricky so solder due to the hole / “port” that must be open while and after soldering. Some tips from Seeed How to solder MEMs microphones.

A short overview / summary about some I2S MEMS microphones already used or referenced within different contexts here.


  1. Used by @wjmb at Audio acquisition and analysis with ARM Cortex-M0 and I2S microphone. ↩︎

  2. Referenced at Raspberry Pi Audio Recording with a Digital I2S Microphone and Erschließung von I2S-Support und FFT für MicroPython auf Pycom/ESP32. ↩︎

  3. Used by @wjmb at Audio acquisition and analysis with ARM Cortex-M0 and I2S microphone. [5] ↩︎

  4. Referenced at Erschließung von I2S-Support und FFT für MicroPython auf Pycom/ESP32. ↩︎

  5. SiSonic™ Surface Mount MEMS Microphones ↩︎

There is a broad list of I2S mics, boards and corresponding wiring on:

https://tigoe.github.io/SoundExamples/i2s.html

And a quote about the code interoperability for different I2S mics:

There are a few different I2S microphones [down named INMP441, ICS43432/4, SPH0645] on the market and they all appear to have slightly different sensitivities, though they all operate with the same code.

An interesting observation about the incompatibility between the ESP32 and the SPH0645LM4H I2S mic used on the Adafruit I2S breakout

https://hackaday.io/project/162059-street-sense/log/160705-new-i2s-microphone

The INMP441 seems to work with an ESP:

the INMP441 device has I2S timing expected by the ESP32

In the comments section, there are some suggestions for workarounds getting the SPH0645LM4H working nevertheless.