IoT向け小型センサ･ノード開発キット「STWIN」が予知保全に使える！？ 　　クラウド編

STマイクロエレクトロニクスのインダストリアルIoT向けワイヤレス･センサ･ノード用開発キット[「STWIN」](https://www.st.com/ja/evaluation-tools/steval-stwinkt1b.html)には、製造設備などの予知保全にも使える可能性のあるファームウェア（[FP-IND-PREDMNT1](https://www.st.com/ja/embedded-software/fp-ind-predmnt1.html)）が用意されています。前回はベーシックなBluetooth®通信によるスマートフォンでのチェック機能を試しましたが、今回はWiFi経由によるクラウドへのデータ転送と、転送先のクラウド上でどのようにチェックできるかを試してみます。クラウド･サービスはAWS（Amazon Web Service）を利用しています。遠隔地からデバイスの状態をモニタすることができるため、予知保全に応用できると思います。今回は、温湿度センサ、加速度センサ（振動データ）、およびオーディオ･データ用のMEMSマイクを利用します。
STWINを初めて使用する場合、必要なソフトウェアのダウンロードおよび組立て方法についてまずはこちらの記事を参照してみてください。

[IoT向け小型センサ･ノード開発キット「STWIN」が予知保全に使える！？ 　スマホ編（基本）](https://qiita.com/ykawano/items/1550549bb31732470712)

![00_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/0bae29aa-9f21-a0da-ffae-a96ff7bf2f21.png)



以下の手順で進めていきます。
１．ハードウェアの準備
２．ソフトウェアの準備
３．クラウド側のセットアップ
４．WiFi接続とAWSへのcertification
５．クラウド側ダッシュボード設定
６．おまけ・超音波センサ


# 1．ハードウェアの準備

【用意するもの】
- [STWINスタータ・キット：STEVAL-STWINKT1B](https://www.st.com/ja/evaluation-tools/steval-stwinkt1b.html)
- [WiFi拡張ボード：STEVAL-STWINWFV1 ](https://www.st.com/ja/evaluation-tools/steval-stwinwfv1.html)
- USBケーブルx 2（USB-Micro）
- パソコン　（Windows7/10）
- WiFi環境
- ターミナルツール（Tera Termなど）


![10_stwin&WiFi_package.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/7ffe5b75-bbcb-9b76-06de-94cba39817c4.png)


## 組み立て方法
組み立て方法については[IoT向け小型センサ･ノード開発キット「STWIN」が予知保全に使える！？ 　スマホ編（基本）](https://qiita.com/ykawano/items/1550549bb31732470712)を参照してください。
WiFi拡張ボードを図のように取り付けて使用します。


![11_STWIN+WiFi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/19971c46-33f4-75dc-9a7c-d67591dcc4b1.png)



# 2．ソフトウェアの準備
スマホ編でダウンロードしたファイル内に、クラウド動作用ソフトウェアも入ってます。こちらを前回と同じようにパソコンと接続し、ソフトウェアをドラッグ&ドロップで書き込みます。

デモ用プログラム･ファイルのダウンロードはこちら：[FP-IND-PREDMNT1](https://www.st.com/ja/embedded-software/fp-ind-predmnt1.html)

ファイル場所例：
Drive:...\STM32CubeFunctionPack_PREDMNT1_V2.2.0\Projects\STM32L4R9ZI-STWIN\Demonstrations\Predictive_Maintenance_WIFI\AWS\Binary
ファイル名：
**STM32L4R9ZI-STWIN_PredictiveMaintenance_WIFI_vx.x.x.bin**


![12_stwin_stlink.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/f86273f2-9183-8436-2e1e-cec507e6c69e.png)


![13_PC_stwin_FWcopy_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/dcc76918-d2e6-971d-4bb6-da130c75f10f.jpeg)



書き込み完了後、USBケーブルおよびSTLINKボードを取り外します。

# 3．クラウド側のセットアップ
## クラウドページ
ブラウザからSTの[予知保全デモ用プラットフォーム「DSH-PREDMNT」](https://dsh-predmnt.st.com/)にアクセスします。
（STのウェブサイトのログイン画面に移動するので、ログインしてください。）
利用するためには事前にアカウント登録が必要ですが、ソフトウェアをダウンロードする際に必要なのですでに作成済みですね。
既にログイン済みの場合、[こちらのページ](https://www.st.com/ja/embedded-software/dsh-predmnt.html?ecmp=tt9470_gl_link_feb2019&rt=um&id=UM2566#overview)からそのまま移動することもできます。（下図参照）



![30_web_DSH-PREDMNT.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/815a8b77-e8bd-5cc2-55e6-99ddd89f1e24.jpeg)


DSH-PREDMNTは、お試し用として用意されている、AWS IoTで構築された予知保全デモ用のプラットフォームです。（AWS IoTの詳細は[こちら](https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/what-is-aws-iot.html)）
用意したデバイスのデータを吸い上げるためには、このサイトでデバイス登録および必要な認証手続き（certification）を行う必要があります。

最大5台のデバイス登録、5ヵ月のデータ保持が可能です。


## 3．1　デバイスの設定
ログインしてDSH-PREDMNTを開いたら、上部メニューの**CONFIGURATION**、またはホーム画面の **「Configure a device」** をクリックします。



![31_web_DSH-PREDMNT_start_configDevice.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/d60f74e4-299a-570a-89ba-e81ed7c7a3b6.jpeg)



ページ左上の“＋”マークをクリックし、デバイスを新規登録します。
デバイス名（ID）、関連するアセット名（取り付けている場所など）、および位置情報（経度と緯度）を入力します。

Device ID：便宜的に“STWIN_1”と設定（後でも使うので、覚えておくかメモする）
Asset Name：任意の名前を入力。取り付ける対象の装置など。
Fab Name：任意の名前を入力。
Latitude/Longitude：任意の経度・緯度を入力。（後でマップ表示する際に利用）




![32_web_DSH-PREDMNT_config_addDevice.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/16f6ddb0-c90d-6a83-2201-8b73dcca0cde.jpeg)



入力して「ADD」ボタンをクリックすると、認証ファイルのダウンロード･ダイアログが開きます。
また、[IoT endopoint](https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro)情報が表示されるのでこれをメモします。（後ほど使用します） [参考：AWSサーバ認証](https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/server-authentication.html)
“I confirm that....”にチェックを入れ、Configuration fileをダウンロード & 解凍しておきます。（中にcertificationキーファイルが入っています）


![33_web_DSH-PREDMNT_config_addDevice_certificationFile.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/bf7d9fa9-d99b-bad6-008b-bfa7e3dd6bd6.jpeg)


「CLOSE」クリックで完了。
以上でAWSへデータを送信する準備ができたので、次にSTWINをインターネットに接続します。
ブラウザ上のこのページはこのままにしておきます。

# 4．WiFi接続とAWSへのcertification
WiFi経由でインターネットに接続し、AWS認証を行います。
パソコンにSTWINを接続後、ターミナルツール、ここではTera Term（v4.97以上）を起動します。


![40_teraterm_icon.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/58fa184e-5264-e981-d92d-5143bf17bdbe.png)


起動後シリアルポート接続を選択。
プルダウンから該当するCOMポートを選択してOKをクリック。


![41_teraterm_port.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/b7b15629-84df-64d8-a729-069b70350f55.jpeg)


Tera Termセットアップ

下図のようにシリアルポートとターミナルを設定します（Port COM番号は環境依存）。
Setup>Serial port setup
Setup>Terminal setup


![42_teraterm_portsetup.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/46ba4d45-88d9-efac-1bd6-0097e8bf1d27.jpeg)


セット後、STWINのリセットボタンを押して再始動。
最初にWiFiのセットアップから行いますが、2回目以降はスルーできます。（始動後5秒以内にUSERボタンプッシュで再セット可能）
WiFi接続用の以下情報をターミナル上で入力します。

・SSID
・該当するSecurityモードを選択
・パスワード


![43_teraterm_wifisetup.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/6b96cb10-84df-d16d-5519-9bcfea929c7b.jpeg)


WiFi接続が成功すると、次はAWS認証作業です。
ここでさきほど取得してメモしておいたデバイス名（ID）とIoT endpoint情報を使います。

"Enter server address: ~ "のところにIoT endpointを入力します。
→ xxxxxxxxxxx.amazonaws.com
次に"Enter device name"のところにデバイス名（ID）を入力します。
→ 今回は“STWIN_1”



```
- Network Interface started:
   - Device Name : Inventek eS-WiFi.
   - Device ID : ISM43362-M3G-L44-SPI.
   - Device Version : C3.5.2.5.STM.
- Network Interface connected:
   - IP address :  192.168.43.180.

Enter server address: (example: xxx.iot.region.amazonaws.com)
a31pjrd6x4v4ba-ats.iot.eu-west-1.amazonaws.com
read: --->
a31pjrd6x4v4ba-ats.iot.eu-west-1.amazonaws.com
<---

Enter device name: (example: mything1)
STWIN_1
read: --->
STWIN_1
<---
```

「TLS security credentialsをアップデートしました」といったメッセージの後に、root CAの入力待ちになるので、ここでさきほどダウンロードしたファイルフォルダ内のキーを入力します。
手入力は大変なので、このターミナル･ウインドウ内に直接ファイルをドラッグ＆ドロップします。
解凍したフォルダ内には以下のような3つのファイルがあり、順番にドラッグ＆ドロップ入力していきます。

root.ca.pem
xxxxx.cert.pem
xxxxx.private.key

最初にroot.ca.pemファイルをドラッグ&ドロップ入力してOKクリック。

```
Enter your root CA:
```


![45_teraterm_caCopy.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/f069a085-2eae-cb30-3948-68efee936527.jpeg)


ターミナル上に入力されたことを確認し、リターンキーを押して次に進みます。



![46_teraterm_caCopy_return.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/61c39b9a-06c1-103b-5ef8-16a81c585cca.jpeg)


残りの２ファイルも同様に入力します。

```
Enter your device certificate:
```

```
Enter your device key:
```


認証が正常に完了すると自動でデータ送信動作が始まります。



![47_teraterm_complete.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/3e50f5d1-d6c9-1983-0814-1675c323bcd6.jpeg)



これで、AWSへセンサ・データをuploadできるようになりました。
この状態で次に進みます。




# 5　クラウド側ダッシュボード設定
先ほど開いたままにしておいた[DSH-PREDMNT](https://dsh-predmnt.st.com/)に移動します。



## 5-1．ダッシュボード上でデバイス確認
上部メニューの**DASHBOARD**をクリック、またはホーム画面から**「Add your devices for live monitor」**をクリックしてダッシュボードのページに移動します。

![51_0_web_DSH-PREDMNT_start_addDevice.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/87f3e5d0-404a-1032-9b7e-238d52f31338.jpeg)


左上の矢印クリックで、モニタするデバイス（今回作成した“STWIN_1”）を指定します。
STWINが動作中でインターネット接続されていれば、センサ･データが定期的に更新されるのを確認できます。


![51_1_web_DSH-PREDMNT_addDevice_datacapture.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/72825d77-26db-e292-8fef-8aced5d68662.jpeg)


データを取得する期間はCONFIGURATIONのページから設定できます。
デバイスIDの左側のセッティングアイコンをクリック、"Telemetry"を選択します。センサ毎に、一度に集める時間を設定できます。


![51_2_web_DSH-PREDMNT_setting_telemetry.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/ae943879-eb02-c026-1d83-9663e231c569.jpeg)


加速度センサおよびMEMSマイクのFFT演算用期間の初期設定は以下のとおり。
加速度センサ： 30秒
超音波： 2秒




![51_3_web_DSH-PREDMNT_setting_telemetry_graph.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/7d85422e-fffe-1666-c1af-687e0e74743d.jpeg)



## 5-2．ダッシュボード上でのセンサデータをフラグ付きで確認
再び上部メニューの**CONFIGURATION**をクリックしてデバイス･リストを表示します。
左側の設定アイコンをクリックして"cloud"を選択、ダイアログを開きます。
ここでは温度センサを見てみることにして"Temperature"を選択、NORAML、WARNING、ALERT各フラグに対して温度範囲を以下のように設定しました。


![52_0_web_DSH-PREDMNT_setting_cloud_temp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/920a45d5-34bd-373d-18d2-032c9df5a62c.jpeg)


上部メニューの**ASSETS CONDITION MONITORING**、またはホーム画面の **「Monitor your assets and control them」** をクリックします。さきほど設定した各フラグ･スレッショルドに対して、実際のデータ状況をモニタできます。
1つのデバイスに対して1つのセンサのスレッショルドのみ選択・設定できるので、別センサのデータを利用したい場合は現在の設定を変更します。（複数センサの表示はできません）　
ここでは、クラウド上でリアルタイムにモニタするために作成したページ例です。


![52_1_web_DSH-PREDMNT_setting_cloud_temp_assetMonitor.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/628e70bf-829c-b5ba-b2ea-eb08c31def7d.jpeg)


## 5-3．エッジ側でセンサ・データを収集
ここで「エッジ」とは末端のコントローラというような意味ですが、センサで収集したデータをクラウドに送信せず、そのままエッジで記録・ログを取る場合にこちらを使います。スマホ版で紹介したBluetooth経由でのデータ転送と同じ形式です。ここでは複数のセンサ･データを登録でき、"SUBRANGE”というフラグも追加で用意されています。

再び上部メニューの**CONFIGURATION**をクリックしてデバイス･リストを表示します。左側の設定アイコンをクリックして **"Edge"** を選択、設定ダイアログを開きます。
ここで、"Inertial FDM"＋"FFT x-axis"（Inertial = 慣性センサ、ここでは加速度センサのFrequency Domain、要するにFFT）を選択。加速度の大きさに応じて"WARNING"、"ALARM"それぞれの範囲値を入力し、全範囲扱いを"INFO"として設定。
この状態でSTWINを数十秒ブルブル振ってみます。同時に加速度センサの値を確認したいので、"DASHBOARD"のページで値の変化を見ながらやってみてください。




![53_0_web_DSH-PREDMNT_setting_edge_accFFT.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/593513ef-2e41-ec8e-9c93-66e7d11c554b.jpeg)



十分振動状態を与えられたら、上部メニューの**EVENTS**をクリックしてイベントログ･ページを開いてみます。
設定したフラグに応じて"WARNING"、"ALARM"が記録されているのが確認できます。



![53_1_web_DSH-PREDMNT_event.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/e87f8f4c-3712-4e6b-c027-3b31ad4e4019.jpeg)


# 6．おまけ：超音波センサ
STWINには90KHz程度までの音声をセンシングできるアナログ･マイクが搭載されています。
今回テスト用の超音波そのものは用意できませんでしたが、簡単に紹介します。


超音波用のフィルタ
可聴域を省きたいという場合、フィルタ設定も可能です。上部メニューの **CONFIGURATION** をクリックしてデバイス･リストを表示します。左側の設定アイコンをクリックして **"General"** を選択、設定ダイアログを開きます。**ULTRA SOUND** をクリック、FrequencyのMINとMAXそれぞれに周波数を設定するとその設定周波数間のみ表示できます。試しに10KHz～60KHzに設定してみます。下の方でALERTとWARNINGも設定できるようですが、現時点ではこのサイト内では反映されてないようです。この機能が使えるようになれば、周波数帯域別にアラートを設定することができるようになります。



![60_web_DSH-PREDMNT_setting_general_ultraSound_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/5897dc83-6cd5-9140-ec68-58df46225ee5.jpeg)


**DASHBOARD**ページを開いて音声FFTグラフを確認してみます。
以下のように周波数レンジが10KHzから60KHzに変わりました。



![61_web_DSH-PREDMNT_dashboard_soundFFT_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/a040d743-c703-1f5b-15f7-401ba6b76d8e.jpeg)


いかがでしたでしょうか？

超音波は簡単な紹介だったので、次回もう少し詳細に調査をしてみます。WiFi設定は少し面倒でしたが、一度設定してしまえば後は電源オンで自動スタート、データ送信を始めるので2回目以降は楽ですね。
通電中はデータ送信し続けるので、バッテリのみの環境ではソフトを見直す必要がありそうですが、予知保全の最初のトライアルとしては十分テストできそうです。