2022年03月26日

音方位センサ

 ー昨年から断続的に開発してきた音方位センサがやっと形になってきたため、紹介したいと思います。音方位センサは直径4cmの円形基板に4つのMEMSマイクを搭載したセンサで音源の方位を音の時間差から計算してLED及びI2C、UARTで結果を出力する基板です。主な用途として小型の首振りロボットの頭に搭載することで声で頭の向きを変えたり、声でカメラの向きを変更して撮影するといった用途を想定しています。

 基板自体の開発は20年12月に完了していたものの、ファームウェアのアルゴリズムが安定せず、リリースできずにいました。断続的にアルゴリズムの検討、処理の見直しを実施し、最終的にGCC-PHAT(Generalized Cross-Correlation. PHAse Transform)方式である程度、安定して方向検知できるようになりました。GCC-PHATの原理の詳細については多くの論文や資料があるため、こちらでは述べませんが、音の方位を検出する原理として、少し離れたマイクから同時に音をサンプリングすることで、マイク同士の距離の差によって音が到達する時間差から方位を検出します。180度片側の場合、2つのマイクで角度を検出できますが、前方か後方か分かりません。平面の場合、3つ以上あれば360度の方位を検出できます。本センサは1つ冗長ですが、マイクを4つ搭載しています。

ssl_algo.jpg


 まず、ハードウェアの構成として、どのような種類のマイクを使用するかという問題があります。基板の実装密度を高め、より高感度、音の感度が周波数によらずフラットなMEMSマイクを採用しました。MEMSマイクの中でもアナログマイクとデジタルマイク(PDM)のどちらにするかについては、アナログの場合、外付けでアンプが必須で環境によって増幅率が変更な必要な場合があります。デジタルの場合は外付けのアンプが不要な代わりにソフトウェアで処理が必須となります。部品数を減らし、環境にロバストなデジタルMEMSマイクを選定しました。

 微小な音の遅延を測定するため、4つのデジタルMEMSマイクを同時にサンプリングする必要があります。STM32L4シリーズ等ではPDMデジタルMEMSマイクを容易に処理可能なDFSDMを搭載していますが、多くのマイコンはそのような機能を搭載していません。汎用性等を考慮し、今回はSPIを用いて実装しました。4つのMEMSマイクをSPIで同時サンプリングする場合、SPIのクロックを4つで共通にして、SPIの1つをマスタ、残りの3つをSPIスレーブとして実装し、DMA転送することで4つのMEMSマイクの同時サンプリングを実現しています。RAMが十分あり、SPIを5つ搭載しているSTM32F411を選定しました。

sds1.jpg

sds2.jpg


 実際にスマートフォンから水の音を出して方向検知するデモ動画を紹介します。




 GCC-PHATアルゴリズム単体に加えて、誤検知をより防止するため、周波数帯を数kHz前後にフィルタし、音の変化が大きい場合(音のアナログ値の標準偏差)にのみ角度出力することで比較的安定して方向検知できるようになりました。一方で手を叩く音やモノを叩く音のような瞬間的な音の場合、音の反射等の影響が大きくなり、誤検知が多くなります。UARTやI2C通信周りの実装を今後行い、コード、回路図含めて公開後、提供開始したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする