STM32マイコンのシリアル通信でセンサデータをグラフ化・収集してみる
アプリケーションを作成しているとマイコンに取り込んだセンサデータなどのデジタルデータをオシロスコープのようにリアルタイムでグラフ化しながら収集したいことはよくあります。シリアル通信を使ってPCモニターにデータを表示させながらマイクロソフトExcelに取り込むことができる簡単に扱えるデータロガーを紹介します。
データロガーアプリとは
これまで シリアル通信などでマイコンに取り込んだセンサデータなどはターミナルアプリを使って、PCなどのモニターに出力して表示してきました。これらのデータはリアルタイムで確認できるのですが、数値の表示ですのでデータ変化の様子はつかみにくいです。
特に、動きのあるもの、例えばモータの回転速度や位置など経時変化するデータは数値だけでなく変化の様子などをグラフ表示などで視覚できれば開発途中の解析や、性能のチェック評価などができるようになります。
センサなどから 電気信号を取り込んで、計測・収集したデジタルデータをモニター表示したり、記録したりする装置はデータロガーと呼ばれていて、さまざまなメーカーが製品として提供しています。ここでは簡易的なデータロガーとして、シリアル通信による送信データをリアルタイムでグラフ表示させて、同時にマイクロソフトExcelファイル(csvフォーマット)に保存できるフリーソフトを使うことにします。
私自身も、以前はVB(Visual Basic)やC#などでWindowsアプリとしてシリアル通信で受信したデータをグラフ表示したりする特化したものをプログラミングして自作したものですが、都度特化したもの作成するのも煩わしく、計測目的だけの場合は汎用的なアプリがフリーソフトとして利用できればそれを利用しない手はないです。
おすすめデータロガーフリーアプリ
直感的に簡単に操作できるデータロガーアプリを探したところ、 データテクノ社のリアルタイムグラフソフト CPLT(ダウンロード先ホームページ)がお勧めです。
初期設定として通信および、縦軸、横軸のスケーリングだけをすれば、すぐに使用できるとてもシンプルで実用的なアプリでフリーで提供いただけることに感謝します。
アプリ CPLT Version xxx の圧縮ファイルをダウンロードしてから解凍し、実行ファイルをダブルクリックするとアプリは起動します。
実際のアプリ活用方法
実際にセンサからデータを取り込んでモニターさせるアプリケーションとしてSTM32マイコン Nucleoボードを使った温度計 を使用し、温度およびサーミスタ抵抗値をモニターすることにします。
回路は上図のとおりで、設定(S)でCOMポート はUSBで認識したもの、 通信条件は プログラム内で設定したもの(9800,8bit,パリティなし,ストップビット1)に合わせます。
チャネル数は2とし、1つ目はサーミスタ抵抗値で2つ目は温度に指定します。各チャネルの属性でそれぞれ名前、単位および目盛りあたりのデータ値(スケール)を指定します。横軸には1目盛りあたりのデータ数を指定します。例えば、1プロットを0.5s間隔で送信している場合は1目盛りあたりのデータ数を10とすると1目盛りが5sに相当します。
データロガー用プログラム
温度計アプリプログラム(temp monitor.c)のシリアル送信部のみデータロガー用に修正します。
複数のチャネルを指定するときの注意点として、複数データはカンマ区切りでひとまとめしたものを送ります。数値でも文字列でもアプリで判別するようです。C言語標準関数spirntfを使用する場合はstdio.hをインクルードしておいてください。
これまでのとおり、まずターミナルアプリで送信データを確認してみてください。下図のようにカンマ区切りであればデータ順にCH1、CH2...と認識されます。これで準備は整いましたのでさっそくデータロガーアプリでリアルタイムのグラフ表示を開始してみましょう。
アプリCPLTを起動してからデータモニターは「ファイル」-「ロギング」でデータ収集用ファイル名を指定すると開始します。問題なければCH1,CH2のデータのグラフ表示が始まります。
データプロットの間隔は横軸の設定で調整できますので適当なものに調整してください。グラフ表示されたデータは同時にチャネルごとにExcelファイル(csvフォーマット)に収集されていますので、解析、評価用データとして利用できます。
データロガーが使えるようになると実際のデータがリアルタイムでグラフ化できますのでデータ変化を解析することができるようになります。特に、モーションコントロールでのモータ速度や位置制御のアプリケーションでは実際の動作を確認することが不可欠です。
ホビー用途でも、動作の妥当性を評価するのにデータロガーがあれば電気のアナログ信号をオシロスコープで確認するような感覚でマイコンに取り込んだり処理したデジタル値をモニターに視覚化でき、アプリケーション開発の強力なツールになることでしょう。