arduino dueまたはarduino zeroをusbマイクとして4チャンネルでpcに認識させたいと思っています(サンプリングレート8khz)。適切な評価ボードの候補を知りたいです
結論からお伝えすると、最も開発がスムーズで現実的な候補は 「I2S出力のマイクモジュール(SPH0645LM4HやINMP441など)を4個」 、または 「4ch対応のオーディオコーデック評価ボード( TLV320AIC3254 など)」 を組み合わせる構成です。
以下に、マイコンごとの制約と、最適な評価ボード・マイクモジュールの候補を解説します。
1. マイコン側の選定と制約の確認
4チャンネルのマイク入力を同時に処理するためには、マイコン側のインターフェース(I2SやADC)の仕様が重要になります。
マイコンボード特徴と4chマイク実装へのアプローチ
Arduino Zero( SAMD21搭載) 最もおすすめ(実装が現実的)
・ハードウェアI2S(Inter-IC Sound)を搭載しています。
・I2Sの仕様上、1本のデータ線(SD)で2ch(L/R)を伝送できます。
・SAMD21はマルチチャンネルI2Sに対応しているため、データ線を2本使うことで容易に4chのデジタルマイクを入力可能です。
Arduino Due(SAM3X8E搭載)難易度高(おすすめしません)
・I2S(SSCピン)を搭載していますが、標準で1系統(2ch)のみです。
・内蔵の12bit ADC(アナログ入力)を4ch使って、8kHzで4並列サンプリングする手法も理論上は可能ですが、アナログマイクのノイズ対策やUSBへの音声パケット転送(USBマイク化)のライブラリ自作が必要になり、開発難易度が非常に高くなります。
2. 適切な評価ボード・マイクモジュールの候補
Arduino ZeroまたはDueのアナログ入力と組み合わせるための最適な評価ボード候補です。
① デジタルI2Sマイクモジュール(Arduino Zero向け・最も推奨)
個別のI2Sマイクモジュールを4個用意し、2個ずつペアにして2系統のI2Sデータ線としてマイコンに入力します。8kHzサンプリングであれば帯域的にも非常に余裕があります。
• SPH0645LM4H 搭載 I2Sマイク評価ボード:
• 多くのメーカー(Adafruitなど)からブレークアウトボードが販売されています。
• 高精度なデジタル出力で、ノイズに非常に強いのが特徴です。
• L/Rピンの設定により、1本のデータ線に2個のマイク(左ch/右ch)を配置できます。これを2組作ることで4chを達成できます。
• INMP441 搭載 I2Sマイクモジュール:
• 安価に入手しやすく、Arduinoでの実績が豊富なデジタルマイクです。
• SPH0645同様に、L/Rステレオペアを2組作ることで4chの集音システムを構築できます。
② マルチチャンネル・オーディオコーデック評価ボード(高音質・一括管理向け)
アナログマイクを4本使いたい場合や、マイクの同期精度を極限まで高めたい場合は、4ch対応のA/Dコンバータ(ADC)を搭載したオーディオコーデックの評価ボード(IC単体ではなく基板化されたもの)を使用します。
• テキサス・インスツルメンツ(TI) TLV320AIC3254 EVMなど:
• 4chのアナログ入力を備えたオーディオコーデックの評価ボードです。
• マイクアンプやPGA(ゲイン調整)が内蔵されているため、安価なエレクトレットコンデンサマイク(ECM)を4本直接接続できます。
• ただし、マイコン側へのデータ伝送はTDM(時分割多重)フォーマットなどになるため、Arduino側の受信用ファームウェアの書き換え(レジスタ設定)が必要です。
3. PCに「4ch USBマイク」として認識させる際の注意点
ハードウェア(マイク)からマイコンへ4chの音声を音ズレなく入力できた後、PCにUSBマイクとして認識させる必要があります。
• USBオーディオクラス(UAC 1.0)の利用:
• Arduino ZeroをPCにUSBマイクとして認識させるには、USBデバイスコントローラのファームウェアを「USB Audio Class 1.0 (UAC1)」に対応させる必要があります。
• サンプリングレート「8kHz / 16bit / 4channels」という構成は、USBの帯域的には非常に軽量(約512kbps)であるため、UAC 1.0の規格内で十分に対応可能です。
• ライブラリのカスタマイズ:
• 標準のArduinoライブラリ(MIDIやSerial等)のほか、オープンソースのUSBオーディオライブラリをベースに、記述(Descriptor)を「2chステレオ」から「4chマルチチャンネル」へ書き換えるプログラミングが必要になります。
■次のステップへのご提案
実装をスムーズに進めるために、まずは以下の点について教えていただけますか?
• 使用するマイクは「デジタル(I2S)」と「アナログ(3.5mmミニプラグや生マイク素子)」のどちらを想定していますか?
• すでに Arduino Due または Zero のどちらかをお手元にお持ちでしょうか?
目的の構成(例:マイク同士の距離を離したい、または1枚の基板にまとめたい等)に合わせて、より具体的なピン接続やライブラリの選定についてご案内いたします。
