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:
- die pins
G23
undGND
mit einem jumper wire verbinden, so wie hier:
- 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