I2S-Mikrophon mit FiPy und Arduino-IDE zum Laufen bringen

Versuche gerade diese Beispiel

Mit einem einem FiPY und einem INMP441 I2S-Mikrofon zum Laufen zu bringen. Das Mikro habe ich vorher mit einem Arduino Nano 33 IoT getestet, was funktionierte, der code oben läuft leider nicht.

Programmierung

Der FiPy ist am expansion board angeschlossen, das per USB-Kabel am Rechner hängt. Vor dem Aufspielen der Arduino-Software müssen wir das board in den bootloader mode bekommen, das geht so:

  1. die pins G23 und GND mit einem jumper wire verbinden, so wie hier:
  2. dann reset am FiPy drücken

(Siehe dazu auch Program your LoPy from the Arduino IDE, using LMIC - Stories - Labs > Program the LoPy)

Pin-Nummerierung bei Verwendung der Arduino-IDE

Bei Verwendung der Arduino-IDE dürfen wir nicht die Pin-Nummern P1, P2, usw. im pinout diagram verwenden, sondern die Nummerierung bei GPIO

(Siehe auch Using PyCom boards with Arduino IDE | Pycom user forum )

Code-Änderungen

Mit diesen Anpassungen …

  // The pin config as per the setup
  const i2s_pin_config_t pin_config = {
      .bck_io_num = 22,   // BCKL
      .ws_io_num = 25,    // LRCL
      .data_out_num = -1, // not used (only for speakers)
      .data_in_num = 26   // DOUT
  };

… sollte das wiring wie hier passen:

[edit] In einer älteren Version des Postings waren andere pins angegeben, die zu Konflikten mit der SD-Karte geführt haben. Nun geht es mit der Pinbelegung oben! Yeah!

Problem

Nun wird immer 0 über den seriellen Monitor ausgegeben egal wie tief / laut / leise das Geräusch am Mikrofon ist. Was geholfen hat ist den rechten channel auf den linken umzuschalten, statt:

  .channel_format = I2S_CHANNEL_FMT_ONLY_RIGHT, // although the SEL config should be left, it seems to transmit on right

… das hier:

  .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, // although the SEL config should be left, it seems to transmit on right

Output

Gerade getestet! Das funktioniert auch auf dem FiPy mit Arduion-IDE. Für die eigentliche FFT wird die Arduino-Bibliothek arduinoFFT von Enrique Condes / kosme verwendet, die über den Arduino-Bibliotheksmanager zugänglich ist.

1 Like

Hier noch etwas interessantes gefunden: https://forum.arduino.cc/index.php?topic=637667.0 Da hat jemand versucht I2S-Daten mit #include <arduinoFFT.h> zu bearbeiten.