STマイクロエレクトロニクスのインダストリアルIoT向けワイヤレス・センサ・ノード用開発キット「STWIN.box」(STEVAL-STWINBX1)を使って、センサ・データの収集(データ・ロギング)を試してみます。使用するソフトウェアは、データ収集用として用意されているFunction Pack「FP-SNS-DATALOG2」です。
STWIN.boxは、従来品である「STWIN」(STEVAL-STWINKT1B)の上位版です。STWINと同様に、予知保全や機械学習、産業機器用のデータ・センシングに利用できます。主な変更点としては、傾斜計向けの高精度加速度センサの追加や一部センサの変更の他、Wi-FiやNFCが追加されています。またプラスチックケースで基板全体をカバーすることで防塵対策されています。
操作方法についても、STWIN同様に大きく分けて2つ用意されています。データの保存先はPC内ストレージまたは、STWIN.box本体内のSDカードです。
- PCへUSB経由保存(USBケーブル接続、コマンドやバッチファイルで操作)
- 内蔵SDカードへ保存(スマートフォンとBluetooth LE接続または、本体スイッチによる操作)
FP-SNS-DATALOG2での追加機能: Python GUI
従来のファンクション・パックFP-SNS-DATALOG1では、データ取得やグラフプロット表示の際、主にPythonスクリプトをコマンド入力で操作していました。また、データのリアルタイム・プロット表示はできませんでした。FP-SNS-DATALOG2では、GUIで操作可能な hsdatalog_gui.py が追加され、この画面上で各センサのパラメータ設定やログスタート・停止の操作が行えます。またGUI画面上でグラフプロットのリアルタイム表示が可能です。前回のSTWIN記事の時と同じように今回もUSB接続による方法を実行してみますが、“2”で新しく追加されたGUIを使ってみます。
High Speed Datalog GUIコントロールウインドウ
参考資料
ユーザ・マニュアル: UM3106
- 関連記事
IoT向け小型センサ・ノード開発キット「STWIN 」を使ってセンサ・データ収集①
IoT向け小型センサ・ノード開発キット「STWIN 」を使ってセンサ・データ収集② スタンドアロンで実行
1.ハードウェアの準備
【用意するもの】
- STEVAL-STWINBX1:STWIN.box
- スマートフォン(本記事ではAndroidを使用)
- パソコン(本記事ではWindows PCを使用)
- ST-LINK/V2 または STLINK-V3 + 接続用USBケーブル(Mini / Micro / Type-C)
- キット本体用USB Tyep-Cケーブル
- +ドライバー
キット本体用のUSB Type-Cケーブルですが、最初、手元にあった格安品を使用したところエラーが多発しました。別のUSBケーブル(スマートフォン付属品)に変えたところ問題無かったので、ケーブル品質に左右される可能性があります(USB 1.x接続ですが、仕様と比較すると比較的高速(6Mbit/s)で通信しています)。
1-1.搭載されているセンサおよびマイコン
1-2.STWIN.boxのセットアップ
今回はテスト的に使用するので、カバーケースへの組み付けはしません。基板スペーサなどを利用しても良いでしょう。下側の土台ケースだけ使って仮止めする場合、6mm程度の短めの木ネジを用意してください(同梱されているネジは上側カバーと一緒に組付け用の長さになっているおり、少し長いため)。
実使用時は、同梱されているリチウムイオン・バッテリをボード裏側のコネクタに接続し、上下ケース内に入れて同梱のネジで5ヵ所ネジ止めします。ケース内に取り付けた状態でSDカードの取り外しはできませんので注意してください(再度開封が必要)。なお、本記事内ではSDカードは使用しません。
2.ファームウェアの準備
2-1.STM32CubeProgrammerのインストール
※既にインストール済みであればスキップしてください。
初めてパソコンでSTM32マイコンの開発ボードを使用する場合、 STM32CubeProgrammer (旧ツール:ST Link Utility)をインストールしてCOMポート・ドライバなどを入れます。このツールはSTM32マイコンにファームウェア・プログラムを書き込む際に使う基本ツールです。
ダウンロードはこちらから:STM32CubeProgrammer
2-2.動作用ファームウェアの入手(FP-SNS-DATALOG2)
続いて、デモ用プログラム・ファイルをダウンロードします。
ダウンロードはこちらから:「FP-SNS-DATALOG2」
ダウンロードしたファイルを解凍すると、そのまま統合開発環境用の作業フォルダができあがります。以下のフォルダに今回使用するデモ用プログラム・ファイル(バイナリ・ファイル)が用意されているので、まずはファイルを確認します。
ファイル保管場所(例):Drive:...\STM32CubeFunctionPack_DATALOG2_V1.2.0\Projects\STWIN.box\Applications\DATALOG2\Binary
ファイル名:DATALOG2_Release.bin
Project → STWIN.box用フォルダ下には以下2つのProjectフォルダが用意されていますが、今回はDATALOG2を使います。
- DATALOG2(データロギング用)
- UltrasoundFFT(超音波FFT用)
2-3.STWIN.boxにファームウェアを書き込む
書き込み方法はいくつかあります。
STWIN.box含め、STM32マイコン・ベースの評価キットのファームウェアを書き換えるためには、基本的にST-LINKと呼ばれるデバッグ・ツールが必要です。前モデルのSTWINキットにはSTLINK-V3(STLINK-V3MINI / STLINK-V3MINIE)が同梱されていましたが、STWIN.boxキットには同梱されていません。持っていない場合、別途購入して用意してください。ST-LINKは何種類か存在しますが、「STLINK-V3xxx」を推奨します。
- ① STLINK-V3ツールもしくはNucleo-64ボードを利用して書き込み
- 最も標準的で簡単な方法です。
- ② ST-LINK/V2ツールで書き込み
- STM32CubeProgrammerを利用すれば、ST-LINK/V2でも書き込み可能です。
- ③ STWIN.boxをDFUモード(USBモード)で起動し、USBで直接書き込み
- デバッグ作業は出来ませんが、簡易的な書き込みとして利用できます。ST-LINKツール(上記方法①&②)を使う場合、基板上の専用コネクタに接続する必要があるためケースに入れた状態ではアクセスできません。基板をケースに入れてしまった後でファームウェアを変更したい場合、こちらの方法で書き換え可能です。
- ④ スマートフォンとBluetooth LEで接続後、FOTA(Firmware update Over The Air)で書き込み
- スマートフォンから無線で書き換えることもできますが、ここでは省略します。
ここでは、①STLINK-V3ツールを使った方法をメインに説明しますが、後半に②と③についても簡単に紹介します。
書き込み方法① STLINK-V3 / STM32 Nucleo-64ボード
以下のいずれかを用意してパソコンと接続
- STLINK-V3MINI*(Micro USB Type-B)
- STLINK-V3MINIE(USB Type-C)
- 標準的なSTM32 Nucleo-64ボード(どのSTM32マイコンでも可)
*生産終了のため、新規購入不可
ボード本体のUSB Type-Cコネクタから本体側への電源供給が必要なので、こちらは適当なUSB電源アダプタを利用します(同じパソコンへの接続でもOK)
標準的なSTM32マイコン・ボードであるSTM32 Nucleo-64ボードを持っている場合、キット付属の変換基板を使うことで同じようにアクセスできます。STM32 Nucleo-64ボードのST-LINK部分だけ利用するので、CN2ヘッダ・ピンにある2つのジャンパは外します(SWDライン(TMS, TCK)の切り替え)。
古いSTM32 Nucleo-64ボードでは正常に認識されない可能性があります。その場合はSTM32CubeProgrammerを利用してST-LINKのファームウェアをアップグレードしてみてください(アップグレード時はSTM32 Nucleo-64ボードのみPCと接続)
STM32CubeProgrammer → Firmware upgrade
Debug Mode
*プログラム開発環境で実行する場合の注意事項です。通常使用の場合スキップしてください
STWIN.boxに搭載されているSTM32U5マイコンはDual Bank機能を備えているため、Option Byte > User Configuration > SWAP_BANK設定により、Flashエリア内BANKを切り替えることができます(BANK1 / BANK2)。STM32CubeIDEなどのプログラム開発環境上でDebug Modeから実行する場合には、BANK1にプログラムを置く必要があります。STM32CubeProgrammerツールのSWAP_BANK設定から、チェックが外れているかどうか確認してください(Unchekcedにセット)
ファームウェア書き込み
接続準備が完了したら、先ほど確認した「DATALOG2_Release.bin」というバイナリ・ファイルを、「STLINK_***」へドラッグ & ドロップ。これだけでSTM32 マイコンへのファームウェア書き込みは完了です。
「容量が足りなくて書き込めない」といったメッセージが出た場合、ST-LINK側のUSBコネクタを抜き差ししてみてください。
ST-LINK接続ケーブルを外して、本体のUSBコネクタとPCを接続した状態で再起動します(中央ボタンでリセット)。
緑LEDが約2秒周期で点滅した状態であれば正常です。
書き込みが終了したら2-4.Pythonライブラリモジュールのインストールに進んでください。
書き込み方法② ST-LINK/V2
ST-LINK/V2でも書き込み可能ですが、ドラッグ & ドロップによるファイル書き込みができないため、STM32CubeProgrammerから直接操作します。
以下をパソコンと接続
ST-LINK/V2(Mini USB Type-B)
同梱の変換基板を経由して、ST-LINK/V2と接続します。ボード本体のUSB Type-Cコネクタから本体側への電源供給が必要なので、こちらは適当なUSB電源アダプタを利用します(同じパソコンへの接続でもOK)
STM32CubeProgrammerによるファームウェア書き込み
パソコンへの接続が完了したらSTM32CubeProgrammerを起動し、以下手順で書き込みします。なお、STM32CubeProgrammerはSTM32マイコン用の基本ツールなので、STLINK-V3なども共通で使えます。
さきほど確認したバイナリ・ファイルをオープン
ファイル名:DATALOG2_Release.bin
Downloadボタンで書き込み実行
書き込みが終了したら2-4.Pythonライブラリモジュールのインストールに進んでください。
書き込み方法③ DFUモード
ST-LINKを使用せず、USBから直接書き込む方法です。最初にSTWIN.boxをDFUモードで起動させる必要があります。
パソコンと接続 & DFUモード設定
パソコンとUSBケーブルで接続後、以下操作によりDFUモードで起動させます。
ファームウェア書き込み
次にSTM32CubeProgrammerを起動し、“USB”を選択して“Connect”クリックします。その後の手順は②のST-LINK/V2と同じです。STM32CubeProgrammerによる書き込み方法を参照ください。
書き込み終了したら次に進みます。
2-4.Pythonライブラリ・モジュールのインストール(パソコン)
今回、GUI環境であるhsdatalog_gui.pyを実行しますが、このscriptを使うためには、別途pythonライブラリ・モジュールをパソコンにインストールする必要があります。
インストール用バッチファイルが用意されているので、コマンドプロンプト(ここではAnacondaプロンプト使用)から実行します。社内ネット環境などでproxyサーバが設定されている場合、そのhttp proxyを指定してインストールします。
バッチファイル場所:
D:...\STM32CubeFunctionPack_DATALOG2_V1.2.0\Utilities\HSDPython_SDK
HSDPython_SDK_install.bat
@ECHO OFF
:: This batch file is used to install all Python packages needed to use the HSDPython_SDK and its examples
ECHO HSDPython_SDK Installer
ECHO.
ECHO [NOTE]: If you are using a proxy launch this script passing your proxy string as a parameter.
ECHO -- e.g.: HSDPython_SDK_install.bat http://usr_name:password@proxyserver_name:port#
ECHO.
set proxy_string=%1
:: Section 1: st_pnpl
ECHO ===========================================
ECHO installing st_pnpl...
ECHO ===========================================
if "%proxy_string%"=="" (python -m pip install st_pnpl\dist\st_pnpl-1.1.0-py3-none-any.whl) else (python -m pip install st_pnpl\dist\st_pnpl-1.1.0-py3-none-any.whl --proxy %proxy_string%)
:: Section 2: st_dtdl_gui
ECHO ===========================================
ECHO installing st_dtdl_gui...
ECHO ===========================================
if "%proxy_string%"=="" (python -m pip install st_dtdl_gui\dist\st_dtdl_gui-1.1.0-py3-none-any.whl) else (python -m pip install st_dtdl_gui\dist\st_dtdl_gui-1.1.0-py3-none-any.whl --proxy %proxy_string%)
:: Section 3: st_hsdatalog (GUI version)
ECHO ===========================================
ECHO installing st_hsdatalog (GUI version)...
ECHO ===========================================
if "%proxy_string%"=="" (python -m pip install st_hsdatalog\dist\GUI\st_hsdatalog-2.1.0-py3-none-any.whl) else (python -m pip install st_hsdatalog\dist\GUI\st_hsdatalog-2.1.0-py3-none-any.whl --proxy %proxy_string%)
:: Section 4: asciimatics needed from hsdatalog_cli.py example script
ECHO ===========================================
ECHO installing asciimatics...
ECHO ===========================================
if "%proxy_string%"=="" (python -m pip install asciimatics) else (python -m pip install asciimatics --proxy %proxy_string%)
PAUSE
実行例(http以下は環境依存):
(base) D:\...\Utilities\HSDPython_SDK>hsdpython_sdk_install.bat http://172.29.52.82:80
以上で準備完了です。
Note:
- 標準Pythonインストール環境の場合(= Windowsコマンドプロンプトから実行)、実行前にWindowsの環境変数にpython.exeのPATHが設定されていることを確認してください。
- 標準Pythonのバージョンが3.12以上の場合、モジュールのインストール時にエラーになる可能性があります(FP-SNS-DATALOG2 v1.2.1内バッチファイルでは、Python 3.12.0環境でエラーとなる)。その場合、Python 3.11.xを再インストールしてください。
- FP-SNS-DATALOG2ファームウェアのバージョンを更新する場合、上記のPythonライブラリ・モジュールも同じパッケージ(FP-SNS-DATALOG2内Utilities\HSDPython_SDKフォルダ)に入っているバージョンに合わせるようにしてください。この後実行するGUIが正常動作しない可能性があります。その場合、使用するバージョン内Utilitiesフォルダに入っているバッチファイルを実行して再インストールしてください。(例: V1.2.0 → V1.2.1への変更の際など)
- Anaconda環境の場合、上記ライブラリ・モジュールはこのような場所にインストールされます(いくつかのst_xxxxxxフォルダが作成されます)。
(例)Drive:\ProgramFiles\anaconda3\Lib\site-packages
3.グラフ・プロット用GUIの操作
パソコンにSTWIN.boxを接続した状態で進めます。
3-1.hsdatalog_guiを実行
(2-4.Pythonライブラリ・モジュールのインストールから継続の場合、同じコマンドプロンプトで実行可能です)
Utilities下のHSDPython_SDK\examplesフォルダに移動し、 hsdatalog_gui.py を実行します。
(base) D:\...\Utilities\HSDPython_SDK\examples>python hsdatalog_gui.py
スタート画面が起動します。Connectをクリックするとメイン画面が表示されます。
メイン画面の左側は各センサの設定用です。
Start Logボタンをクリックするとログ開始します。右側はログ取得中リアルタイムにグラフ描画されます。Stop Logボタンをクリックで停止です。
このGUI上から操作する場合、ログ・データはSDカードではなく、PC内ストレージに保存されます。
各センサの下矢印をクリックするとパラメータを確認できます。変更できるパラメータに関してはプルダウン・メニューで選択、もしくは直接数値を入力できます。
取得したデータは同じexampleフォルダ内に自動でフォルダが作成され、その中に保存されます。
3-2.プロット表示
ログ取得終了後、各センサ・データをPythonグラフ描画できます。これはFP-SNS-DATALOG1で用意されているPythonスクリプトと同じ機能です(hsdatalog_plot.py)。FP-SNS-DATALOG2では、この機能をGUIから呼び出せます。Plot the last acquisitionをクリックするとPythonグラフ・ウインドウが新たに開きます。デフォルトのallを選択した状態では全てのセンサ・データのグラフが表示されるため、限定したい場合はComponent Nameからセンサを指定します。
例)IIS3DWBのグラフ・プロット
3-3.その他
センサの選択
GUI起動時、デフォルトでは機械学習コア(MLC)以外の全センサがアクティブになっているので、PC内に保存されるデータ量が大きくなりがちです。特に音声データはサイズが大きくなります。特定のセンサ・データだけ記録したい場合、センサ左側のボタンをクリックすることでオン / オフできます(緑丸表示 = オン)
オートモード
FP-SNS-DATALOG1ではSDカード内のConfigurationファイルに設定することでオートモードを利用できましたが、DATALO2ではGUI上から操作します。
以上、今回はSTWIN.boxを使ってデータ・ロギングをGUIで操作するツールを試してみました。
次の記事:
IoT向け小型センサ・ノード開発キット「STWIN.box 」を使ってセンサデータ収集② python scriptを試す