インターフォンの製作(その3)

今回からは、音声入力と出力についてです。先ずは入力から。

音声入力

ESP32にはAD変換があるので、これを使用することを前提に考えるとコンデンサマイクをESP32に繋ぎマイクの出力をAD変換する事が考えられます。

コンデンサマイクは、例えば秋月電子で、”エレクトレットコンデンサーマイクロホン(ECM) WM-61A相当品 リードピン付

値段は、1個50円と安いんですが、抵抗とコンデンサを追加する必要があるようです。入力電圧を3.3Vにすれば、マイクの出力をフルレンジでAD変換出来そうです。

更に秋月電子を閲覧していると、”高感度マイクアンプキット”を見つけました。

先程のマイクの出力にアンプを追加したマイクキットです。これってコンデンサマイクのみでは出力が小さく、使用するためにはアンプが必要って言ってるように聞こえます。このキットの価格は500円。価格にもアンプがかかっています。とは言えコンデンサマイクを使用するなら、このキットの様にマイクの出力にアンプが必要と思います。

このキットを使用するとして、出力をAD変換すれば値は取れますが、

  • サンプリングは幾つにするか。
    • 再生した時にはっきり聞こえるサンプリングはいつくか。
    • そのサンプリングでESP32はサンプリング出来のか
  • サンプリングしている間、その他の処理は止まる。
    • 音声の取込みの他、データの送信受信、音声の再生等の処理を行う必要がある。
    • これらの処理が止まると問題を起こす可能性がある。
  • 割り込みを使えば上記は解決出来るかもしれないが、プログラムが面倒
    • 割り込みプログラムの経験が少ない
    • 通信中の割り込みは通信作業に影響しないのか

が直ぐに思い浮かびます。一番大変な点はプログラムの負担です。負担をなるべく少なくしたい。

以前、”WebRadio w/I2S”を製作した時に、”I2S”のアンプを使用した事を思い出しました。Webで調べるとその規格のマイクも有ることが分かりました。”WebRadio w/I2S”はサンプルプログラムを元にインターフェイスを若干変更したのみだったので”I2S”に殆ど触れずにプログラムを書きました。調べて見るとESP32は”I2S”用の関数を準備している事が分かりました。それと”I2S”のマイクを使用すると、入力関係はマイクが処理し最後の結果(デジタル)のみ受け取れば良い事が分かりました。なおかつ、この受け取ったデジタルデータをそのまま、”I2S”のアンプに送れば、その先はアンプが処理してくれる様です。という事で、”I2S”のマイクとアンプを買う事にしました。

I2Sマイクとアンプ

はっきり言って何を基準に選んで良いか分からないのが現状です。取り合えす、

  • ”Arduino”に対応している
  • コンデンサマイクキットが500円だったので、それくらいの価格
  • その製品を使用して例がWebに載っている

を基準に探してみました。それでスイッチサイエンスの、”SPH0645LM4H搭載 I2S MEMSマイクモジュール”と、”MAX98357A搭載 I2Sオーディオモジュール”を選びました。マイクが990円。アンプが643円でした。マイクが若干予算オーバですが、プログラムの負担はかなり少なくなるはずです。各々2個注文しました。マイクとアンプに追加の部品は必要無いのですが、スピーカは当然必要です。スピーカは自前があるので今回はオーダーしていません。

次回は、ESP32へ接続とプログラムに付いて書きます。