IoT向け小型センサ･ノード開発キット「STWIN.box 」を使ってセンサ･データ収集⑤ 超音波FFT MEMS-StudioでFFT解析

前回の記事で、<a href=https://www.st.com/ja/evaluation-tools/steval-stwinbx1.html>STWIN.box</a>と<a href=>FP-SNS-DATALOG2</a>のGUIツールを使って音声データを取り込み、簡易的なグラフ表示まで確認しました。

<strong>前回記事: <a href=https://qiita.com/ykawano/private/74500c464669c8b293bf>IoT向け小型センサ･ノード開発キット「STWIN.box 」を使ってセンサ･データ収集④　超音波FFT</a></strong>

ところで、このFP-SNS-DATALGO2のGUIツールでは、データ取得中にFFTグラフをリアルタイムに確認できますが、一度記録したログデータの再読み込み & 再確認ができません。そこで、記事③でも紹介しました<a href=https://www.st.com/ja/development-tools/mems-studio.html>MEMS-Studio</a>（MEMSセンサ用の開発･評価ツール）の中にデータ分析機能がありますので、これを試してしてみます。

MEMS-Studio

![000_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/9479cf3d-765b-42e8-899f-0eb67881132f.png)



# MEMS-Studioツール

<img width="100" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/876f357a-5114-455d-8081-555dfa562ebb.png">

MEMSセンサを対象とした、開発者向けGUIツールです。<a href=>記事②</a>の「4. hsdatalog_data_export.py データ変換」や、<a href=https://qiita.com/ykawano/private/1d7de1cb5d7e69a5fa23>記事③</a>の「6. hsdatalog_to_unico.py」でも紹介しています。基本的にはMEMSセンサ用のマザーボード：<a href=https://www.st.com/ja/evaluation-tools/steval-mki109d.html>STEVAL-MKI109D</a>とともに使用しますが、センサ･データの解析用ツールとしても利用できます。なおこちらで描画されるグラフについてもhsdatalog_plot.pyを使った時と同じく、PC側でのFFT演算になります。デバイス側（STWIN.box）でFFT演算されたファイル（fft_dpu.csv）については、現時点ではMEMS-Studioではデータ取り込みできません。

以下手順で実施していきます。

1. テスト用音声データをFP-SNS-DATALOG2のGUIのGUIツールで記録 & 保存
2. MEMS-Studioのデータ解析ページ上で、取得したデータをアップロード
3. FFT解析ページで確認

# 1. 準備

## 1-1. ハードウェアとソフトウェアの準備

ハードウェア（STWIN.box）とソフトウェア（FP-SNS-DATALOG2）の準備内容は前回の<a href=https://qiita.com/ykawano/private/74500c464669c8b293bf>記事④</a>と同じになります。加えて、<a href=https://qiita.com/ykawano/private/1d7de1cb5d7e69a5fa23>記事③</a>で紹介したMEMS-Studioと、音声テスト用として、超音波帯域対応のオーディオ機器を用意します。

+ 記事④と同じハードウェアとソフトウェア
+ 60~100KHzあたりまでの音声帯域出力対応のスピーカおよびアンプ

### MEMS-Studio

まだMEMS-Studioがセットアップされていない場合、以下サイトからダウンロードしてPCにインストールしておきます。
ダウンロードはこちら: <a href=https://www.st.com/ja/development-tools/mems-studio.html>MEMS-Studio</a>



## 1-2. 音声データの準備

まず、記事4の1.~3.と同じ手順で、超音波音声データを取り込んでみました。40KHzのsin波をスピーカから出力させた状態で記録します。約5秒間ほどのデータです。次に、変換用コマンドを使ってDATファイルをcsvデータに変換します。後の作業のため（上書き防止のため）、csvファイル名は適当に変更しておくとよいでしょう。

MEMS-Studio用データ変換はこちらのコマンドで実行できます。

コマンド: **python hsdatalog_to_unico.py データフォルダ名 [OPTIONS]**

```(base) D:\...\Utilities\HSDPython_SDK\examples>python hsdatalog_plot.py 20250314_14_35_05 -s all```

