前回の記事からだいぶ時間が経ってしまいましたが、ESP32でI2Sマイク(正確には PDMマイク + PDM-I2S コンバータ)を扱う方法を紹介していきます。今回は電子回路編です。
(ちなみに前回の記事は↓)
電子部品
前の記事でも触れましたが、主な部品は以下の通り。
全ての部品にピンヘッダが付属しており、ブレッドボードにつけることが可能です。
- ESP32開発ボード(ESP32 devkitc)
- SPH0641LU4H使用 超音波対応マイクモジュールキット
- ADAU7002仕様ステレオPDMーI2S(TDM)コンバータ
回路図
今回はブレッドボードで回路を作ってみることにしました。早速、回路図を見てみましょう。
まず、全体の構成は大体こんな感じです。
[ESP32] <–> [PDM-I2S コンバータ] <–> [PDMマイク]
PDMマイクとI2SコンバータのセットでI2Sマイクを構成して、ESP32と接続していると考えると分かりやすいと思います。
それを踏まえて、各部品の接続を見てみましょう。
電源
電源(VDD)とグランド(GND)はすべて共通でOK。
電源は3.3Vですが、ESP32開発ボードの電源ピン(3.3V)から供給します。また、ボードのマイクロUSBコネクタはファームウェア書き換えなどの通信に使いますが、電源も供給できるのでPCとUSBケーブルでつなげば手軽に使えます。センサの消費電流も少ないので、電源容量も心配ありません。
モジュール間の接続(信号線)
では、各モジュール間の接続について見てみます。
PDMマイク – I2Sコンバータ
マイクの信号線はDAT(データ)とCLK(クロック)の2本でI2C通信と似ています。信号ライン自体はI2Sも似たようなもの(+I2SではオーディオのLR選択ピン)ですが、通信データのフォーマットが異なるため、そのままではI2S用のプログラムで処理できません。そこで、I2SコンバータによりI2S形式に変換します。
PDMマイク | PDM-I2S コンバータ |
ピン3 (CLK) | ピン8 (PDM_CLK) |
ピン4 (DAT) | ピン1 (PDM_DAT) |
ESP32 – I2Sコンバータ
続けて、I2S(モジュール)とESP32の接続も見てみます。
ESP32の入出力ピンは基本的に自由ですが、とりあえず以下のリストのように定義しました。
コンバータのSDATAはデータ用、LRCLKとBCLKはクロック用のピンです。CONFIGは信号ピンとは少し異なり、コンバータの通信形式を指定するピンで、電源かGNDピンをつないで決定します(正確には、電源は抵抗を介するかどうかで変わります。詳細はデータシート参照)。
ESP32 | PDM-I2S コンバータ |
IO33 | ピン2 (SDATA) |
IO32 | ピン7 (LRCLK) |
IO27 | ピン6 (BCLK) |
3.3V | ピン5 (CONFIG): 電源と共通 |
I2Sマイクの場合も、SDATA、LRCLK、BCLKを同様につなげば使えます。I2S出力のマイクであれば、今回のI2Sコンバータは不要なので回路がスッキリします。
これでハードウェアは完成です。次回はいよいよソフトウェアを書き込みます。