Knowles の PDM(Pulse-Density Modulation)インタフェースの超音波帯までセンシング可能なMEMSマイク SPH0641LU4H-1からESP32 への入力をESP-IDFフレームワークのプログラムで試した。
「PDMインタフェース MEMS マイク SPM0405HD4H を ESP32のESP-IDF で試す」で示したサンプルプログラムespidf_pdm_mic_outを基に、espidf_pdm_sph0641_mic_out を作成し、試した。
目次
ハードウェア
- Espressif ESP32 開発ボード
- WeMos Lolin D32
- デジタル出力MEMSマイク変換基板
- CRESCENT-006
- Knowles の MEMS (Micro Electro Mechanical Systems) マイク SPH0641LU4H-1を使用
- https://www.switch-science.com/catalog/3379/
- CRESCENT-006
- スピーカ
- 基板取付用小型ダイナミックスピーカ UGCM0603APE
- コンデンサー
- PDMで直接出力する場合にローパスフィルターの一部として使う(PDMでコンデンサを外しても音は聞こえる)。
- DACで変換して出力する場合には、なくて良いはず。
- 0.1μF コンデンサ
- DFRobot ECell の 100nF のコンデンサ
- DFRobot ECell はブレッドボード用端子が付いたものだが、普通のコンデンサがあればそれでよい。
- ブレッドボードと配線材
ブレッドボード図
PDMで直接出力する場合を示す。
Low Pass Filterの一部としてコンデンサを入れているので Digital Analog Converter (DAC)を利用する場合には、コンデンサを省略して良い。
実際の配線例
回路図
PDMで直接出力する場合を示す。
Fritzingファイル
espidf-pdm-SPH0641-mic-out-1.fzz
パーツCRESCENT-006のFritzingデータ
デジタル出力MEMSマイク変換基板 CRESCENT-006
ソフトウェア
「PDMインタフェース MEMS マイク SPM0405HD4H を ESP32のESP-IDF で試す」で示したサンプルプログラムespidf_pdm_mic_outを少しだけ手直しした。サンプリング周波数の変更が主な変更点である。
再生時に、DMAのバッファの内容が繰り返し出力されて、録音の最後の部分が繰り返し再生されるようなので、録音データを再生後に、空のデータをDMAバッファに書き込んで、無音になるようにしている。
マクロ
マクロの設定によって、サンプリング周波数や出力を切り替える。
- FREQ_KILO
- kHz単位のサンプリング周波数を指定する。可能な数値は、48、96。
- 192も設定可能であるが、正常に動作しない。
- PDM_OUT
- 出力をPDMそのままで行う場合には1、DACで変換する場合には0にする。
また、「PDMインタフェース MEMS マイク SPM0405HD4H を ESP32のESP-IDF で試す」を基にしているので、出力をモノラルにするかステレオにするか、あらかじめ用意してあるデータをunsigned 8bit mono にするか signed 16bit stereo にするかなどを切り替えられるはず(動作確認はしていない)。
プロジェクトファイル
使用したプロジェクトのソースファイル等をGitHubの次のリポジトリに置いた。
https://github.com/kunsen-an/espidf_pdm_sph0641_mic_out
テスト
環境
- Windows 10
- Visual Studio Code
- バージョン: 1.39.2 (user setup)
- PlatformIO
- Home 2.3.3 Core 4.0.3
- フレームワーク
- Espressif 32 (Version 1.11.0)
結果
サンプリング周波数48kHz、96kHz、192kHzを試してみた。可聴音で試したところ48kHz、96kHzは動作しているようである。192kHzは無理のようであった。
ESP32 Technical Reference Manualをよく読んで、レジスタを操作すればできるのかもしれないが、現時点ではライブラリを使って試しただけである。
害虫よけの超音波発生器をマイクのすぐ近くにおいて録音し、それをDACで変換して再生した信号をオシロスコープの簡易FFT機能で見てみた。次のように25kHz付近の信号が観測された。
害虫よけの超音波発生器がない場合は、次のようなスペクトルであったので、少なくとも25kHzくらいまではMEMSマイクで録音できると考える。
コメント
Fritzingファイルがダウンロードできないのですが
fzz がダウンロードできません。
invalid-file-type-fzzと表示されます。
よろしくお願いいたします。
.fzz ファイルをダウンロードできるように設定を変更しました。遅くなって申し訳ありません。
Download Managerが更新されて設定を変更しないとダウンロードできなくなっていたようでした。