変換生成されたcsvファイル（ここでは“xxx_unico.csv”にファイル名変更）

![120_imp23absu_unico.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/61e4120b-c882-4203-980f-5fcc437ef258.png)



csvファイルが用意できたところで次はMEMS-Studioでの操作に移ります。

##### 補足

標準のデータ変換Scriptであるhsdatalog_data_export.py（<a href=https://qiita.com/ykawano/private/74500c464669c8b293bf>記事④</a>の「3-4-データ変換」で解説）で出力されるcsvファイルでも、MEMS-Studioにアップロード可能です。両者でセンサデータの内容自体に違いはなく、hsdatalog_to_unico.pyで生成されるcsvデータの方は **時間データ列が削除されているだけ** です。

![122_csv.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/635b7181-7c58-4acd-83b3-48f405d944c7.png)




注意点としては、hsdatalog_data_export.pyとhsdatalog_to_unico.pyは両方とも同じファイル名のcsvデータを出力しますので（例: imp23absu_mic.csv）、これらのコマンドをどちらも実行すると、最後に実行したコマンドでファイル内容は上書きされてしまいます。両方保存しておきたい場合、事前にファイル名を変更するなどしておいてください。

![124_40KHzdata.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/6f9bf522-04e2-41d6-b162-5061f7530967.png)




# 2. 超音波FFT解析

## 2-1. MEMS-Studio起動 & データのアップロード

### MEMS-Studio起動

csvデータファイルが用意できた段階でMEMS-Studioの操作を始めます。通常、MEMS-StudioはMEMS用マザーボードなどのセンサ用評価ボードとともに使用しますが、ここでは記事③の時と同じくデータ解析機能だけ利用します。

MEMS-Studioのスタート画面:

![210_memsStudio_start.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/444688f3-3967-4d1e-8ec4-f0a601231a06.png)




### データのアップロード

スタートページのConnectは無視して、左側タグから **Data Analysis** のページに移動します。次に、右上の **Browse** をクリックして、マイクデータのcsvファイルをアップロードします。

![212_memsStudio_dataload.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/d10182c4-4eaa-4300-967c-31cb4f411ece.png)




##### 補足

通常のcsv変換データを使った場合（hsdatalog_data_export.pyによる変換）は、時間データもグラフに表示されますので、以下の操作で時間軸を非表示にしてください。

![214_memsStudio_csv.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/5c42168c-96b8-4283-8de1-d7b265953edb.png)




### データトリミング & 拡大

グラフ内をマウスで範囲指定して、トリミングすることもできます。
ただ注意点として、一度トリミングを確定させると元に戻せません。元に戻したい場合は、ファイルを再ロードしてください。

![216_trimming.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/2fdba239-8a10-46e7-82f2-61f7cbf06fa5.png)




表示のみ拡大して見たい場合、下のオレンジ四角の幅を調整してズームできます。

![218_zoom_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/8bba1c76-5d1e-42eb-aaf1-13d9fb6c203a.png)





## 2-2. FFT解析


**Frequency Domain**を選択すると、FFT描画モードページに移動できます。
この時サンプリング周波数（データレート:ODR）を聞かれるので、**“192000”** と入力します。

![220_memsStudio_freq.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/3dab1a00-9679-4aca-a486-821d7ffceb66.png)



### FFT設定

下側のFFTグラフに、40KHzあたりのピークが確認できました。窓関数やFFT lengthなどは右側の設定項目から選択可能です。

![222_memsStudio_FFT1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/335cc48c-77e0-45a1-bbf3-1b40006550f0.png)



### FFT対象範囲の調整

上側には時間軸データ（タイムドメイン）、下側にそのFFT結果が表示されます。時間軸データグラフ内をマウスで範囲指定することで、FFT演算の対象範囲を調整できます。デフォルトでは、記録データ全体に対しての演算結果が表示されます。

![224_memsStudio_FFT2_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/1b74469d-1b01-49c3-8c4e-5928f340dc2a.png)




以上、MEMS-Studioを使って、保存した音声データをFFTチェックする方法を紹介しました。