INMP441は、ADMP441と互換性があるようで、ADMP441を参考にしました。pythonが仮想環境を使うように変更されていたもので、最初はpythonでチャレンジしてたのですが、できなくて、こちらに変更してみたら、簡単にできました。
Raspberry pi 4B の設定
- 「Raspberry pi Imager」を使って、SDカードに「Raspberry pi OS(32-bit)」を書き込む。admp441-rpi を使う場合、64-bit では、コンパイルできても「arecord -l」でドライバが認識しなかったため、32-bit を使います。
- ADMP441ドライバーを取得して、ファイル修正。
git clone https://github.com/gtalusan/admp441-rpi.git cd admp441-rpi/kernel nano admp441.c
- admp441-rpi/kernel/admp441.cファイルを、以下のように修正して保存。
39: static int admp441_remove(struct platform_device *pdev) 40: { 41: snd_soc_unregister_component(&pdev->dev); 42: //TODO(thatsdone): To check DMA destory required? 43: return 0; 44: } 45: 46: #ifdef CONFIG_OF 47: static const struct of_device_id admp441_ids[] = { 48: { .compatible = "adi,admp441", }, 49: { } 50: };
static void admp441_remove(struct platform_device *pdev) { snd_soc_unregister_component(&pdev->dev); //TODO(thatsdone): To check DMA destory required? //return 0; 削除 } #ifdef CONFIG_OF static const struct of_device_id admp441_ids[] = { { .compatible = "invensense,admp441", }, { } };
- 次のコマンドを実行し、カーネルドライバーを作成&インストール。
make make install
- 以下のコマンドを実行して、Device-Treeに登録。
cd ../dts dtc -@ -I dts -O dtb -o i2s-soundcard.dtbo i2s-soundcard-overlay.dts sudo cp i2s-soundcard.dtbo /boot/overlays
- 「/etc/modules」を開く。
sudo nano /etc/modules
- ファイルの一番最後に、「admp441」を追加して保存。
admp441
- 「/boot/firmware/config.txt」を開く。
sudo nano /boot/firmware/config.txt
- ファイルの一番最後の[ALL]の次に、以下を追加して保存。
[ALL] arm_64bit=0 dtparam=i2s=on dtoverlay=i2s-mmap dtoverlay=i2s-soundcard,alsaname=mems-mic
- 再起動させる。
Raspberry pi と、INMP441 を繋げて、試してみる。

Raspberry pi と、INMP441を上手く繋げると、「arecord -l」コマンドを実行した時、以下のように「**** List of CAPTURE Hardware Devices ****」の下に文字が表示される。
arecord -l
**** List of CAPTURE Hardware Devices ****
card 3: memsmic [mems-mic], device 0: bcm2835-i2s-admp441-hifi admp441-hifi-0 [bcm2835-i2s-admp441-hifi admp441-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
「card」のところの数字を「plughw:」に記入して、録音開始する。
arecord -D plughw:3 -c1 -r 48000 -f S32_LE -t wav -V mono voice.wav
録音を止めるには、「Ctrl+C」を押す。
注意点:ノイズが入りやすい
今回、ブレッドボードを使ってみたのですが、最初はノイズが入りました。特にGND、VDDとL/Rのジャンパワイヤの接触不良によって、音を発生していない時にノイズ音が入るらしいです。
後、金色の縁取り部分にハンダを付けていても、ノイズが入るらしいです。

注意点:3.3Vは使用しない方が良い?
「How to Use INMP441 FRONT MIC: Examples, Pinouts, and Specs」こちらのサイトで、最後の「FAQs」を日本語翻訳すると、「Q: INMP441は3.3V電源で使用できますか? A: いいえ、INMP441は1.8Vで動作するように設計されています。それより高い電圧を使用すると、コンポーネントが損傷する可能性があります。」と書かれているようでしてー
VDDをRaspberry pi の3.3Vに繋ぐのは、よくないようです。1.8Vにする必要がありそうです。
コメント