IoT向け小型センサ･ノード開発キット「STWIN」が予知保全に使える！？ 　スマホ編（基本）


STマイクロエレクトロニクスのインダストリアルIoT向けワイヤレス･センサ･ノード用開発キット[「STWIN」](https://www.st.com/ja/evaluation-tools/steval-stwinkt1b.html)には、製造設備などの予知保全にも使える可能性のあるファームウェアが用意されています。今回はこのファームウェアをSTWINに入れて、振動状態をモニタしてみます。異常な振動を検知した場合には、アラートを出すことができるので、予知保全に応用できると思います。今回は、振動状態をスマートフォンのアプリでモニタするデモを試してみました。
・ハードウェアの組立て&ファームウェアの書き込み
・専用アプリのインストール（スマートフォン）
・動作確認
の手順で進めていきます。


![01_stwin_overview.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/e27b3734-ad4e-652a-a96f-8fe0254ccbba.jpeg)



# １．ハードウェアの準備
【用意するもの】
- [STWINスタータキット：STEVAL-STWINKT1B](https://www.st.com/ja/evaluation-tools/steval-stwinkt1b.html)
- USBケーブルx2（USB-Micro）
- パソコン　（Windows7/10）

![02_stwin_package_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/deddb06b-51f4-f2cc-f0ba-46c0f50b4d8e.png)





搭載されているセンサ

![03_stwin_sensors.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/74a4a588-16ba-527c-4c64-d5aba77c3771.jpeg)





## STWINのセットアップ
同梱されているリチウムイオン・バッテリをボード裏側のコネクタに接続し、ケース内に入れて4か所ネジ止めします。
M3ネジ（12mm、3x12）


![04_stwin_setup.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/81342314-4712-6341-5360-892780e3dd6f.jpeg)




# ２．ファームウェアの準備
## STM32CubeProgrammerのインストール
（既にインストール済みであればスキップ）
初めてパソコンでSTM32マイコンの開発ボードを使用する場合、 **STM32CubeProgrammer** （旧ツール：ST Link Utility）をインストールしてCOMポート･ドライバなどを入れます。このツールはSTM32マイコンにファームウェア・プログラムを書き込む際に一般的に使いますが、今回は使用しません。後述しますように簡易書き込みで行います。
ダウンロードはこちらから：[STM32CubeProgrammer](https://www.st.com/ja/development-tools/stm32cubeprog.html)
![stweb_stm32cube.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/f7c2e8ae-5dd2-3014-8217-cd42214651fb.jpeg)



## 動作用ファームウェアの入手（FP-IND-PREDMNT1）
デモ用プログラム・ファイルをダウンロードします。
ダウンロードはこちらから：[「FP-IND-PREDMNT1」](https://www.st.com/ja/embedded-software/fp-ind-predmnt1.html)

ダウンロードしたファイルを解凍すると、そのまま統合開発環境用の作業フォルダができあがります。以下のフォルダに今回使用するデモ用プログラム･ファイル（バイナリ・ファイル）が用意されているので、まずはファイルを確認します。
今回はベーシック版のBluetooth®のみ使いますので、“xxx_BLE”フォルダに入ります。また、そのまま書き込みして使えるようにするので、ファイル名に”BL”付き（boot loader版）のものを使用します。*1
ファイル保管場所（例）：
Drive:\_MySTM32Cube3\STM32CubeFunctionPack_PREDMNT1_V2.2.0\Projects\STM32L4R9ZI-STWIN\Demonstrations\Predictive_Maintenance_BLE\Binary
ファイル名：**「STM32L4R9ZI-STWIN_PredictiveMaintenance_BL_v2.2.0.bin」**

![pc_explorer_binfile.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/f2b35781-17c7-a6de-3933-e88467134e7f.jpeg)

FOTA機能（Firmware-Over-The-Air。スマートフォンなどからBluetooth LE経由でファームウェアを書き換える機能）と合わせてデザインされているため、ファームウェア本体（“BL”無しのバイナリ･ファイル）をそのままユーザ先頭アドレス（0x08000000~）に書き込んでも動きません。Bootloaderをまず先頭に配置し、プログラム･エリア（0x08004000~）にファームウェア本体を置くことで動作します。“BL”付きはBootloader部分と合わせたファイル構成となっているのでそのまま動きます。


## STWINにファームウェアを書き込むための準備（パソコンと接続）
STWINスタータ・キットに同梱されている小さいボード（STLINK-B3MINI）とSTWINをケーブルで接続します。~~STWINボード側は単なる2列ヘッダ・ピンなので向きと列に注意してください（逆差し防止がありません）~~。ケーブルの赤側（pin1）をボードコネクタの“J2”表記に合わせます。その後STLINKボードのUSB-Microコネクタ経由でパソコンに接続します。また、ボードへの電源はボード本体のUSB-Microコネクタから供給が必要なので、こちらは適当なUSB電源アダプタを利用します（同じパソコンへの接続でもＯＫ）


![12_connection_FWdownload.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/98db9a1d-785e-72d7-b321-8a99a8e692f7.png)





両USBケーブルの接続が完了したらWindowsエクスプローラで確認します。
ボードを両USBケーブルで接続すると、 **「STLINK_V3M」** といったUSBメモリ・デバイスのような形式で認識されます。
![pc_STLINK_V3M.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/94cb48b1-afdb-222f-5806-efa574ee00cc.jpeg)

## ファームウェアの書き込み
先ほど確認した「STM32L4R9ZI-STWIN_PredictiveMaintenance_BL_vx.x.x.bin」というバイナリ・ファイルを、この「STLINK_V3M」へドラッグ&ドロップ。
これだけでSTM32 マイコンへのファームウェア書き込みは完了です。
「容量が足りなくて書き込めない」といったメッセージが出た場合、STLINK側のUSBコネクタを抜き差ししてみてください。
![pc_savefile_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/08eb7832-e928-38a9-6f4c-4db9b6706eec.jpeg)



終了後、USBケーブルを2本とも外します。STWIN上のJ2コネクタも取り外します。


# ３．アプリのインストール
（ここではAndroidスマートフォンを例に説明しますが、iPhoneでも同じアプリが用意されているので同様の操作で実行できます）
Google Playアプリにて“st ble”などで検索すると**ST BLE Sensor**というアプリが見つかりますので、こちらをインストールしてください。STのセンサ・デモは大抵こちらのアプリに対応しています。センサ情報を無線（Bluetooth® Low Energy）でスマートフォンなどに送り、そのデータをアプリでモニタできるようになっています。
![stble_app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/aeb1163a-4548-7ed6-d141-1a0232949061.jpeg)



# ４．動作確認　「予知保全」（Predictive maintenance）
## 起動について
起動方法は２つあります。
電源オン
- バッテリ接続の場合： PWRスイッチ2秒程度長押し→5～7秒程度待った後、うっすらとLED1が点滅開始（Bluetooth 接続Ready状態）
- USB接続の場合： 5～7秒程度待った後、うっすらとLED1が点滅開始（Bluetooth 接続ready状態）
電源オフ
- バッテリ接続の場合： PWRスイッチ2秒程度長押し（赤LEDが点灯継続）
- USB接続の場合： 常時オン（電源オフ不可）


USBケーブル接続で5V電源が供給されている場合、常時オン状態となります（電源オフ不可）。USBケーブルを外しても電源オン状態は継続します。電源オフしたい場合は、USBケーブルを外した後PWRスイッチを長押しします。
バッテリー駆動の場合、スイッチ長押しでオン/オフできます。

ここではとりあえずUSBケーブル接続して電源オンします。

### 接続
STWINのUSB-MicroコネクタにPC等から接続して電源オンします。次にスマートフォンのST BLE Sensorアプリを立上げてBluetooth接続。接続方法は下図を参考ください。
![stble_start.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/43ceb604-243b-1a2d-6bbc-eff6bc766e83.jpeg)






### FFT確認画面
 **FFTAmplitude** 画面に移動すると、振動状態を周波数ドメインで確認することができます。設定された時間（デフォルト=5秒）データを取得後、Bluetooth LEでデータを転送します。この画面を表示させている間は“データ取得&転送”動作を繰り返します。FFTパラメータに関する設定変更も可能です。下図を参照ください。
![stble_fft.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/5e37e594-ba7a-4558-6e39-a575dc8cf076.jpeg)






### 予知保全画面
左スワイプを何度か繰り返してこの画面へ移動。ファームウェア内に設定された数値を基準に、リアルタイムで以下項目において2段階の警告判定をしています。ステータスとしては、Good/Warning/Alertの3種類があり、Waring用しきい値を超えると”Warning”、さらにAlert用しきい値を超えると“Alert”が表示がされます。
・RMS速度（m/s）
・加速度ピーク（m/s^2）
・周波数サブレンジ毎加速度ピーク（m/s^2）
![stble_predictive.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/bd90cdb0-f59a-8776-ec4a-28ed7409e945.jpeg)




ステータス・アップデートの時間間隔は、FFTAmplitude画面のFFTsettingsにて変更できます。また画面上のStart loggingをタップすることでスマートフォン内（STMicroelectonics>logsフォルダ内）にログファイルを残すことができます。

# ５．しきい値の設定
再度コンパイルが必要ですが、X､Y､Z軸それぞれに“Warning用”と“Alert用”といった2段階のしきい値を設定できます。
RMS速度の例

```c:MotionSP_Threshold.h
static const sTimeDomainThresh_t TDSpeedRMSThresh = 
{/* Value in mm/s */
  5.65f,        //!< SPEED_RMS_THR_WARN_AXIS_X
  5.65f,        //!< SPEED_RMS_THR_WARN_AXIS_Y
  5.65f,        //!< SPEED_RMS_THR_WARN_AXIS_Z
  9.65f,        //!< SPEED_RMS_THR_ALARM_AXIS_X
  9.65f,        //!< SPEED_RMS_THR_ALARM_AXIS_Y
  9.65f,        //!< SPEED_RMS_THR_ALARM_AXIS_Z
}; 
```
他項目の加速度ピーク、周波数サブレンジ毎加速度ピークの設定も同じMotionSP_Threshold.hファイル内にて変更できます。設定変更後、再コンパイル&ビルドして出来上がったバイナリ・ファイル（もしくはHexファイル）をSTM32CubeProgrammerにてSTWINに書き込みした後試してみてください。

いかがでしたでしょうか？
今回使用した開発用ファームウェア・パッケージ「FP-IND-PREDMNT1」の中には、WiFiを使ってインターネットに接続し、クラウド上で振動状態をモニタできるバージョンも入っているようです。次回はこちらを試してみます。

[IoT向け小型センサ･ノード開発キット「STWIN」が予知保全に使える！？ クラウド編](https://qiita.com/ykawano/items/dee1f637902be0a4b4a6)