【PowerMeter2020】ProcessingでリアルタイムグラフサンプルPgm<2時間で出来た>

パワーメーター2020のペダリング中のデータモニターをどうするかですが、ここ4年ほど、CPLTのお世話になってきたのですが今回M5StackのUSBシリアルとの相性が悪くて使えないと判断しました。そこで、リアルタイムグラフをどうするかということで最終的にスマホでモニターすることにして、Processingでシリアル受信ログしながら、リアルタイムグラフを描く方法でトライします。

●Processingは、例題をそのままコピペで動くから速い
 Arduinoとほぼ同じ使い勝手です。WEB上で検索したサンプルプログラムをコピペして、ProcessingIDEの新規プログラムに貼り付けて、RUNすれば、それで動作するので、超簡単です。
①マイコン側シリアル送信準備
マイコンから   int,float,float,float の4個のAsciiデータを115200bpsで
USBシリアルでPCへ転送するプログラムを書きます。
私の場合は、mbedオンラインコンパイラでNucleoL432KCで書いてますが
ArduinoでもM5Stackでもなんでもかまいません。

#include “mbed.h”

//————————————
// Hyperterminal configuration
// 9600 bauds, 8-bit data, no parity
//————————————

Serial pc(SERIAL_TX, SERIAL_RX);
Timer t;
DigitalOut myled(LED1);
const double PI=3.141592653589;
int main()
{
pc.baud(115200);
int i = 1;
pc.printf(“Hello World !\n”);
t.start();
while(1) {
i++;
wait_ms(10);
float s=sin(PI/10*i);
float c=cos(PI/10*i);
pc.printf(“%d,%3.3f,%3.3f,%3.3f\n\r”,i%1000,s,c,s+c);
myled = !myled;
}
}

 

 

➁PC側ProcessingIDEの準備
  初めてProcessingを触る方は、こちらのブログからスタートしてください。
2-3日で慣れると思います。ブログ管理者のMSLABO様に質問すれば丁寧に
教えていただけると思います。感謝です。
 すでに、Processingをいじったことがある方は、下記ソースをコピペして
動作します。
③Serial受信リアルタイムグラフ プログラムの解説
こんなに短いプログラムで3Ch受信してグラフにできます。

 

ソースはGISTにおいてあります。Processing3.5.3です。
https://gist.github.com/dj1711572002/16e51e73cb49785e96b5f743af9714c2
シリアルライブラリに関しては、Processingのverで動作しない場合があるので
注意して確認しながら最新のIDEを使ってみてください。
※これからは、GITHUBのGISTソース表示を使っていきます。

●以後
  まずは、CPLTと比較してリアルタイム性がどのくらいあるかを確認して、スマホへの移植をします。

※その後2020年9月からVB.NETでリアルタイムグラフ作りました。
本格的なシステムを作ろうとするとProcessingのUI不足がダメ、
CH間の同期が精度保証が得られない点で、実用性がありません。
実験研究、業務でプログラムするにはVisualStudioに行き着くみたいです。
VBだとマルチタスクを制御できるので、リアルタイムCH間同期を数msec単位で実現できます。
VisualStudio2019でVB.NETのシリアル受信プログラムを作りました。
慣れるのに3週間かかって、ようやくUSB2ポート入力16CHリアルタイムグラフプログラムがつくれました。これはProcessingでは作れないと思います。

【VB.NET】USB2ポート16CHリアルタイムモニター作った<PCの性能次第>

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です